HID类设备向USB口读写数据?解决思路
HID类设备向USB口读写数据??
有哪位朋友提供一点资料关于HID类设备向USB口读写数据问题?
------解决方案--------------------
你这个问题问的比较笼统,先简略回答如下:
1,如果是指硬件(固件),那么先要看使用什么USB接口芯片,根据芯片资料,编写固件完成发送/接收数据的功能.如果芯片是采用带USB HID接口的单片机,操作更简单,只要读写特殊的地址,就可以了,具体操作还要看硬件的资料
2,如果指PC编程,在WINDOWS下找到此设备的符号链接名,用CreateFile打开,然后用ReadFile/WriteFile读写就可以了,要用到SetupApi,如果感兴趣可以继续讨论
------解决方案--------------------
给你几个函数,应该够你用了,别嫌弃
DeviceHandle=CreateFile (detailData-> DevicePath,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
HidD_GetPreparsedData (DeviceHandle, &PreparsedData);
HidP_GetCaps (PreparsedData, &Capabilities);
ReadHandle=CreateFile
(detailData-> DevicePath,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
Result = ReadFile
(ReadHandle,
InputReport,
Capabilities.InputReportByteLength,
&NumberOfBytesRead,
(LPOVERLAPPED) &HIDOverlapped);
Result = WriteFile
(DeviceHandle,
OutputReport,
Capabilities.OutputReportByteLength,
&BytesWritten,
NULL);
FILE_FLAG_OVERLAPPED,
NULL);
CloseHandle(DeviceHandle);
CloseHandle(ReadHandle);
------解决方案--------------------
这样阿,估计要写个驱动了,驱动不停的读取设备数据,然后根据我转贴的方法根应用程序通讯
如果直接在用户程序里面不停读设备,估计不是很好吧
呵呵,我也接触不很多,只能稍微给些建议了
有哪位朋友提供一点资料关于HID类设备向USB口读写数据问题?
------解决方案--------------------
你这个问题问的比较笼统,先简略回答如下:
1,如果是指硬件(固件),那么先要看使用什么USB接口芯片,根据芯片资料,编写固件完成发送/接收数据的功能.如果芯片是采用带USB HID接口的单片机,操作更简单,只要读写特殊的地址,就可以了,具体操作还要看硬件的资料
2,如果指PC编程,在WINDOWS下找到此设备的符号链接名,用CreateFile打开,然后用ReadFile/WriteFile读写就可以了,要用到SetupApi,如果感兴趣可以继续讨论
------解决方案--------------------
给你几个函数,应该够你用了,别嫌弃
DeviceHandle=CreateFile (detailData-> DevicePath,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
HidD_GetPreparsedData (DeviceHandle, &PreparsedData);
HidP_GetCaps (PreparsedData, &Capabilities);
ReadHandle=CreateFile
(detailData-> DevicePath,
GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
Result = ReadFile
(ReadHandle,
InputReport,
Capabilities.InputReportByteLength,
&NumberOfBytesRead,
(LPOVERLAPPED) &HIDOverlapped);
Result = WriteFile
(DeviceHandle,
OutputReport,
Capabilities.OutputReportByteLength,
&BytesWritten,
NULL);
FILE_FLAG_OVERLAPPED,
NULL);
CloseHandle(DeviceHandle);
CloseHandle(ReadHandle);
------解决方案--------------------
这样阿,估计要写个驱动了,驱动不停的读取设备数据,然后根据我转贴的方法根应用程序通讯
如果直接在用户程序里面不停读设备,估计不是很好吧
呵呵,我也接触不很多,只能稍微给些建议了