TLDR - 我已经onlcr
在我的终端中配置了,但我没有看到\r
添加
如果将两个 FTDI 串行转换器插在一起,并将它们都插入我的电脑,我会得到两个/dev/ttyUSB0
端口/dev/ttyUSB1
如果我在不同的终端中打开它们picocom
,我可以通过来回发送消息来确保它们已正确连接,如果我停止使用C-A C-Q
它,则端口配置如下:
$ stty -F /dev/ttyUSB0 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar 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 -flusho -extproc
$ stty -F /dev/ttyUSB1 -a
speed 9600 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O;
min = 1; time = 0;
-parenb -parodd -cmspar 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 -flusho -extproc
现在,如果我打开两个终端来监听两个串口:
$ cat -v /dev/ttyUSB0
$ cat -v /dev/ttyUSB1
(实际上,对于这个特定的实验,我只需要其中之一,但同时拥有两者也无妨)
然后在第三个终端中,像这样发送一行:
$ echo this is a test > /dev/ttyUSB1
然后再发送一行来证明我正在打印回车符:
$ echo -e 'this is another test\r' > /dev/ttyUSB1
那么这就是我所看到的:
$ cat -v /dev/ttyUSB0
this is a test
this is another test^M
^M
为什么我在第 1 行和^M^M
第 2 行中看不到?
icrnl
在两个设备上都关闭,所以它不应该将其转换回来吗?
为什么会(或不会)发生这种情况?
您的 stty 显示
-opost
哪个关闭所有输出处理,因此onlcr
无效。