【问题标题】:Windows 10: HID Communication in C#Windows 10:C# 中的 HID 通信
【发布时间】:2015-08-25 17:54:54
【问题描述】:

我正在尝试在 Windows 10 上使用 C# 通过 USB HID 与 Arduino Leonardo 建立通信。我已经能够枚举和检索 HidDevice 对象,但我无法接收任何数据。

Package.appxmanifest:

<DeviceCapability Name="humaninterfacedevice">
    <Device Id="vidpid:16C0 0486">
      <Function Type="usage:FFAB 0200"/>
    </Device>
</DeviceCapability>

MainPage.xaml.cs

HidInputReport testReport = await device.GetInputReportAsync();

DataReader dataReader = DataReader.FromBuffer(testReport.Data);
byte[] fileContent = new byte[dataReader.UnconsumedBufferLength];
dataReader.ReadBytes(fileContent);

textBlock.Text += System.Text.Encoding.UTF8.GetString(fileContent);

这种阅读方法也是 MSDN 文章使用的方法,但它并没有为我提供任何结果。如果有人了解我可以做些什么不同或做错了什么,将不胜感激!

编辑: 只需在此处添加更多信息,我已经设置了一个事件以在接收到 InputReport 时触发,并且该事件以我从 Arduino 发送消息的设定间隔触发,从而导致我相信这是正确的数据包/消息/数据。一个问题是这个数据总是空的,尽管我已经验证了一个实际的非零消息正在发送。

【问题讨论】:

    标签: c# arduino usb win-universal-app hid


    【解决方案1】:

    我最终设法弄清楚了这一点,并且有几个怪癖。我设法让它工作的方式是使用上述方法,但我的数据不是我最初预期的。找到我的设备后,我附加了一个如下所示的 InputReceived 事件:

        private void ControlDevice_InputReportReceived(HidDevice sender, HidInputReportReceivedEventArgs args)
        {
            HidInputReport inputReport = args.Report;
            IBuffer buffer = inputReport.Data;
            DataReader dr = DataReader.FromBuffer(buffer);
            byte[] bytes = new byte[inputReport.Data.Length];
            dr.ReadBytes(bytes);
    
            String receivedMessage = System.Text.Encoding.ASCII.GetString(bytes);
            handleRead_HID(receivedMessage);
        }
    

    这应该会从您的设备为您提供人类可读的字符串消息。

    截至 2015 年 9 月 22 日的另一点是,在将您的通用应用程序部署到商店时,您的 appxmanifest 文件会覆盖其中的内容,这意味着您部署的应用程序将无法访问您的设备。我已经报告了这个错误,微软已经承认了,应该会在 Visual Studio 2015 的下一次更新中修复。

    编辑:好的视频包含很多细节 - https://channel9.msdn.com/Events/Build/2013/2-924b

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 2015-12-17
      • 2015-05-18
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      相关资源
      最近更新 更多