![]() | ![]() | 第1楼 作者:强强 发表时间:2010-9-2 18:55:05 |
![]() 回复楼主 回复第1楼 |
![]() | ![]() | ![]() | 第2楼 作者:mark 发表时间:2010-9-2 19:43:10 |
![]() 是论论坛上的EASY USB 51 Programer:如何与HID设备通讯2中的MFC
回复楼主 回复第2楼 |
![]() | ![]() | ![]() | ![]() | 第3楼 作者:强强 发表时间:2010-9-2 21:21:26 |
![]() 回复楼主 回复第3楼 |
![]() | ![]() | ![]() | ![]() | ![]() | 第4楼 作者:mark 发表时间:2010-9-2 21:48:25 |
![]() 回复楼主 回复第4楼 |
![]() | ![]() | ![]() | ![]() | ![]() | 第5楼 作者:mark 发表时间:2010-9-2 21:52:26 |
![]() 回复楼主 回复第5楼 |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | 第6楼 作者:强强 发表时间:2010-9-2 22:07:39 |
![]() 必须要了解下位机发送上来的数据含义,上位机才好解析。你要实现什么功能? 回复楼主 回复第6楼 |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | 第7楼 作者:mark 发表时间:2010-9-4 17:15:40 |
![]() 回复楼主 回复第7楼 |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | 第8楼 作者:强强 发表时间:2010-9-5 17:28:26 |
![]() 回复楼主 回复第8楼 |
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | 第9楼 作者:mark 发表时间:2010-9-8 0:07:05 |
![]() 这个问题是不是以内readHID的函数中使用的openHID的函数中已经将句柄给关闭了,所以readfile未能获得句柄而不能读数据的?要不是话还有什么原因? 回复楼主 回复第9楼 |
![]() | ![]() | 第10楼 作者:saliven 发表时间:2010-9-8 9:20:12 |
![]() 很可能是因为USB本身是用的两个通道实现读和写的,还有一个通道用于控制命令处理,有一些设备就必需使用不同的打开方式,打开三个句柄,一个用来读,一个用来写,一个用来发送控制信息,这个和你的设备以及操作系统都有关系,所以建议不管如何,都按下面的方式来打开,这个网站提供的程序只打开一个句柄,在有些时候是会出问题的。 打开控制端口应该这样打开: hDeviceHandle = CreateFile( detailData->DevicePath, 0, FILE_SHARE_READ | FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, 0, NULL); 打开写入端口应该这样: hWriteHandle = CreateFile(detailData->DevicePath, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, 0, NULL); 打开读取端口应该这样: hReadHandle = CreateFile(detailData->DevicePath, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, 0, NULL); 然后你做不同操作,用不同的句柄就行了。 注意:键盘和鼠标只能用这种方式打开控制端口,并且应用程序只能打开控制端口,获取一些信息,而不能写入控制信息,并且不能以读写方式打开。 回复楼主 回复第10楼 |
![]() | ![]() | ![]() | 第11楼 作者:mark 发表时间:2010-9-8 14:05:28 |
![]() 怎么加?我家在读的那部分说还要初始化的detaildata。拜托帮我改改啊。谢谢了,很急。 回复楼主 回复第11楼 |
![]() | ![]() | ![]() | ![]() | 第12楼 作者:mark 发表时间:2010-9-8 18:12:18 |
![]() 我在openHidDevice里面加了。但是还是没作用。最奇怪的是函数在运行到 m_strRx = ucRxBuffer里面都没读出数,但是运行到后面函数的大括号。ucRxBuffer却有数了。这是为什么?还有读出来的数不能显示。。。。。。。。。 回复楼主 回复第12楼 |
![]() | ![]() | 第13楼 作者:saliven 发表时间:2010-9-9 9:10:55 |
![]() 我应该说的比较清楚了吧,在打开设备函数里,你原来只打开一个句柄,现在改为打开3个。 先打开控制句柄,获取设备的相关信息,发现VendorID、ProductID相同时,再取Capabilities 然后再打开读、写两个句柄。 在其他函数里面,你做不同的操作,用不同的句柄就可以了。 比如你读USB信息,就用读的那个句柄,写入就用写的那个句柄。 对于HID模式,控制句柄没有太大用处,控制指令已经由操作系统搞定了,而对于自定义模式,这个句柄很重要。 回复楼主 回复第13楼 |