用usb把从can总线收到的数据传到PC,系统对速度要求不是很苛刻。下位机我把cdc虚拟串口和hid通信都调通了。现在问题是选用哪种通信方式?在调试cdc虚拟串口时,调试助手会因为系统复位而死机,所以用cdc通信,若调试助手(上位机俺不懂,要招人来编)自己编写是否能解决串口死机?用hid也要自己编写上位机,不过它能完全实现即插即用,只要上位机不关掉,对系统断电再上电上位机都能恢复通信。在全速系统,hid和cdc每包都是64字节,速率hid最快也能到64K,够我们系统用,老板觉得cdc是通信类,应该用cdc通信比较合适,但虚拟成串口用,串口号不一定每次都一样,所以他让我看看cdc类是否可以不虚拟成串口而与下位机通信的例子?当然上位机界面我们会自己编写。哪位高手帮忙分析一下?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1.HID不需要任何驱动,虚拟串口还需要一个INF文件,你给客户的时候还要附带一个文件,而且只是一个几KB的文件,多麻烦。而且这个INF还要进行微软驱动数字签名,不签名的话安驱动还要跳出个警告窗口,对产品来说多恶心。
2.没有说通信就要用CDC。USB本来就是通信用的,管他是HID还是CDC,反正都是通信,不要纠结于这个。最主要的是满足项目需求,对客户提供最简便的操作。
3.下位机拔除,重启,PC端都会有一个WM_DEVICECHANGE消息,然后PC就得知下位机已断开了。HID我用过,我觉得CDC应该也可以通过这个判断出,不过没试过。
4.把通信部分分为几个模块设计。底层通信模块,自己定义的协议模块。上位机也一样。到时候要换通信方式,只要把底层通信模块移植过来就行了,接口都设计成一样的,移植花不了几个小时。上位机也设计成这样。到时候你可以把两种方案都测试一遍,把优劣对比一下,做个报告给你们老板,多牛。
一周热门 更多>