阅读:2275回复:8
hid应用程序开发
有2个问题:
1。我开发一个HID的应用程序,用鼠标作为USB设备进行试验。得到鼠标的路径后,用CREATFILE打开设备获得鼠标的句柄。 当设置成下面的参数时,可以得到鼠标的句柄,但不能用READFILE对鼠标进行读操作: HANDLE hCom = CreateFile((LPCSTR)detailData->DevicePath, 0, FILE_SHARE_READ|FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES), NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); 我把参数改为: HANDLE hCom = CreateFile((LPCSTR)detailData->DevicePath, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES), NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); 结果不能打开鼠标。 2。对于采用中断传输的设备,应用程序怎么实时得到中断设备传送过来的数据。中端传输方式驱动程序应该定时的查询中断端口,并获得端口数据,驱动程序怎么把接受到的数据传给应用程序,采用中断的方式?那位有代码,能不能给小弟一份! 那位大虾有这方面的经验,请赐教1谢谢! |
|
|
沙发#
发布于:2005-08-08 19:13
还有个问题
如果我不能用READFILE对鼠标和键盘操作,那我用那个函数得到鼠标(键盘)的报表呢?比如我想把鼠标的坐标信息显示在应用程序上! |
|
|
板凳#
发布于:2005-08-09 09:38
从应用层接收不可以吗?
1、对于标准的鼠标、键盘必须要做驱动才可以的; 2、可以把鼠标、键盘做与非标的,通过上面你说的方式处理; |
|
|
地板#
发布于:2005-08-09 18:56
驱动是有的,系统本身具有HID设备的驱动,不需要用户编写,应用程序好像不能通过READFILE、WRITEFILE对鼠标和键盘读写,是不是被系统把进程占用了?
|
|
|
地下室#
发布于:2005-08-10 09:42
从应用层处理键盘鼠标消息,不能直接读写数据的;
驱动是为键盘以及鼠标自己做一个驱动不用标准的驱动,用标准的驱动是不可以的; 可以自己做固件,能保证通过READFILE、WRITEFILE对鼠标和键盘读写. |
|
|
5楼#
发布于:2005-08-10 21:43
谢谢你的回答!还是有问题:
WIN98以上系统是支持HID设备的,也就是说按照HID规范设计的USB设备在98和2000下是不用编写驱动程序,就可以被系统识别。 READFILE和WRITEFILE是应用程序对设备进行读写的函数,这两个函数向USB功能驱动程序发送IRP,功能驱动程序响应IRP,并形成URB传送给USB总线驱动程序,总线驱动程序完成对硬件相应的操作!所以说READFILE和WRITEFILE并没有和固件发生关系,固件不过是响应USB、HID请求,并形成HID报表传送给USB主机,应该不影响READFILE和WRITEFILE操作. |
|
|
6楼#
发布于:2005-08-11 11:30
READFILE和WRITEFILE肯定与固件有关系,比如发送数据的长度
|
|
|
7楼#
发布于:2007-01-04 10:48
问题的关键 是你用鼠标来测试, 在WIN98 以上, HID的鼠标是被系统独占打开的,因此你不能打开
|
|
|
8楼#
发布于:2007-01-22 10:17
usb的键盘和鼠标在win2k以上的操作系统中由系统独占,应用程序可已访问Feature数据,这个在usb网站的FAQ中给出了明确的答复。
|
|