Linuxに接続されたUSBシリアルデバイスがありますVM(Ubuntu 18.04LTS)。特定の形式のバイトストリームを受け入れ、一部のコンテンツを返します。デバイスから読み取るために、次のように記述しました。脚本:
#!/bin/sh
DATA="$1"; shift
stty -F /dev/ttyUSB0 115200 raw -echo
cat /dev/ttyUSB0 > /tmp/ttyDump.dat &
PID=$!
sleep 1s
echo -ne "$DATA" > /dev/ttyUSB0
sleep 1s
kill $PID
hexdump -ve '1/1 "%.2x"' /tmp/ttyDump.dat
行ごとに実行すると、ttyDump.datのデバイスから応答を取得できます。ただし、スクリプトを実行すると、ttyDump.datは空になります。
私もFDで試しました:
exec 3</dev/ttyUSB0
cat <&3 >/tmp/ttyDump.dat&
しかし、同じ結果。
どんな手掛かり?
ありがとう!
理由はわかりませんが、bash Shellを使用するように変更した後、スクリプトは機能します。デフォルトのシェルはダッシュです。