问题标签 [hid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3683 浏览

.net - 使用 .NET 类与 USB HID 进行通信

有没有使用 .NET 的 USB 开发人员?

我知道与 USB HID 设备通信的一种方法是为 Windows API 创建包装器,如 CreateFile、WriteFile 和 ReadFile。但我想知道是否有人知道您是否可以使用任何.NET 类来做同样的事情。我确信我仍然需要使用一些 API 来进行操作,例如检测总线上的哪些设备并请求解码器,但我正在寻找一种发送/接收报告的 .NET 方法?例如,我在想,我可以使用 Stream 类或 StreamWriter 和 StreamReader,但我不知道。

0 投票
1 回答
2303 浏览

vb6 - 在 Visual Basic 6.0 中使用 HID USB

我正在尝试连接 Gramin usb GPS 以获取 Visual Basic 项目中的坐标,但我不知道如何实现这一点,请有人指出我正确的方向吗?

0 投票
1 回答
1734 浏览

.net - 使用 hid.dll API 从 HID 设备读取制造商字符串时遇到问题

我正在编写一个可以与 HID 设备通信的 .NET 应用程序。我希望能够从设备固件中检索和解析制造商字符串。我知道在 hid.dll 中有一个名为 HidD_GetManufacturerString 的方法。MSDN 对这种方法的描述如下:

我用于此方法的包装器看起来像这样......

我需要知道两件事。首先,我如何知道将 SerialNumber 缓冲区初始化为什么大小?当我执行 GetFeatureReport 之类的操作时,我知道缓冲区的大小,因为我可以使用 HidD_GetAttributes() 从设备属性中检索最大功能报告长度;不幸的是,这个方法没有给我任何关于制造商字符串、序列号字符串、产品名称字符串等长度的信息。

我的第二个问题是,解析返回为字符串的字节数组的正确方法是什么?我尝试使用

但我得到了一个奇怪的结果。对于戴尔制造的产品,我的字符串看起来像这样“D\0e\0l\0l\0\0\0\0\0...”,“\0”继续到我传递的缓冲区的末尾。我如何将其解析为“戴尔”?

0 投票
1 回答
868 浏览

usb - 将传统 Windows 操纵杆轴与 HID 相关联

我对操纵杆轴的描述有点困惑,我希望有人有一个链接或文档可以帮助消除我的困惑。

我不是 Windows 人,所以尝试移植一些传统的 Windows 游戏端口代码让我有点困惑。

我们都知道常见的前三个轴:
X
Y
Z

我的理解是,在游戏端口风格的界面中,其他三个轴是:
R
U
V

但是,查看我的 IOHIDUsageTables (OS X),我看到:

由于三个 R 轴(尽管这似乎并不罕见)和缺少 U 轴,这让我有点困惑。

两个问题:

1)谁能确认传统的U轴是什么轴?我看到一份文件将其描述为“方向舵踏板的轴”,这让我相信它会是 Ry。
2) 谁能更详细地描述 V 和 Vbr 轴的典型用法?我理解描述分别是“矢量”和“相对矢量”,但我很难想象这在物理设备方面意味着什么。

欢迎所有启蒙和文档指针。

0 投票
1 回答
4116 浏览

c++ - 如何获取蓝牙 HID 设备的 MAC 地址?

如何获取作为 HID 设备连接的蓝牙设备的 MAC 地址?

我有设备的句柄

但我找不到如何获取 MAC 地址。

C++;视窗

0 投票
1 回答
931 浏览

linux - 在 Linux 上使用 libudev 阻塞读取的问题

我们正在使用以下例程(在 Linux 上,使用 libudev)从配置为 USB HID 设备的 PIC 微控制器读取数据。仅当按下或释放连接到 PIC 单片机的按钮时才会发送数据。

该例程缺少来自 PIC 控制器的消息,我怀疑这是因为下面的 poll 调用没有正常运行。

在读取第一条消息之前,对 poll 的调用将可靠地阻塞 1 秒。读取第一条消息后,对 poll 的调用立即返回,而不是像应有的那样阻塞 1 秒(1000 毫秒)。

我通过在每次阅读后关闭并重新打开设备来解决这个问题。这使得 poll 行为正确,但我认为关闭和重新打开设备可能是丢失消息的原因。

PicDeviceDescriptor() 函数会检查设备以确保它存在。以下是 PicDeviceDescriptor 函数的相关细节,展示了设备是如何开始打开的。

我确定我做错了什么,但我已经用谷歌搜索了这个问题,似乎找不到任何相关的答案。任何帮助将不胜感激——谢谢。

0 投票
1 回答
4447 浏览

usb - USB HID 协议问题

我正在使用通用 HID 接口在 PIC 18F2550 上实现 USB 。我已经将 HID 配置文件配置设置为输入和输出都有一个 64 字节的消息。

现在它基本上可以工作了。设备向 Windows 注册 OK。我可以在 PC 上的程序中找到它,并且可以向它发送和接收数据。但问题是——从 PC 到 PIC 的消息被截断为 EP0 端点缓冲区的大小。

在我进一步调试之前,我想在这里澄清我对 USB 协议的理解,并检查我是否做对了。

假设 EP0 输入缓冲区为 8 个字节。我的理解是PC端会发送一个8字节的控制包。其中有要遵循的数据的字节长度。然后它将发送一系列 8 字节数据包,PIC 端必须确认每个数据包。

据我了解,PC端通过查看设备描述符中的最大数据包大小字段知道每个数据包可能有多大,并将相应地将消息分成多个数据包。

在我在代码中寻找更多时间之前,任何人都可以确认这基本上是正确的吗?如果 EP0 缓冲区大小为 8 字节,那么 PC 应该知道这一点,因为我上面提到的配置字段并发送多个数据包?

如果我在 PIC 上设置 64 字节的接收缓冲区,那么我会得到 64 字节的消息,这足以满足我的需要,但我不喜欢不理解为什么它不适用于小缓冲区,总有一天我会可能无论如何都需要它们。

欢迎任何建议或信息。

0 投票
8 回答
57715 浏览

c# - 用于 HID (USB) 的 .NET API?

.NET (C#) 中是否有用于使用 USB HID(人机接口)设备的 API?

0 投票
1 回答
1484 浏览

macos - MacOS 虚拟输入设备

如何在代码中创建虚拟 HID 设备?我试图避免编写内核扩展来实现这一点,但这似乎是唯一的方法。我需要能够创建所有类型的虚拟 HID 设备,并让一个在后台运行的应用程序为它们提供事件。有没有办法在用户空间做到这一点,或者我必须冒险进入内核领域?

0 投票
1 回答
2740 浏览

linux - Linux RFID 阅读器 HID 设备与驱动程序不匹配

我有一个 RFID 阅读器(GigaTek PCR330A-00),它可以在 linux/windows 下被识别为(人机接口设备)键盘/USB。

我不想这么说,但它在 Win7 下是一种魅力,但在 Linux 下却不是“真的”。

在类 Debian 发行版(x/k/Ubuntu、Debian、..)或 Gentoo 下,或者......我根本无法让设备工作:设备扫描良好(它有它的 USB 5V,所以它很高兴/哔哔/闪烁)在 dmesg 中发生了一些事情,但没有像预期的那样立即显示 RFID 标签代码(在 win7 下看到)

支持声称它在 RHEL 或 SLED“企业”发行版下是可以的......我必须承认我看到它在 RHEL4 下工作......我试图窃取驱动程序但没有成功让我的读者工作......

因此,我的问题是双重的:1./我如何破解内核以添加对我的设备的支持(只需注册 PID/VID?)?2./“企业”专有发行版有什么不同?我怎样才能重复使用它?

感谢您的任何提示/帮助。

干杯,