问题标签 [usb]
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.
windows - Windows PC 作为 USB 从设备来模拟拇指驱动器
我需要创建一个允许 Windows PC (XP/Vista) 模拟拇指驱动器的应用程序。也就是说,当 PC 插入另一个 Windows 系统时,或者在这种情况下,一个允许插入 USB 拇指驱动器的硬件,计算机上的一个文件夹看起来像一个巨大的拇指驱动器。关于一个人会从哪里开始调查这个的任何想法?
更新(更具体的描述): 我需要将我的 PC 连接到支持扫描到插入设备正面的 USB 拇指驱动器的较新的多功能设备之一。这些设备不支持通过通常用于连接 PC 的背面 USB 连接器的 WIA 或 TWAIN。
.net - 开发具有集成硬件的专用计算机
我们正在考虑为集成计算机实施读卡器程序。该计算机是一个带有嵌入式计算机的触摸屏,运行 Windows XP,以及集成在屏幕中的读卡器。
阅读器是一个 USB 设备,但不幸的是,它与这个屏幕/计算机集成得如此紧密,以至于我无法将其分离并连接到其他设备。
启动时,SDK 很痛苦,因为它不存在。SDK 包含一个 VB(不是 .NET)应用程序,它通过 HID 子系统通过一些 windows api 函数与 USB 设备通信,由于我们需要它成为 .NET 应用程序的一部分,我们需要使用 P 重新实现它/调用。
因此,测试这将是一件痛苦的事情,因为我可能不得不不断地将新文件复制到机器上,并且有大量的日志记录来找出问题所在。
还是我?我还可以做些什么?在那台机器上运行 Visual Studio 将比仅仅复制程序和使用日志记录更痛苦,所以这不是一个选项,但还有什么?我可以从我自己的机器上远程调试吗?该机器具有网络功能,因此我可以通过网络很好地访问它。
任何人都可以提供任何提示或建议?
c++ - 对所有 USB 设备使用 RegisterDeviceNotification()
我目前有一些代码可以在 Windows 服务(用 C++ 编写)中设置连接的 USB HID 设备的通知。代码如下:
然后通过 SERVICE_CONTROL_DEVICEEVENT 事件接收通知。(请记住,这是一项服务,因此没有 WM_DEVICECHANGE)。
我以为我可以在 RegisterDeviceNotification() 调用中指定 DEV_BROADCAST_DEVICEINTERFACE 标志,这样它就会覆盖 dbcc_classguid 并获取所有设备,但事实证明,Windows 2000 不支持该标志,这对我来说是个大问题。另外,我猜这将返回的不仅仅是 USB 设备。
我应该如何修改它以获取所有USB 设备,而不仅仅是 USB HID?是否应该像提供不同的 GUID 一样简单?是否有所有 USB 的 GUID?
c - 在 C 中使用 USB (Windows)
这是几个问题汇编成一篇文章。
1) 判断 USB 大容量存储设备是否已插入的最佳方法是什么。
2) 将数据写入 USB 驱动器的最佳方法是什么
3)你能像对待普通内存一样对待 USB 驱动器上的内存吗?(我可以像 malloc 一样使用,或者直接用值 / 写两个它,或者将它归零吗?)
windows - Windows下获取USB键盘的序列号
许多 USB 设备包含一个唯一的序列号(实际上是一个 Unicode 字符串),主机可以将其与 16 位供应商和产品 ID 号结合使用,以唯一地标识设备。
我试图弄清楚如何编写一个能够显示连接到系统的所有 USB 人机接口设备列表的 Windows 应用程序。该列表将为每个 HID 保留一行,包括系统键盘。列表中有供应商 ID、产品 ID 和序列号的列。
我可以通过SetupDiGetClassDevs
使用返回的 GUID调用HidD_GetHidGuid
并通过重复调用SetupDiEnumDeviceInterfaces
. 然后,我可以调用SetupDiGetDeviceInterfaceDetail
以获取每个设备的路径,我可以使用CreateFile
. 从那里我可以通过调用HidD_GetAttributes
.
我无法弄清楚如何检索序列号字符串。当我搜索此问题的解决方案时,我发现了很多有关如何获取 USB 大容量存储设备序列号的信息,但似乎没有任何信息适用于任何其他类型的 USB 设备。我很高兴发现检索序列号字符串的通用方法或 HID 特定方法。
我有一种感觉,Win32 端口libusb
可以轻松管理这个问题,但不幸的是,我需要一个仅依赖于 Windows 附带的库的解决方案,例如包含上述功能的 DLLsetupapi
和DLL。hid
任何建议将不胜感激!
windows - 在WinXP中查找哪个驱动器对应哪个USB大容量存储设备
我有几个 USB 驱动器连接到 WinXP SP3 计算机,我需要以编程方式区分它们 -我需要找到哪个驱动器号对应于哪个设备(在这种情况下,一个设备〜一个卷)。我可以使用 获取他们的卷 ID 和驱动器mountvol
号,如下所示:
此外,使用devcon或设备管理器,我可以看到设备 ID:
但是,我还没有找到一种方法来链接设备 ID 和卷 ID/字母,就像“安全删除硬件”对话框一样(因此我认为这是可能的):
(来源:piskvor.org)
如您所见,这些设备与我在 devcon 中看到的设备相同,并且与 mountvol 看到的卷相同;但到目前为止,我还没有找到它们之间的联系。
我发现了一些相关的 问题,但这些问题似乎使用“你首先找到的是你的 USB 设备”的方法,这在我的情况下不是很有用,因为会有几个类似的设备(相同的供应商,通常是相同的产品类型) 连接的。
编辑:
@MSalters的回答看起来很有希望:在 XP 上,HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices
有REG_BINARY
值\DosDevices\x:
(x
[AZ] 在哪里);注释是正确设备的 (UTF-16) 名称(例如
\DosDevices\A:
= " \??\STORAGE#RemovableMedia#7&190c24e5&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\"
,对应于
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
上面在设备列表中看到的)。
会看看这是否是要走的路。
linux - 如何在 Linux 中识别 USB 设备的芯片组?
我希望能够识别特定 USB 设备正在使用的芯片组。我知道 lsusb(现在是 /proc/bus/usb/devices),但它们提供的信息不如 lspci。
这是我如何使用 lsusb 的示例:
/blockquote>...和 /proc/bus/usb/devices (感谢对此线程的评论):
/blockquote>虽然我可以看到我正在寻找正确的 USB 设备(Belkin USB 801.11n 和 Ralink 芯片组),但我仍然无法确定确切的芯片组版本。“0x805c”与我期望的芯片组编号不匹配( 2500 - 2900 )。
我在想也许甚至不可能通过 USB 总线查询这些信息?
提前感谢您的帮助。
c# - 以编程方式连接和断开 USB 设备
我需要以编程方式连接和断开 USB 设备(例如闪存驱动器),而无需拔下和重新插入设备。
有没有办法在 C# Windows 应用程序中做到这一点?
java - SWT:收到系统设备更改通知(USB 设备连接/断开)
我正在编写一个 SWT 应用程序,它需要放在系统托盘中,并在用户连接某些 USB 设备时自动弹出(该应用程序用作其控制面板)。
在本机环境(本例中为 win32,但我最终应该独立于平台)中执行此操作的方法是监听 WM_DEVICECHANGE 事件,然后检查我的设备是否已断开连接。
谷歌搜索这个主题,看起来 SWT 实际上并没有处理这种类型的事件。有谁知道如何实现这一目标?我的后备解决方案是每 n 秒对 USB 端口进行采样,寻找设备,但就我而言,这是一个不可行的解决方案......
谢谢和欢呼
晒
c# - 连接 USB 设备时如何接收通知?
我正在编写一个程序来监视特定设备。该设备可能会或可能不会始终连接,并且在连接时可以连接到多个不同端口中的任何一个;我希望我的程序能够优雅地处理这个问题。
有没有办法在连接特定 USB 设备时接收通知,并从那里确定它连接到哪个端口?