none
win10 uwp 串口开发问题 RRS feed

  • 问题

  • 我的代码参阅自官方msdn,代码如下:

    串口设备枚举,能够正确枚举到我PC电脑的所有串口设备:

            string aqs = SerialDevice.GetDeviceSelector();

            var deviceArr = await DeviceInformation.FindAllAsync(aqs);

            for(int i=0;i<deviceArr.count;i++)

           {xxxxxxxx};

    取得串口实例代码,取得失败:

        DeviceInformation entry = (DeviceInformation)deviceArr[i];

        SerialDevice device = await SerialDevice .FromIdAsync(entry.Id);

    上面的device始终为null,不知道为什么,希望有人给点建议或者指导一下我的问题出在哪里,谢谢了。

    2015年9月16日 8:31

答案

  • http://www.codeproject.com/Articles/458550/Device-enumeration-in-Windows

    The device-enumeration APIs will return an enormous number of results. There will be lots of results from months-old devices that e.g., a friend might have  connected to your home Wi-Fi. You have to look in a DeviceContainer for its  System.Devices.Connected property to see whether it's still connected.

    Windows 8 has the notion of "pairing". In some cases you have to go to the  Windows 8 control panel and Add Device. This will "pair" the device  to your machine. The APIs in this article will only enumerate devices which have been paired to your machine.

    不知道是不是这个原因?

    2015年9月21日 6:48
    版主

全部回复

  • 是不是权限问题

    新浪微博http://weibo.com/xianglitian,欢迎围观

    2015年9月19日 3:17
    版主
  • 什么权限,你说的是加到Package.appxmanifest中的内容吗?

    但是我在配置文件Package.appxmanifest中添加了下面的内容的:

     <DeviceCapability Name="serialcommunication">
          <Device Id="any">
            <Function Type="name:serialPort" />
          </Device>
        </DeviceCapability>
    2015年9月21日 2:19
  • http://www.codeproject.com/Articles/458550/Device-enumeration-in-Windows

    The device-enumeration APIs will return an enormous number of results. There will be lots of results from months-old devices that e.g., a friend might have  connected to your home Wi-Fi. You have to look in a DeviceContainer for its  System.Devices.Connected property to see whether it's still connected.

    Windows 8 has the notion of "pairing". In some cases you have to go to the  Windows 8 control panel and Add Device. This will "pair" the device  to your machine. The APIs in this article will only enumerate devices which have been paired to your machine.

    不知道是不是这个原因?

    2015年9月21日 6:48
    版主
  • 您说的System.Devices.Connected类存在于win8通用测试程序,在win10 UWP下不存在这样一个类成员。

    而且我所有的串口能够正确枚举(一个标准串口,两个PCI转串口,一个USB转串口),只是枚举出来的所有串口都取不到对象。

    代码编写我是严格按照MSDN上的教程做的:

    https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.devices.serialcommunication.serialdevice.aspx


    2015年9月22日 3:10
  • 近期调试串口遇到这个问题,为了大家避免这个问题,给出我的答案:

    string aqs = SerialDevice.GetDeviceSelector();

    var deviceArr = await DeviceInformation.FindAllAsync(aqs);

    在serialdevice.dispose执行前,只能执行一次,否则在第二次执行时出现null的情况,这个问题在另外的一个地方我曾经看到过

    • 已建议为答案 何孔飞 2017年1月11日 13:15
    2017年1月11日 13:15