上位机向下位机写数据:

step1: 当点击 Writ HID 按键后,上位机首先将要写的数据写入 PC 的驱动 buffer 中;

step2: 然后 PC 的驱动再将 buffer 中的数据写入下位机 USB-SIE buffer 中,进而触发下位机的中断;

step3: 下位机的 USB 中断程序将 SIEbuffer 中的数据取出,最后在 firmware 中进行处理。

USB trace 中可以看到如下图所示

会有两个 OUT 包发出,第一个是上位机给驱动 buffer ,第二个是驱动 buffer 给下位机硬件 buffer

上位机 Write HID 的程序如下图:

上位机读取下位机数据:

step1: 下位机将要发送的数据准备好:

step2: 根据自己设定的发送条件进行判断,满足发送条件,将要发送的数据写入下位机自身的 SIE buffer 中;

step3: 上位机发出读取指令,驱动先从下位机 SIE 中取出数据,然后 UI 程序再从驱动中取出数据。

step1

step2

首先将要发送的数据准备好( IN_DATAh 函数中),然后在主函数中判断发送条件,当条件满足时将准备好的数据发送到下位机 SIE buffer 中。

如下图所示:

此时上位机还没有读取数据,但下位机因已满足 firmware 自己编写的发送条件,已将待发送数据送至 SIE buffer 。所以会出现一个 IN 包。

上位机再按下 Read HID 按键后,数据被读至上位机,如下图所示:

此时第二个 IN包表示数据传输至上位机。 当然,实际应用中可能还涉及到更复杂的逻辑和功能,例如使用传感器来触发继电器的开关,或者通过串口通信实现远程控制等。我们需要将单片机的一个GPIO引脚连接到继电器的控制端,以控制继电器的开关状态。在本文中,我们选择使用Arduino开发环境,它是一个基于简化的C/C++编程语言的开发平台,适合初学者使用。通过单片机的编程,我们可以控制继电器的状态,实现各种应用,例如自动化控制、远程控制等。在实际应用中,我们可能需要使用非阻塞的延时方法,例如使用定时器来实现精确的延时控制。接下来,我们编写代码来控制继电器。 write(startByte); enableUsbBufferEvent(new System.EventHandler(myEventCacher)); Thread.Sleep(5); startRead(); stopRead(); write(stopByte) 所有通过USB连接android设备进行通讯的步骤都是大同小异:查询usb设备列表 ——>匹配对应的设备类型(如productid , vendorId)等——>连接usb设备,找到连接通讯的节点——>配置通讯信息,进行通讯。以上是通常的连接usb设备进行通讯的步骤和特点。 注意:此库的支持非常有限。 解决这么多设备和配置的问题几乎是不可能的。 社区可能会提供一些帮助,但您将主要靠自己。 如果您提交问题,请提供相关代码片段以及有关您的操作系统、.NET 版本和设备的详细信息。 欢迎和赞赏拉取请求。 隐藏图书馆 该库使您能够枚举 .NET 中的 Hid 兼容 USB 设备并与之通信。 它提供同步和异步 读写 功能以及插入和移除设备的通知。 这个库适用于 x86 和 x64。 PM> Install-Package hid library 本杰明·韦格曼 jwelch222 托马斯·哈默 朱利安西伯特 乔治·哈恩 里克·范·利斯霍特 保罗·特兰登 尼尔·泰森 布鲁诺·尤奇利 斯布莱克莫尔 马雷克·罗斯科 比尔普雷斯科特 阿南斯·雷切拉 感谢 JetBrains 为R#和dotTrace提供 OSS 许可证! c# 下收发usb消息,usb通信 程序 ,大概流程和这篇博客写的差不多(https://www.cnblogs.com/xidongs/archive/2011/11/28/2266100.html)。 这个github上的库也很好,个人觉得用库更方便,地址(https://github.com/mikeobrien/ Hid Library)。 两者底层都是调用setupapi.dll, hid .d... Hid Library - 强大的 HID 设备访问库 Hid Library 是一个开源的 C# 库,用于在 Windows、Linux 和 macOS 上访问硬件设备,尤其是那些遵循 HID (人类接口设备)协议的设备。通过这个库,开发者可以轻松地与 USB 控制器、游戏手柄、键盘等 HID 设备进行交互。 为什么选择 Hid Library? 跨平台: Hid Library 支持 Windows、...