有没有一种方法可以强制Windows重新读取USB DeviceDescriptor?

时间:2019-08-05 19:51:50

标签: usb cdc deviceiocontrol

我需要CDC USB设备上的8位带外数据(配置/噪声读取),并且我认为可以在bcdDevice的{​​{1}}的LSB中返回它。 。但是,似乎Windows仅在“事件插入”中读取该内容,即使您在集线器上使用DeviceDescriptor来“重新读取”​​ DeviceIOCtl(在Windows中不会达到断点)我的设备插入后,它始终保持bcdDevice不变-我知道MSB必须大于2,但似乎都被缓存了。)

A。。是否有一种方法可以“强制” Windows重新读取DeviceDescriptor(最好是在打开端口时)?还是其他任何字符串或字节(它们似乎都已缓存)?

B。有没有一种方法可以“强制” Windows读取(并接受逐字记录的内容)bcdDevice(我认为我可以使用{{1}的MSB }表示状态,但Windows不认为这是有效数字,因此它只会报告“ 9600,我猜”,并且除非我关闭并重新打开端口,否则它不会读取它-然后它将尝试设置波特率,而不被告知)?

C 。在Windows不玩愚蠢的游戏的情况下,还有其他方法可以使我的设备进出1个字节吗?我真的不希望我的设备显示为2个com端口(一个用于配置,一个用于数据),但是随后我必须弄清楚哪个是哪个,这会使用户感到困惑-其他任何寄存器/ USB消息-BaudRate-但是我需要再输入4位,至少要输出3位-并且它必须是“原始”的-否“如果是BaudRate,则{{1} }一定可以” – (配置完成后,“ DSR, CTS, RI, CD / CD / DSR”将存储在设备的闪存中,因此它只是一个串行端口,但是我需要阅读“ {{1} }“ [需要8位],并仅在请求时才设置这些寄存器!-在调试设备时)...

1 个答案:

答案 0 :(得分:1)

作为问题C的答案,我建议当串行端口的波特率设置为某些特殊值(如123)时,进入配置模式,并允许在大容量IN和OUT端点上传输配置数据

用一个USB串行端口和一个与WinUSB通话的本机USB接口制造复合设备也是很好的(并且可能更正常)。