完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用官方例程 CH573_CDC_OK,usb模拟串口功能时,发现win10系统无需安装系统就可直接读写设备,但是系统关于设备描述和程序有差别,这是使用自写软件读取的串口信息(也可从系统的设备管理器获取该信息)如下:
description: "USB 串行设备"manufacturer: "Microsoft"serialNumber: "2017-2-25"vendorIdentifier(VID): 6790productIdentifier(PID): 22306除了后面的 VID和PID与程序中一致外,其余均不同。这里推测是设备插入电脑后,系统自动更新安装了默认驱动,导致信息被修改。 有没有方法可以保持实际使用时,电脑上的设备描述和程序中一致。目前项目需要通过 description 和 manufacturer 初步区分产品类型(类似Arduino的开发板信息)。否则次之,只能使用 VID和PID做产品区分了 还望有大神能够解答,不甚感激! |
|
相关推荐
3个回答
|
|
那个程序里面应该是没有上传字符串描述符的,你可以添加字符串描述符,不过系统层操作一般是设备类型加vid pid,这个应该就足够了。
|
|
|
|
第一次连接设备,电脑右下角有设备描述显示,和程序中是一致的,但过几秒就改变了,这是第一次连接电脑显示(设备管理器卸载设备后,重新连接也可以)
这是程序中描述符相关,可以发现时上传了的 // 语言描述符const UINT8 MyLangDescr[] = {0x04, 0x03, 0x09, 0x04};// 厂家信息 ghtechconst UINT8 MyManuInfo[] = {0x0E, 0x03, 'w', 0, 'c', 0, 'h', 0, '.', 0, 'c', 0, 'n', 0};// 产品信息 www.ghtech.cnconst UINT8 MyProdInfo[] = {0x0C, 0x03, 'C', 0, 'H', 0, '5', 0, '7', 0, 'x', 0}; |
|
|
|
目前问题解决了一半,description 和 manufacturer 还是无法修改,这个目前根据搜集的资料来看,是无法修改的了,和驱动绑定了。
但 serialNumber 可以自定义,源程序这里有问题,如下 // 厂家信息 ghtechconst UINT8 MyManuInfo[] = {14, 03, 103, 0, 104, 0, 116, 0, 101, 0, 99, 0, 104, 0};// 产品信息 www.ghtech.cnconst UINT8 MyProdInfo[] = {28, 03, 119, 0, 119, 0, 119, 0, 46, 0, 103, 0, 104, 0, 116, 0, 101, 0, 99, 0, 104, 0, 46, 0, 99, 0, 110, 0};// 序列号描述符 const UINT8 MySerDes[] = { 0x14, 0x03, 0x32, 0x00, 0x30, 0x00, 0x31, 0x00, 0x37, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x2D, 0x00, 0x32, 0x00, 0x35, 0x00};这里的厂家信息和产品信息通过编码转换,可以得到和注释一致。但是序列号描述转换后却发现乱码,是不正常的数字编码。于是尝试将数组成员由数字改为字符,直观易懂,如下: // 语言描述符const UINT8 MyLangDescr[] = {0x04, 0x03, 0x09, 0x04};// 厂家信息 wchcnconst UINT8 MyManuInfo[] = {0x0E, 0x03, 'w', 0, 'c', 0, 'h', 0, '.', 0, 'c', 0, 'n', 0};// 产品信息 CH57xconst UINT8 MyProdInfo[] = {0x0C, 0x03, 'C', 0, 'H', 0, '5', 0, '7', 0, 'x', 0};// 序列号描述符 TESTconst UINT8 MySerDes[] = {0x0A, 0x03,'T', 0x00, 'E', 0x00, 'S', 0x00, 'T', 0x00};测试后,可以通过软件读取到串口信息如下: description: "USB 串行设备"manufacturer: "Microsoft"serialNumber: "TEST"vendorIdentifier: 6790productIdentifier: 22306可以发现源码的 序列号描述符即serialNumber 应该是有问题的,导致系统显示了其它内容,导致一开始以为不能定制内容,折腾了半天。所以还是使用字符形式编写最好,不会出错。 因此目前可行方案是通过以下三者区分产品类型(注意6790是芯片生产商编号即沁恒公司,由usb官方分配的,不建议修改) serialNumber: "TEST"vendorIdentifier: 6790productIdentifier: 22306 |
|
|
|
只有小组成员才能发言,加入小组>>
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2290 浏览 2 评论
1965 浏览 1 评论
ch554g的板子准备烧录程序,用串口总是显示等待设备连接是为啥
777浏览 14评论
请问ch32v307用ch-link调试或者读写有什么特殊操作方法吗?
698浏览 13评论
Windows系统下如何确定COM口为CH340/CH341设备?
1811浏览 12评论
522浏览 12评论
CH32V307以太网接近满速后,几秒或几十秒后就死机怎么解决?
1666浏览 11评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-8-18 19:52 , Processed in 0.529552 second(s), Total 70, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:粤 B2-20160233 工商网监 湘ICP备2023018690号