我在运行 Debian Wheezy 的机器上将仪器连接到 /dev/ttyS1 到 ttyS9。各种仪器以不同的速度进行通信。
有没有比使用一堆像这样的行更好的方法来设置波特率
stty -F /dev/ttyS1 19200 raw -echo
stty -F /dev/ttyS2 4800 raw -echo
etc...
在 rc.local 中?
答案1
安装设置串行包。它可以保存串行端口设置并在启动时恢复它们。
或者,当通过 udev 规则检测到端口时运行程序。将类似这样的内容(未经测试)放入/etc/udev/rules.d/zzz_serial.rules
:
KERNEL=="ttyS1", RUN+="/bin/stty -F /dev/ttyS1 19200 raw -echo"
答案2
据我所知。
该/etc/rc.local
文件是创建特定于盒子的自定义的最佳位置。它是专门为这些类型的自定义更改而创建的,并且是大多数系统管理员在处理 Unix/Linux 机器时首先要查看的地方。
答案3
setserial 软件包将在启动时恢复串行设置。安装后,只需编辑文件即可/var/lib/setserial/autoserial.conf
###PORT STATE GENERATED USING AUTOSAVE-ONCE###
###AUTOSAVE-ONCE###
#
# If you want to configure this file by hand, use
# dpkg-reconfigure setserial
# and change the configuration mode of the file to MANUAL.
# If you do not do this, this file may be overwritten automatically the next
# time you upgrade the package
#
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 spd_normal skip_test
/dev/ttyS1 uart 16550A port 0x02f8 irq 3 baud_base 115200 spd_normal skip_test
/dev/ttyS2 uart 16550A port 0x03e8 irq 0 baud_base 115200 spd_normal skip_test
/dev/ttyS3 uart 16550A port 0x02e8 irq 0 baud_base 115200 spd_normal skip_test
/dev/ttyS4 uart 16550A port 0x02d0 irq 0 baud_base 115200 spd_normal skip_test
/dev/ttyS5 uart 16550A port 0x02c0 irq 0 baud_base 115200 spd_normal skip_test
根据我的经验,直接修改文件是可以的,即使文件中的注释另有说明。您还可以通过移动###AUTOSAVE-ONCE###
文件顶部的行来“交互式”使用setserial 。然后根据需要多次调用setserial,直到您对配置满意为止。此时重新启动计算机会将最新配置保存到/setserial/autoserial.conf
.