1

我将条形码扫描仪连接到 USB 端口。我需要将模式从 HID 键盘更改为串行端口仿真(系统知道阅读器将其视为常规 HID 设备,而不是 HID 系统键盘)以将数据从扫描仪直接获取到我的应用程序中。到目前为止,一切都很好。

问题是我需要知道 VID 和 PID 号码才能找到我的设备。我知道这些值,但我想按名称查找我的设备。

我找到了一个名为 SimpleHIDWrite 的程序:

http://www.lvr.com/hidpage.htm

当我启动程序时,我的设备有一个很好的描述“符号条码扫描仪”。

我试图自己达到这个名字 - 我使用了结构:

HIDD_ATTRIBUTES
HIDP_CAPS
SP_DEVICE_INTERFACE_DATA
SP_DEVICE_INTERFACE_DETAIL_DATA
SP_DEVINFO_DATA

但是,我在结构中找不到允许我访问此描述的字段。

不幸的是,我找不到 SimpleHIDWrite 源代码来学习如何做到这一点。

你能帮助我吗?

4

3 回答 3

2

我在论坛上找到了我的问题的答案lvr.com

HID 设备 (USB) 的详细说明 (lvr.com/forums)

于 2010-09-23T08:24:53.410 回答
2

在该页面的同一部分,有一个带有源代码的 HidTest 程序。该程序显然使用了通过名为“Delphi 的 HID 控制器组件套件”的链接找到的 HID 控制器代码。也许这可以给你你正在寻找的东西?(至少如果你能从所有 Delphi 代码中挑选出相关的部分的话。)


我最近一直在研究确切的东西,但我还没有时间实际尝试任何一种。所以下面的内容有点投机。

我相信您需要做的是打开与设备的连接作为 USB 设备。HID 级别的函数似乎没有给出您想要的描述。是关于从 USB 设备获取 VendorID 和 ProductID 的不同 SO 问题。我认为您可以使用非常相似的技术来阅读USB_DEVICE_DESCRIPTOR并访问该iProduct字段,我认为这应该是您想要的描述。

我遇到了一个名为 USBView 的程序,它显然与 USB 设备进行这种通信(除其他外)。我在这里找到了它的编译版本。但是,该源据称包含在 Windows 驱动程序开发工具包中。那可能是 C 或 C++ 源代码,但我还没有时间从 Microsoft 下载 DDK 并确认实际存在什么。


编辑:

我有时间深入研究这个。您发现的内容HidD_GetProductString也很有帮助。我还找到了来自英特尔的示例页面。那里的“Display HID”程序显示了一种使用该功能的方法。

根据该函数的文档和该示例,我得到的印象是它正在iProduct从设备中读取相同的内容,显然是从 HID 级别而不是 USB 级别进行的。或类似的东西。我所知道的是到目前为止它在我自己的测试程序中工作。

于 2010-09-21T14:15:20.297 回答
0

嗯... iProduct 的问题在于,首先我必须向设备发送此字符串描述设备的请求,然后接收数据。条形码扫描仪是只读的,因此我无法将数据(请求)发送到设备。

我发现在 SimpleHID 中有我的扫描仪“符号栏 ocde 扫描仪”的描述,它与我在控制面板(设备和打印机)中看到的名称完全相同。所以我的问题是如何获得这个设备名称?

于 2010-09-22T08:49:12.617 回答