usb的cdc通信和hid通信

2019-12-21 12:10发布

用usb把从can总线收到的数据传到PC,系统对速度要求不是很苛刻。下位机我把cdc虚拟串口和hid通信都调通了。现在问题是选用哪种通信方式?在调试cdc虚拟串口时,调试助手会因为系统复位而死机,所以用cdc通信,若调试助手(上位机俺不懂,要招人来编)自己编写是否能解决串口死机?用hid也要自己编写上位机,不过它能完全实现即插即用,只要上位机不关掉,对系统断电再上电上位机都能恢复通信。在全速系统,hid和cdc每包都是64字节,速率hid最快也能到64K,够我们系统用,老板觉得cdc是通信类,应该用cdc通信比较合适,但虚拟成串口用,串口号不一定每次都一样,所以他让我看看cdc类是否可以不虚拟成串口而与下位机通信的例子?当然上位机界面我们会自己编写。哪位高手帮忙分析一下?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
54条回答
twitter
1楼-- · 2019-12-25 03:41
twitter 发表于 2012-6-12 22:38
这我知道的,以前做过。不过我的xp系统目录里就没有带这个驱动文件,需要从安装光盘里或者SP包里去提取的 ...

XP SP3和Win7 下面都是有usbser.sys文件的 inf文件你需要自己写
NemoGu
2楼-- · 2019-12-25 08:49
谢谢大家的热心帮忙
chengying
3楼-- · 2019-12-25 10:47
楼主还是用HID方式比较好~
1.HID不需要任何驱动,虚拟串口还需要一个INF文件,你给客户的时候还要附带一个文件,而且只是一个几KB的文件,多麻烦。而且这个INF还要进行微软驱动数字签名,不签名的话安驱动还要跳出个警告窗口,对产品来说多恶心。
2.没有说通信就要用CDC。USB本来就是通信用的,管他是HID还是CDC,反正都是通信,不要纠结于这个。最主要的是满足项目需求,对客户提供最简便的操作。
3.下位机拔除,重启,PC端都会有一个WM_DEVICECHANGE消息,然后PC就得知下位机已断开了。HID我用过,我觉得CDC应该也可以通过这个判断出,不过没试过。
4.把通信部分分为几个模块设计。底层通信模块,自己定义的协议模块。上位机也一样。到时候要换通信方式,只要把底层通信模块移植过来就行了,接口都设计成一样的,移植花不了几个小时。上位机也设计成这样。到时候你可以把两种方案都测试一遍,把优劣对比一下,做个报告给你们老板,多牛。
benlypan_a
4楼-- · 2019-12-25 15:17
 精彩回答 2  元偷偷看……
NemoGu
5楼-- · 2019-12-25 19:26
NemoGu 发表于 2012-6-13 09:59
貌似inf跟数字签名无关吧 数字签名是microsoft针对驱动程序的 inf只是告诉OS如何安装驱动和加载驱动

WM_ ...

请试一下就知道了。数字签名是inf,sys,cat文件的结合,cat要根据inf和sys生成的。
benlypan_a
6楼-- · 2019-12-26 01:08
benlypan_a 发表于 2012-6-13 10:03
请试一下就知道了。数字签名是inf,sys,cat文件的结合,cat要根据inf和sys生成的。 ...

inf只是个文本文件而已, sys cat文件才是数字签名的载体

一周热门 更多>