我曾经使用过使用 RS232 通信的串行设备。我想检查设备的信号。当我按下按钮时,我可以获得 Hexa 数据(之后我会说信号)。我的电脑有 4 个串行端口(主板:asrock IMB-183),所以我想将串行连接到设备。当我使用 USB2SERIAL 测试设备时,我可以使用 minicom 获取信号。但是当我使用串行端口时,minicom 不起作用。
我使用 Windows(同一台计算机和同一台设备)和终端程序(如 highper 终端)检查了 Rx、Tx,可以收到信号。所以我认为我在使用 Linux 和串口时遇到了问题。
我检查了我的 BIOS。在 SuperI/OI 上打开 COM 端口以启用。然后我检查了组、拨出。
现在我向您展示我的计算机和设备的状态。
# id
......, 20(dialout), .......
# cat /proc/tty/driver/serial
serinfo : 1.0 driver revision:
0: uart : 16550A port : 000003F8 irq: 4 tx:0 rx:0 RTS|DTR
1: uart : 16550A port : 000002F8 irq: 3 tx:0 rx:0 RTS|DTR
........
Linux 3.13.0-32-通用,Ubuntu 12.04
答案1
正如您所提到的,所有端口都可以在 Windows 上运行,但不能在 Ubuntu 上运行,也许您可以尝试使用较新的内核(16.04 / 16.10 LiveUSB 就可以)来看看它是否可以使其他端口运行。
无论如何,至少看起来您的 ttyS0 正在使用 echo / cat 命令。我最后建议的是,如果您仍然无法从串行设备获取任何信号,请尝试使用stty
命令更改波特率:
sudo stty -F /dev/ttyS0 # Print current setting
sudo stty -F /dev/ttyS0 9600 # Set the baud rate
这里的9600应该替换为正确的波特率。
有关 stty 命令的更多信息可以找到这里。