我的一个数据采集设备,通过USB连接,但硬件部分的信息不太清楚,只知道是HID设备,而且是中断方式传输!首先通过API函数获取了设备的Path为:
\\?\hid#vid_1267&pid_5aa5&mi_00#72fab1c51&0&0000#{4D1E55B2-F16F-11CF-88CB-001111000030}
然后用下面这个CreateFile函数打开
deviceHandle = CreateFile (deviceDetail->DevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, // no SECURITY_ATTRIBUTES structure
OPEN_EXISTING, // No special create flags
0,
NULL); // No template file
正常返回,没有问题,可以返回有效句柄!然后我就开始WriteFile,想写一个数先看看能否成功,如下:
char bufer[4]={0x13,0x00,0x00,0x00};//随便定义了一个64位的数,不知道这样对不对
unsigned long num=64;
BOOL flag = WriteFile(deviceHandle, &bufer, num, &num, NULL);
DWORD err = GetLastError();
结果err为87.
请大家指教,哪里错误了呢?
另外,用bushound抓取一些数据包发现,开始采集数据之后,先是一个DO,然后几个DI.好像就是先发给usb一个数据包,表明中断,然后开始读取数据,隔100ms左右再次DO(发送给usb一个数据包),再读一些数据(DI)
先WriteFile模拟DO过程?然后ReadFile模拟DI过程.我这样的理解正确么?
还有就是,我看到有的帖子中说,还要加什么pipe名称,我这里用加么?硬件部分的信息不太清楚,不知道怎样才能获得Pipe名称!我便直接CreateFile上面那个设备路径了,虽然返回的handle有效,但不知问题出在哪里!
我也碰到相同 的问题。。。。。
等待高手帮忙解决。。。。。