端末からUSBポートにシリアルデータを送信しますか?

端末からUSBポートにシリアルデータを送信しますか?

私のUSBポート(LinuxベースのOS)にArduinoが接続されており、/dev/ttyACM0読み取るシリアルデータを受信して​​受信したとおりに処理しています。私がしなければならないのは、このポートにデータを送信することだけです。minicom このプログラムを次のコマンドで使用しました。

minicom --device=/dev/ttyACM0 --baudrate=9600

完璧に動作します。問題は minicom対話型環境で実行されています。非対話型で情報を送信するシェルスクリプトを作成したいと思います。

minicom --device=/dev/ttyACM0 --baudrate=9600  "message"

echo私が理解したところによると、Unixのすべてはファイルです。 USBポートも同様です。それで、デバイスファイルに直接バイトを書き込むことができるかどうか疑問に思います。

echo "message" >/dev/ttyACM0

しかし、これは動作しない。私はこれがボーレートの不一致に関連している可能性があることを知っています。次のコマンドを実行しました。

$ stty -F /dev/ttyACM0
speed 9600 baud; line = 0;
min = 0; time = 0;
-brkint -icrnl -imaxbel
-opost -onlcr
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

ところで、伝送速度は9600です。上記のコマンドで機能させる方法はありますか?

ベストアンサー1

このスレッドは1年以上経過したため、あなたの質問に答えたのかわかりません。

しかし、独自のシェルがあり、ttyとユーザー間のやり取りを自動化できるスクリプト言語でない限り、スクリプトを使用する必要はありません。

    #!/usr/bin/expect -f
    set timeout -1
    spawn ./que.sh
    expect "Enter your name\r"
    send -- "I am Nikhil\r"
    expect "Enter your age\r"
    send -- "24\r"
    expect "Enter your salary\r"
    send -- "100k\r"
    expect eof

最初の行は、予想されるコマンドパス(#!/usr/bin/expect)を定義します。コードの2行目はタイムアウトを無効にします。

次に generate コマンドを使用してスクリプトを起動します。スポーンを使用して、目的のプログラムや他の対話型スクリプトを実行できます。

スポーンコマンドは、シェル、FTP、Telnet、SSH、SCPなどのスクリプトまたはプログラムを起動するために使用されます。

残りの行は、シェルスクリプトと対話するExpectスクリプトです。

最後の行はファイルの終わりで、対話の終わりを意味します。

これでスクリプトを保存し、他のシェルスクリプトのようにファイルを実行可能にします。

man expect使用方法はシェルで入力して説明し、次のページで詳しく説明します。

https://www.geeksforgeeks.org/expect-command-in-linux-with-examples/

私が助けることができることを願っています。

おすすめ記事