Ubuntu

串口通信有問題?

  • February 11, 2021

串列埠通信在我機器上的 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

你說它是USB轉串口設備?那麼設備名稱很可能是格式/dev/ttyUSB*,而不是/dev/ttyS*。如果您只有一台這樣的設備,名稱可能是/dev/ttyUSB0.

您連結的說明中的第一個 Linux 步驟還說:

在 Linux 中打開一個終端並輸入picocom -b 115200 /dev/ttyUSB0

/dev/ttyS0看起來像一個普通的物理串列埠(在筆記型電腦上,它可能僅可使用擴展塢),並且由於/dev/ttyS4似乎與您的dmesg輸出中的 PCI ID 0000:00:16.3 有關,它可能是英特爾 AMT/MEI 串列-over-LAN 管理端點。這些都與 USB 轉串口設備沒有任何關係。

引用自:https://unix.stackexchange.com/questions/633800