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
在两个设备上都关闭了,所以它不应该将其转换回来,对吗?
为什么会发生(或没有发生)这种情况?
答案1
您的 stty 显示-opost
关闭了所有输出处理,因此onlcr
没有任何效果。