赞
踩
最近RTT项目需要通过CDC(USB虚拟串口)控制台执行命令函数并显示结果。
正常情况应该是这样的。
finsh />ls()
Directory /:
0 <DIR>
event <DIR>
wifi <DIR>
fh8632_2053_day_0912_01.dat 13404
fh8632_2053_day_0912_01.hex 2292
test.avi 9429336
0, 0x00000000
实际上用Xshell打开窗口,敲入命令,没有任何回显。换了个串口工具,用sscom5.13.1.exe敲入命令就有回显。发现sscom5.13.1.exe有一个控制项DTR。
把这货打开了就有回显,关了就木有,于是用bus hound抓包,发现:
打开DTR发了命令
26.0 CTL 21 22 01 00 02 00 00 00
关闭DTR发了命令
26.0 CTL 21 22 00 00 02 00 00 00
该命令 request = 0x22,CDC_SET_CONTROL_LINE_STATE,是设置line状态的,打开DTR,把状态设为1,关闭DTR把状态设为0,测试发现关闭串口也会发设置为0这条命令。
XShell没有DTR选项,当用Xshell打开串口时,发送了如下命令:
26.0 CTL 21 22 00 00 02 00 00 00
26.0 CTL a1 21 00 00 02 00 07 00
26.0 IN 00 c2 01 00 00 00 08
26.0 CTL a1 21 00 00 02 00 07 00
26.0 IN 00 c2 01 00 00 00 08
26.0 CTL a1 21 00 00 02 00 07 00
26.0 IN 00 c2 01 00 00 00 08
26.0 CTL a1 21 00 00 02 00 07 00
26.0 IN 00 c2 01 00 00 00 08
26.0 CTL 21 20 00 00 02 00 07 00
26.0 OUT 00 c2 01 00 00 00 08
26.0 CTL a1 21 00 00 02 00 07 00
26.0 IN 00 c2 01 00 00 00 08
26.0 CTL 21 22 00 00 02 00 00 00
26.0 CTL 21 20 00 00 02 00 07 00
26.0 OUT 00 c2 01 00 00 00 08
26.0 CTL a1 21 00 00 02 00 07 00
26.0 IN 00 c2 01 00 00 00 08
把状态设置为未连接了。
解决办法,收到蓝色命令时,把串口状态设置为已连接即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。