【发布时间】:2016-03-17 23:55:15
【问题描述】:
我正在制作一个 Modbus 库(再次...)。这次它旨在在 Windows 10 IoT Core 上运行。
我遇到了一个有趣的问题。 这段代码:
string aqs = SerialDevice.GetDeviceSelector();
var dis = await DeviceInformation.FindAllAsync(aqs);
var port = await SerialDevice.FromIdAsync(dis[0].Id);
if (port != null) {
port.BaudRate = 9600;
port.DataBits = 8;
port.StopBits = SerialStopBitCount.One;
port.Parity = SerialParity.None;
port.Handshake = SerialHandshake.None;
port.ReadTimeout = TimeSpan.FromMilliseconds(1000);
port.WriteTimeout = TimeSpan.FromMilliseconds(1000);
}
-
在通用应用程序中使用可以完美运行。当然,如果您将以下代码添加到 Package.appxmanifest:
<Capabilities> <DeviceCapability Name="serialcommunication"> <Device Id="any"> <Function Type="name:serialPort" /> </Device> </DeviceCapability> </Capabilities> 在通用类库中使用(文件 -> 新项目 -> ... -> Windows -> 通用 -> VS2015 中的类库(通用 Windows))从 mscorlib.dll 创建空引用异常,它与从通用应用的 Package.appxmanifest 中删除 DeviceCapability 相同。
我怀疑这种行为与没有清单文件的类库有关,因此没有适当的权限。
我可以在类库中使用 Windows.Devices.SerialCommunication 吗?
微软是否让我告诉用户“嘿!我为你做了一个无用的库,你必须自己在任何应用程序中单独实现传输层。 ?
【问题讨论】:
-
它可以在桌面上使用吗?
-
@danvy 同样的事情。我检查了它是否使用了正确的设备,结果发现设备 ID 在两种情况下(类库和应用程序)完全相同。只有一个,唯一的区别是上面的代码是放在类库中还是直接放在应用程序中。感谢您的回复。
-
你读过这个库吗?我也在找 UWP 库!
标签: c# serial-port win-universal-app class-library windows-10-iot-core