
こんにちは、私はラズベリーパイを使用しており、bashスクリプトでUSBシリアルポートに書き込もうとしています。私はechoが正しい方法であることがわかりました。また、書き込み中にポートが使用中かどうかをテストしたいと思います。だから私はこのスクリプトを使用しています。
#! /bin/bash
if echo -e "USB Command" >> /dev/ttyACM0 ; then
echo "Success"
else
echo "Fail"
fi
しかし、問題は、そのポートにアクセスする権限がなくても常に成功することです。ポートに書き込むための最良の方法を使用していますか?書き込みの成功を確認する方法は?ありがとう
編集:これは出力です:
ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 166, 0 Dec 13 16:38 /dev/ttyACM0
答え1
スクリプトを確認してください。私の考えでは、あなたがしたいのは、echoコマンドの戻りコードをテストすることです。
たとえば、コマンドプロンプトでechoを実行した場合:
$ echo -e "USB Command" >> /dev/ttyACM0
終了したらすぐに戻りコードを確認してください。
$ echo $?
0
成功の可否を判断できるはずです。少なくとも正常にデータをttyにインポートしました。
戻りコード 0 は成功を示します。他のすべてはエラーであり、ゼロ以外のエラーコードを検索してみると、その意味がわかります。
手動で作業し、それをスクリプトに統合する方法を学びます。
。
答え2
何かあなたに悪いことがあります:
echo Hello >> /dev/mem; echo $?
bash: /dev/mem: Permission denied
1
クラシックUnix権限について話していますが、デバイスにアクセスする権限がないと、コマンドは失敗します。
udev
ルールを使用するか、echo 123 | sudo tee /dev/device
問題を解決してください。