我在端口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
。根据男人页面,-istrip
将剥离返回的字节的上部。
鉴于您还有许多其他串行端口设置,因此您也可能与驾驶员遇到奇怪的问题。我不知道Minicom使用了哪些设置以及如何确切设置它们(我通常使用GTKTERM(,但是我的经验是GTKTerm使用将始终可以工作并避免输入/输出中的任何奇数字符的设置。
GTKTEMS使用的设置与以下STTY线相同:
stty -F /dev/ttyS0 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke
对于发送命令时未返回任何数据,您是否尝试过确保在命令末尾发送rn
?您使用的串行端口设置之一也可能是转换CR/NL组合。如果正确设置了所有端口设置,则在执行以下操作时,调制解调器应回复:
cat /dev/ttyACM0 &
/bin/echo -n -e "ATrn" > /dev/ttyACM0
(调制解调器应响应OKrn
(
尝试使用
sudo screen /dev/ttyS0 9600
看看您是否得到相同的行为。