我有一个Xamarin UWP应用程序,它需要在COM端口上收听设备。最终目的是让客户使用Microsoft表面和GPS设备,让他们的员工四处走动并进行GPS读数。
我正在尝试枚举可用端口,以便用户可以选择其GPS设备正在广播的哪一个。我使用的代码如下:
string serialDeviceType = RfcommDeviceService.GetDeviceSelector(RfcommServiceId.SerialPort);
DeviceInformationCollection devices = await DeviceInformation.FindAllAsync(serialDeviceType);
在第一个表面上,我与"设备"集合合作获得了4个成员," com1"," com2"," com3"one_answers"串行端口",我最终能够使所有内容正常工作。但是,我有另一个设备,在此设备上,我只在具有相同代码的"设备"集合中获得"串行端口"。
在两种情况下,我正在听的设备都不同。在第一次,我在XGPS160的第二个中听了Trimble R1,但是我不希望这会影响此呼叫中会有多少个设备信息,这似乎更像是两个表面之间的区别。p>有人知道为什么一个表面会从findallasync调用中返回com1-com3,而另一个则没有?也就是说,如果我想故意创建这个结果,我该怎么做?
谢谢,沃尔特
默认情况下,串行函数驱动程序为串行端口创建符号链接名称,并注册端口的guid_devinterface_comport设备接口。根据定义,仅当串行端口具有与之关联的COM端口设备接口时。
对于插头和播放串行设备,外部命名由设备硬件密钥下的 serialskipexternalnaming 进入值。如果 serialskipexternalnaming 不存在输入值,或者其值为零,则串行会创建COM端口设备接口;否则,串行不会创建COM端口接口。Serial不支持传统COM端口的此输入值,并且始终为Legacy Com端口创建COM端口设备接口。
然后,不同的计算机可能具有串行端口的不同名称。