web-dev-qa-db-ja.com

/ dev / ttyS0をリセットする方法

シリアルインターフェース(Scientific Linux 6.1を実行)を使用してKheperaロボットに接続しようとしています。コマンドscreen /dev/ttyS0を使用して通信しましたが、正常に機能しましたが、閉じてMATLABを使用したかったのですが、方法が見つかりませんでした。そのセッションを閉じるために、ターミナルウィンドウの実行画面でXをクリックしました。

これで、ttyS0ポートを開くことができなくなりました。 MATLABとscreenの両方が、そのポートを開くことができないと言っています。

ttyS0ポートをリセットするにはどうすればよいですか? 1つの選択肢はコンピューターを再起動することです。しかし、再起動せずにそれを行う方法は?

シリアル通信を終了する適切な方法は何ですか?

また、次のコマンドは何をしますか? Googleで見つけて実行しましたが、何も起こりませんでした。それは私が修正する必要があることを何か悪いことをしましたか?

/sbin/agetty -L -f /etc/issueserial 9600 ttyS0 vt100
4
hyperknot

コマンドscreen -lsを発行して、現在のすべての画面セッションのステータスを取得できます。次に、screen-rオプションを使用して切断されたscreenセッションに「再接続」し、-Xオプションを使用してセッションを強制終了します。

これがシェルセッションの例です。 -d -mオプションを使用して、screenセッションを「デタッチ」モード(バックグラウンド)で開始し、X on the terminal window running screenを使用してセッションを閉じることをシミュレートしています。 screen5207出力からの-lsは、その特定のscreenセッションに「再接続」するために使用されるプロセスID番号です。

$ screen -d -m /dev/ttyS0
$ screen -ls
There is a screen on:
    5207..Host  (10/04/2011 10:16:50 AM)    (Detached)
1 Socket in /var/run/screen/S-user.

$ screen -r 5207 -X kill
$ screen -ls 
No Sockets found in /var/run/screen/S-user.

$ 
4
Dan Cruz

シリアル通信を終了する適切な方法は何ですか?

プログラミングの観点から–単にclose()開いたファイル記述子。プログラムを終了すると、それが自動的に行われます。ただし、not画面を終了しました。

最も一般的に使用されるGNU画面機能の1つは、セッションを切り離して再接続する機能です。ウィンドウでは、Screenの「サーバー」部分は実行されたままであり、screen -rを使用して再接続できます。

使用する C-a、 k 実際にスクリーンウィンドウを強制終了します。

また、次のコマンドは何をしますか? Googleで見つけて実行しましたが、何も起こりませんでした。それは私が修正する必要があることを何か悪いことをしましたか?

/sbin/agetty -L -f /etc/issueserial 9600 ttyS0 vt100

agettyはTTYモニタープログラムです。 その仕事は、端末デバイスの構成を再初期化し、ログインプロンプトを表示することです。 tty1...tty6でコンソールログインプロンプトに切り替えると、実際の動作を確認できます。 1

この場合、あなたがあなたの側でagettyを開始したとき、それはログインプロンプトを送信しました2 おそらくそれをゴミとして捨てたロボットに。ロボットが「login:」を「世界の乗っ取りを開始する」と何らかの形で解釈しない限り、通常は無害です。 agettyによって行われた構成も、何も壊してはなりません。


1 gettyは実際のログインを処理せず、ユーザー名を要求するだけであることに注意してください。入力すると、agetty/sbin/loginを開始して、ログインプロセスを実行します。

2/etc/issueserialテキストファイルの内容も送信されますが、Googleでコマンドを見つけたため、そのファイルさえ持っていない可能性があります。

1
user1686