上位机向下位机写数据:
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、...