【发布时间】:2019-12-13 08:52:53
【问题描述】:
我需要 CDC USB 设备上的 8 位带外数据(配置/噪声读数),我想我可以在 DeviceDescriptor 的 bcdDevice 的 LSB 中返回它...但似乎Windows 仅在“插件事件”中读取该内容——即使您在集线器上使用 DeviceIOCtl 来“重新读取”DeviceDescriptor(它不会在我的设备中遇到断点,并且它坚持一个常数插入后的 bcdDevice -- 我知道 MSB 需要大于 2,但它似乎都被缓存了)。
A. 有没有办法“强制”Windows 重新读取bcdDevice(最好在端口打开时)?或者任何其他字符串或字节(它们似乎都被缓存了)?
B. 有没有办法“强制”Windows 读取(并逐字接受给出的内容)BaudRate(我想我可以使用BaudRate 的 MSB 作为状态,但 Windows 不相信这是一个有效的数字,所以它只报告“9600,我猜”——除非我关闭并重新打开端口,否则它不会读取它——然后它会尝试设置波特率而不是告诉)?
C. 有没有其他方法可以在不让 Windows 玩愚蠢游戏的情况下将 1 个字节输入/输出我的设备?我真的不希望我的设备显示为 2 个 com 端口(一个用于配置,一个用于数据),但是我必须弄清楚哪个是哪个,这会让用户感到困惑——任何其他寄存器/USB 消息——DSR, CTS, RI, CD——但我需要再输入 4 位,至少需要输出 3 位——而且它需要是“原始的”——没有“如果 CD,那么 DSR 必须没问题” --
(一旦配置,“UseTermination/InvertData/DriveStrength”存储在设备的闪存中,所以它只是一个串口,但我需要读取“noiselevel”[8 bits req'd ],并设置这些寄存器——仅在请求时!——在调试设备时)...
【问题讨论】:
标签: usb cdc deviceiocontrol