Я разрабатываю решение I2C для Raspberry Pi и Teensy 3.6 Arduino. Pi собирается отправить NTP через I2C на Arduino. Я провел исследование в течение нескольких недель и пытался проверить приведенный ниже код, и получил пару ошибок.
public sealed class StartupTask : IBackgroundTask
{
public async void Run(IBackgroundTaskInstance taskInstance)
{
while(true)
{
Wait(5000);
try
{
await I2C();
}
catch (Exception ex)
{
// eats fast inputs
}
}
}
private async void Wait(int millis)
{
await Task.Delay(millis);
}
private async Task I2C()
{
var settings = new I2cConnectionSettings(1);
settings.BusSpeed = I2cBusSpeed.FastMode;
var controller = await I2cController.GetDefaultAsync();
using (I2cDevice device = controller.GetDevice(settings))
{
byte[] writeBuf = { 0x01, 0x02, 0x03, 0x04 };
device.Write(writeBuf);
}
}
}
Используя консоль отладки, я обнаружил, что метод I2C никогда не проходит через оператор using.
ИСКЛЮЧЕНИЯ:
Исключение: 'System.Runtime.InteropServices.COMException' в i2cTestIOT.winmd
Информация WinRT: было передано неожиданное количество байтов. Ожидаемое: Актуальный:
Возникло исключение: «System.Runtime.InteropServices.COMException» в System.Private.CoreLib.ni.dll
Информация WinRT: было передано неожиданное количество байтов. Ожидаемое: Фактически: '.