我在 ttyACM0 端口上连接了 USB 调制解调器。当我打开 Minicom 之类的应用程序并尝试向其发送一些命令时,回显并不总是我输入的内容。例如,如果我输入“A”,则会得到“@”。如果我输入“T”,我就会得到“T”。串行端口似乎正在剥离我的传输中的最低有效位。例如:
A = @
B = B
C = B
D = D
E = D
F = F
... 等等。我认为我的串行端口配置有问题,但我尝试了所有组合,但没有成功。我可能错过了一些简单的事情,但没有什么明显的事情对我来说是突出的。知道可能出了什么问题吗?我的串口配置如下:
# stty -F /dev/ttyACM0 -a
speed 9600 baud;stty: /dev/ttyACM0
line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^H; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 100; time = 2;
-parenb -parodd cs8 -hupcl -cstopb cread clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0
-isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
查看您的串行端口设置,最有可能的罪魁祸首是-istrip
。根据man page, -istrip
将去掉返回字节的高位。
鉴于您有很多其他串行端口设置,您的驱动程序也可能会遇到奇怪的问题。我不知道 minicom 使用什么设置以及如何准确设置它们(我通常使用 GTKTerm),但我的经验是 GTKTerm 使用的设置始终有效,并避免输入/输出中出现任何奇怪的字符。
GTKTerm 使用的设置与以下 stty 行相同:
stty -F /dev/ttyS0 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
至于发送命令时不返回任何数据,您是否尝试过确保您正在发送\r\n
在你的命令结束时?您正在使用的串行端口设置之一也有可能正在转换 CR/NL 组合。如果所有端口设置均正确设置,则当您执行以下操作时调制解调器应做出响应:
cat /dev/ttyACM0 &
/bin/echo -n -e "AT\r\n" > /dev/ttyACM0
(调制解调器应该响应OK\r\n
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)