我试图通过循环DriveInfo.GetDrives()结果来识别驱动器类型.
但是对于USB和软盘我都得到了相同的DriveType.Removable价值.
我该如何区分它们?
我们制造和销售我们的用户有时希望通过多个USB集线器大量连接到他们的计算机的设备.它是一种USB复合设备,具有人机界面(HID)和大容量存储(MSD)接口.Windows会自动挂载每个设备的文件系统,直到"Z:"处的字母用完为止.
我可以使用PnP配置管理器和设备安装功能的组合来遍历设备树并获取HID和USBSTOR接口的设备实例标识符.通过USB存储设备路径,我也可以获得磁盘编号(即\\.\PhysicalDrive1).
下一步是在我们与设备通信时通过循环输出驱动器号来根据需要安装这些磁盘,或者更好的是,将它们安装在C:驱动器上的临时目录中.我在尝试使用困难DefineDosDevice此任务并不能取得进展与SetVolumeMountPoint因为设备不具有卷GUID,直到它被安装.这提出了鸡和蛋的问题.
如果只有我们的客户使用unix!
使用 atmega8 芯片和 V-USB 库,我做了一个小桥接器将我的 NES 游戏手柄连接到 USB。起初我使用了一个例子作为我的隐藏描述符,所以......当我将它设置为与这个 HID 报告描述符握手时,我在 Windows 中正确识别了我的设备
PROGMEM const char usbHidReportDescriptor[100] = {
0x05, 0x01, // USAGE_PAGE (Generic Desktop)
0x15, 0x00, // LOGICAL_MINIMUM (0)
0x09, 0x04, // USAGE (Joystick)
0xa1, 0x01, // COLLECTION (Application)
0x05, 0x02, // USAGE_PAGE (Simulation Controls)
0x09, 0xbb, // USAGE (Throttle)
0x15, 0x81, // LOGICAL_MINIMUM (-127)
0x25, 0x7f, // LOGICAL_MAXIMUM (127)
0x75, 0x08, // REPORT_SIZE (8)
0x95, 0x01, // REPORT_COUNT (1)
0x81, 0x02, // INPUT (Data,Var,Abs)
0x05, 0x01, // USAGE_PAGE (Generic …Run Code Online (Sandbox Code Playgroud) 我试图从Winusb设备获取供应商和产品ID,并在尝试使用winusb_GetDesicriptor()时遇到accessviolationexception,并且无法弄清楚为什么我会得到该异常.
这是我的声明:
internal devInfo myDevInfo = new devInfo();
USB_INTERFACE_DESCRIPTOR ifaceDescriptor;
USB_DEVICE_DESCRIPTOR deviceDescriptor;
internal struct USB_INTERFACE_DESCRIPTOR
{
internal Byte bLength;
internal Byte bDescriptorType;
internal Byte bInterfaceNumber;
internal Byte bAlternateSetting;
internal Byte bNumEndpoints;
internal Byte bInterfaceClass;
internal Byte bInterfaceSubClass;
internal Byte bInterfaceProtocol;
internal Byte iInterface;
}
[StructLayout(LayoutKind.Explicit, Size = 18, CharSet = CharSet.Auto)]
internal struct USB_DEVICE_DESCRIPTOR
{
[FieldOffset(0)]internal byte bLength;
[FieldOffset(1)]internal byte bDescriptorType;
[FieldOffset(2)]internal ushort bcdUSB;
[FieldOffset(4)]internal byte bDeviceClass;
[FieldOffset(5)]internal byte bDeviceSubClass;
[FieldOffset(6)]internal byte bDeviceProtocol;
[FieldOffset(7)]internal byte bMaxPacketSize0;
[FieldOffset(8)]internal ushort idVendor;
[FieldOffset(10)]internal …Run Code Online (Sandbox Code Playgroud) 问题是:我有一个 USB 扫描仪 (HP),想通过 Web 应用程序获取图像。很久以前用java小程序解决了,但现在chrome不再支持它们了。
我已经看到了潜在的解决方案。“最酷”的是 Dynamsoft,但我买不起 NPAPI 或 ActiveX。我见过 html5 websocket 技术,通信有效,但似乎没有办法将它与扫描仪连接起来。
更新
我设法正确发送数据。对于遇到同样问题的人,我使用了以下代码:
data=[0x00, 0x04, 0x04, 0xFF, 0xFF, 0xFF, 0x00, 0x00]
result=dev.ctrl_transfer(0x21, 0x9, wValue=0x200, wIndex=0x00, data_or_wLength=data)
Run Code Online (Sandbox Code Playgroud)
(这是基于此处发布的答案:链接)
但我不明白,为什么我必须使用
bmRequestType=0x21
bRequest=0x9
wValue=0x200
Run Code Online (Sandbox Code Playgroud)
解释是什么?
初始请求:
我拼命地尝试使用 PyUSB 向 HID 设备发送一个简单的报告。
使用“SimpleHIDwrite”我确认设备按预期工作。我想发送这个数据:
报告编号:00
数据:[00, 04, 04, FF, FF, FF, 00, 00]
我对 Python 和 USB 很陌生,我无法弄清楚如何使用 dev.ctrl_transfer 或 dev.write 来做到这一点。
此外,还有一些关于将数据发送到 HID 设备的帖子,但我不知道如何解决我的问题。我该如何解决?
以下是更多详细信息:
# Based on https://github.com/walac/pyusb/blob/master/docs/tutorial.rst
import usb.core
import usb.util
# Find our device
# dev = usb.core.find(idVendor=0xfffe, idProduct=0x0001)
dev = usb.core.find(idVendor=0x1781, idProduct=0x8c0)
# Was it found? …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在 Android 电视机顶盒上开发 Android 视频会议应用程序。众所周知,Android 电视盒没有摄像头,因此我尝试使用 USB 网络摄像头,但操作系统无法识别 USB 摄像头并且无法从中检索视频源。
有没有办法确保我的 Android 应用程序能够从 USB 摄像头接收视频源?
谢谢你,如果我写的这个问题不恰当,我很抱歉,这是我第一次使用 Stackoverflow。
我正在使用 stm32L151 通过 USB CDC 与 PC 通信。我使用 stm32 HAL 库来创建我的项目。我发现 USB 以 1ms 的间隔发送数据,每次发送 64 个字节。那么,USB CDC 的最大速度是 64kbyte/s 吗?而且这个速度远低于USB全速12Mbit/s。我怎样才能达到这个速度?或者至少是这个速度的一小部分?谢谢
USB 标准提到在某些情况下编写“零长度”数据包。
谁能解释一下 USB 术语中“零长度”数据包的含义是什么?
什么是“短包”?(好像“短包”和“零长包”是一起提到的)
我正在尝试在 Windows 系统上唯一地识别 USB 设备。由于序列号是可选的(并且在大多数设备上为空),我正在查看实例 ID。的领域,就像USB\VID_03F0&PID_094A\6&24b73976&0&2。
我已经知道如果我将同一设备插入不同的端口,这个 ID 会发生变化,但这对我来说没问题。问题是:如果我使用相同的设备(在我的示例中为鼠标)并将其插入,它会获得相同还是不同的实例 ID?
我做了一些研究,似乎没有人完全知道 VID 和 PID 背后的部分是什么。它们似乎可以识别端口和/或集线器,但是如果我将不同的设备插入同一个插槽,我不仅会看到不同的 VID 和 PID,还会看到不同的垃圾。例如,这是插入同一端口的键盘:USB\VID_046D&PID_C328&MI_00\7&3f9ff46&0&0000
Microsoft 文档和此处的相关问题均未回答此问题。
如果我有两个相似的鼠标(或键盘,或其他),即相同的制造商和型号,如果我将它们插入相同的端口,它们会获得相同或不同的实例 ID?
我是否有机会唯一标识特定设备(不仅仅是型号)?