Javaプログラムでテストするために、シリアルポートを無効にしてから有効にする必要があります。
man
のsetserial
ページには次のように記載されているため: "UART type noneを使用すると、ポートが無効になります。 "、Sudo setserial /dev/ttyS4 uart none
を使用してポートを無効にします。これにより、シリアルポートが正常に無効になります。シリアルポートを再度有効にするには、Sudo setserial /dev/ttyS4 -a autoconfig
を使用すると、期待どおりにポートが起動します。
ポートを無効にした後、 Java gnu.io.CommPortIdentifier 関数を使用してポートを開こうとします。 gnu.io.CommPortIdentifier
関数を実行した後にポートを有効にしようとすると、次の出力が得られます。
$ Sudo setserial /dev/ttyS4 -a autoconfig
Cannot autoconfigure port: Device or resource busy
この問題を回避するにはどうすればよいですか?シリアルポートを有効/無効にするより良い方法はありますか?または、ポートに対して行われた要求のリストをクリアできますか?
テストが実行されているため、プロセスを強制終了することはできません。
Java gnu.io.CommPortIdentifierは、シリアルポートを無効にしている/ dev/ttySxを削除すると、さらに大きな問題が発生すると思います。
再度有効にする必要がある場合は、最初にMAKEDEVスクリプトまたはmknodコマンドを使用してノードを作成する必要があります。 ここ はシリアルデバイスの作成に関する情報です。