0

我的 CDC USB 设备上需要 8 位带外数据(配置/噪声读数),我想我可以bcdDeviceDeviceDescriptor...事件”——即使你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必须是 OK”——(一旦配置,“ UseTermination/ InvertData/ DriveStrength" 存储在设备的闪存中,所以它只是一个串行端口,但我需要读取 " noiselevel" [8 bits req'd],并设置这些寄存器——仅在请求时!——在调试设备时) ...

4

1 回答 1

1

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

制作具有一个 USB 串行端口和一个与 WinUSB 通信的本机 USB 接口的复合设备也可以(并且可能更正常)。

于 2019-08-05T20:24:07.317 回答