Debian Wheezyを実行しているマシンで、/ dev/ttyS1からttyS9までの機器が接続されています。さまざまな機器がさまざまな速度で通信します。
次のような一連の行を作成するよりも、ボーレートを設定するより良い方法はありますか
stty -F /dev/ttyS1 19200 raw -echo
stty -F /dev/ttyS2 4800 raw -echo
etc...
rc.local?
私の知る限りではありません。
/etc/rc.local
ファイルは、ボックスに固有のカスタマイズを作成するのに最適な場所です。これは、これらのタイプのカスタム変更のために特別に作成されたものであり、ほとんどのシステム管理者がUnix/Linuxボックスを扱う際に注意を払う必要がある最初の場所です。
setserial package をインストールします。シリアルポート設定を保存し、起動時にそれらを復元できます。
または、ポートがudevルールによって検出されたときにプログラムを実行します。このような(テストされていない)ものを/etc/udev/rules.d/zzz_serial.rules
:
KERNEL=="ttyS1", RUN+="/bin/stty -F /dev/ttyS1 19200 raw -echo"
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
に保存されます。