串行端口通信遇到问题?

串行端口通信遇到问题?

我的机器上的 Linux 中的串行端口通信无法正常工作。怎么解决?

我插入了 USB 到 NULL 调制解调器到 USB 的连接。在 Windows 中使用此串行电缆工作正常。可以在Windows中传输100MB的文件。在 Ubuntu Linux 中。我遇到麻烦了。我什至无法让命令行工作。


设置端口:

sudo chmod o+rw /dev/ttyS0
sudo chmod o+rw /dev/ttyS4

crw-rw-rw- 1 root dialout 4, 64 Feb 10 14:31 /dev/ttyS0
crw-rw-rw- 1 root dialout 4, 68 Feb 10 14:20 /dev/ttyS4

dmesg | grep ttyS
[    0.412092] 00:07: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[    0.433676] 0000:00:16.3: ttyS4 at I/O 0xf0e0 (irq = 19, base_baud = 115200) is a 16550A

沟通:

On one terminal:
cat -v < /dev/ttyS0   or   cat -v < /dev/ttyS4


On another terminal:
echo -e "\x7E\x03\xD0\xAF und normaler Text" > /dev/ttyS0

stty -aF /dev/ttyS0
speed 57600 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>;
eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>;
susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>;
discard = <undef>; min = 0; 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 -aF /dev/ttyS4
speed 57600 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>;
eol = <undef>; eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>;
susp = <undef>; rprnt = <undef>; werase = <undef>; lnext = <undef>;
discard = <undef>; min = 0; 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

这是文档:

https://www.digi.com/resources/documentation/Digidocs/90001541/tasks/t_use_terminals.htm?TocPath=Get%20started%20with%20MicroPython%7C_____8

答案1

你说的是USB转串口设备?那么设备名称很可能采用以下形式/dev/ttyUSB*,not /dev/ttyS*。如果您只有一台这样的设备,名称可能是/dev/ttyUSB0

您链接的说明中的第一个 Linux 步骤还说:

在 Linux 中打开终端并输入picocom -b 115200 /dev/ttyUSB0

/dev/ttyS0看起来像一个普通的物理串行端口(在笔记本电脑上,它可能仅可使用扩展坞),并且由于/dev/ttyS4似乎与输出中的 PCI ID 0000:00:16.3 相关dmesg,因此它可能是 Intel AMT/MEI 串行端口-over-LAN 管理端点。这些都与 USB 转串口设备没有任何关系。

答案2

你需要有人来进行流量控制。如果串行线是模拟的,您需要将其视为真正的串行线。

一种可能性是建立网络。您可以使用旧的单据来做到这一点:

  1. slattach /dev/ttyS0一方面,slattach /dev/ttyS4另一方面。现在您有一个新的“网络适配器”,可能sl0在任意一侧调用。
  2. 您可以给它一个地址(例如使用ip addr aadd 172.16.16.1/30 brd + dev sl0)并将其激活(ip link set sl0 up)。另一侧也类似(但使用另一个地址)。
  3. 然后将其用作任何其他网络连接。

其他可能性包括文件传输实用程序,如 kermit。恐怕,简单cat还是echo不够。

相关内容