I2C窗户IOT找不到DeviceInformation

问题描述 投票:0回答:1

我尝试覆盆子PI 3个运行窗10 IOT建立14376名业内人士和T-REX Manual here使用I2C协议之间进行通信。问题是,它总是崩溃,所以一些调试过程后,我发现,它看起来并不检索DeviceInformation.FinAllAsync(..)后,从ArgumentOutOfRangeException任何和原因。它应该有一些东西我不明白,也许在设备能力或权限,微软教程没有提到here

var settings = new I2cConnectionSettings(0x07);
settings.BusSpeed = I2cBusSpeed.StandardMode;
var aqs = I2cDevice.GetDeviceSelector("I2C1");
var dis = await DeviceInformation.FindAllAsync(aqs);
int a = dis.Count; //is always equal to 0

然后,我有一个qazxsw POI其失败,前面提到的qazxsw POI

我尝试了第二种方法是使用下面的代码:

using (I2cDevice device = await I2cDevice.FromIdAsync(dis[0].Id, settings)){...}

其产生与最后一行ArgumentOutOfRangeException

c# win-universal-app iot i2c windowsiot
1个回答
2
投票

你可能会具有“直接内存映射驱动器”功能。你需要切换回“收件箱驱动程序”。

您的代码应该只是与“收件箱驱动程序”的罚款。然而,随着“直接内存映射驱动程序”,您必须使用“Microsoft.IoT.Lightning”包跟你的物联网设备。

按照此I2CDevice device; var settings = new I2cConnectionSettings(0x07); settings.BusSpeed = I2cBusSpeed.StandardMode; var controller = await Windows.Devices.I2c.I2cController.GetDefaultAsync(); device = controller.GetDevice(settings); 用“闪电”库,您设置您的I 2 C控制器看起来像是下面的样子,

NullReferenceException

请注意,您需要包括

tutorial

在你的包 if (LightningProvider.IsLightningEnabled) { LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider(); } var i2cProvider = LightningI2cProvider.GetI2cProvider(); var i2cControllers = await I2cController.GetControllersAsync(i2cProvider); var i2cController = i2cControllers[0]; var i2cDevice = i2cController.GetDevice(new I2cConnectionSettings(0x07)); 文件,否则你没有访问所有的串行外设。

按照此<iot:Capability Name="lowLevelDevices"/> <DeviceCapability Name="109b86ad-f53d-4b76-aa5f-821e2ddf2141"/> 切换“收件箱驱动程序”和“直接内存映射驱动器”之间的设备驱动程序。

© www.soinside.com 2019 - 2024. All rights reserved.