我的机器上的 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
这是文档:
答案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
你需要有人来进行流量控制。如果串行线是模拟的,您需要将其视为真正的串行线。
一种可能性是建立网络。您可以使用旧的单据来做到这一点:
slattach /dev/ttyS0
一方面,slattach /dev/ttyS4
另一方面。现在您有一个新的“网络适配器”,可能sl0
在任意一侧调用。- 您可以给它一个地址(例如使用
ip addr aadd 172.16.16.1/30 brd + dev sl0
)并将其激活(ip link set sl0 up
)。另一侧也类似(但使用另一个地址)。 - 然后将其用作任何其他网络连接。
其他可能性包括文件传输实用程序,如 kermit。恐怕,简单cat
还是echo
不够。