读取USB数据,该如何处理
读取USB数据
可以获得USB设备路径: \\?\usb#vid_068e&pid_00d0#6&37fc7702&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
现在CreateFile以读方式创建成功了,但ReadFile时,接收数据长度(recv)为0,出错代码为1。哪里出错了,要怎样才能读它的数据
char InputReport[100]="0";
DWORD recv;
int Result = ReadFile (hRead, InputReport, 100, &recv, NULL);
------解决方案--------------------
要确认USB设备驱动是否支持ReadFile的读方式, 如果不支持, 就肯定支持DeviceIoControl
------解决方案--------------------
具体怎么读, 是有协议的, 跟读硬盘文件不同.
楼主可以把100换成512或1024试试.
------解决方案--------------------
可以获得USB设备路径: \\?\usb#vid_068e&pid_00d0#6&37fc7702&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed}
现在CreateFile以读方式创建成功了,但ReadFile时,接收数据长度(recv)为0,出错代码为1。哪里出错了,要怎样才能读它的数据
char InputReport[100]="0";
DWORD recv;
int Result = ReadFile (hRead, InputReport, 100, &recv, NULL);
------解决方案--------------------
要确认USB设备驱动是否支持ReadFile的读方式, 如果不支持, 就肯定支持DeviceIoControl
------解决方案--------------------
具体怎么读, 是有协议的, 跟读硬盘文件不同.
楼主可以把100换成512或1024试试.
------解决方案--------------------
- C/C++ code
ULONG nBytes; BOOL bRet; bRet = DevIoCtrl(hDevice, IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR, NULL, 0, descr, sizeof(USB_DEVICE_DESCRIPTOR), &nBytes, NULL); if (bRet) { this->VendorID = descr->idVendor; this->ProductID = descr->idProduct; } else { NtStatus = GetLastError(); }
------解决方案--------------------
bulkControl.pipeNum=512;
这个肯定不对, 管道号, 不是数据长度.
应该是2,4,6这些值吧,有点记不清了
------解决方案--------------------
你自己试, 或者问硬件人员. USB管道是多选一, 谁知道做硬件的选了哪个.
看完USB协议再来写程序