シリアルインターフェース(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
コマンドscreen -ls
を発行して、現在のすべての画面セッションのステータスを取得できます。次に、screen
-r
オプションを使用して切断されたscreen
セッションに「再接続」し、-X
オプションを使用してセッションを強制終了します。
これがシェルセッションの例です。 -d -m
オプションを使用して、screen
セッションを「デタッチ」モード(バックグラウンド)で開始し、X on the terminal window running screen
を使用してセッションを閉じることをシミュレートしています。 screen
の5207
出力からの-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.
$
シリアル通信を終了する適切な方法は何ですか?
プログラミングの観点から–単に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でコマンドを見つけたため、そのファイルさえ持っていない可能性があります。