[圈圈教你玩USB] 关于USB上位机程序的疑问

[复制链接]
5563|4
 楼主| 三块石头 发表于 2009-3-26 14:02 | 显示全部楼层 |阅读模式
第一个问题,编译圈圈书中所带例程,MyUsbHidTestApp,报一个编译错误:<br />myusbhidtestappdlg.cpp(168)&nbsp;:&nbsp;error&nbsp;C2440:&nbsp;'static_cast'&nbsp;:&nbsp;cannot&nbsp;convert&nbsp;from&nbsp;'BOOL&nbsp;(__thiscall&nbsp;CMyUsbHidTestAppDlg::*&nbsp;)(UINT,DWORD)'&nbsp;to&nbsp;'LRESULT&nbsp;(__thiscall&nbsp;CWnd::*&nbsp;)(WPARAM,LPARAM)'<br />None&nbsp;of&nbsp;the&nbsp;functions&nbsp;with&nbsp;this&nbsp;name&nbsp;in&nbsp;scope&nbsp;match&nbsp;the&nbsp;target&nbsp;type<br /><br />定位在&gt&gt指向的这句话上:<br />BEGIN_MESSAGE_MAP(CMyUsbHidTestAppDlg,&nbsp;CDialog)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//{{AFX_MSG_MAP(CMyUsbHidTestAppDlg)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;......<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ON_WM_TIMER()<br />&gt&gt&nbsp;&nbsp;&nbsp;ON_MESSAGE(WM_DEVICECHANGE,&nbsp;OnDeviceChange)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//}}AFX_MSG_MAP<br />END_MESSAGE_MAP()<br /><br />编译环境是VC2005中文版,但我想应该跟VC6兼容吧。VC这块我实在是懂的太少,所以出了这个问题我不太知道该怎么解决……<br /><br /><br />另外一个问题,最近一直在想,如果一个USB&nbsp;HID设备有两个功能,用多个管道(端点),实现时PC程序应当怎么处理?因为看圈圈这个例子,没有说明PC取数据是从哪个端点取的,那么我怎么分辨(如果有)多个端点传来的数据呢?<br /><br />比方说吧,打算做这么个设备,每秒会采集少量的数据,打算用端点1IN上传到PC,同时这个设备又有个shell控制台,需要在shell上做一些配置管理的工作,打算用端点2&nbsp;IN&nbsp;和&nbsp;OUT管道通信。两个端点数据量都不大,考虑都用中断传输;为驱动简单采用HID设备。那么我应当怎么设计报告?怎么设计报告描述符?PC程序怎么区分不同端点上来的数据?
computer00 发表于 2009-3-26 15:34 | 显示全部楼层

可以使用不同的报告ID来区别,具体可以参看我的键盘程序

一个HID接口只能使用一对中断端点。如果你想再增加其它的中断端点,必须另外再设置一个接口,<br />这样就会得到两个HID兼容设备,你的程序需要对这两个HID兼容设备操作,麻烦得紧,<br />还不如直接使用多个报告(只需要一对中断端点),用不同报告ID的方法区分。<br /><br /><br />至于你的所说的错误,应该是类型不匹配所致。重新修改OnDeviceChange函数的定义,将它的参数改成WPARAM,LPARAM类型或许就可以了。<br /><br />
 楼主| 三块石头 发表于 2009-3-26 16:31 | 显示全部楼层

按圈圈的该法通过编译了

函数返回类型和参数类型都要改<br /><br />函数体定义处的函数名称改为:<br />LRESULT&nbsp;CMyUsbHidTestAppDlg::OnDeviceChange(WPARAM&nbsp;nEventType,&nbsp;LPARAM&nbsp;dwData)<br /><br />类定义处的函数声明改为:<br />afx_msg&nbsp;LRESULT&nbsp;OnDeviceChange(WPARAM&nbsp;nEventType,&nbsp;LPARAM&nbsp;dwData&nbsp;);<br /><br />就可以通过编译了~~<br />谢谢圈圈
computer00 发表于 2009-3-26 17:08 | 显示全部楼层

看来不同的开发环境对这两个的类型定义有点不一样了。

  
[惊涛骇浪] 发表于 2012-3-21 10:46 | 显示全部楼层
非常感谢圈圈和网友,我也解决了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

249

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部