Armadilloフォーラム

起動時のシリアルデータ読み込み

chandra-s2

2022年9月20日 11時33分

お世話になります。

現在Armadillo-IoT A6でシリアルデータの読み込みプログラムを作成しております。
プログラムはPython3.7およびpyserial3.5で作成しております。

目的:
電源ケーブル接続時点で、Armadilloが起動され、その後プログラムが自動的に実行され(※)、読み込んだシリアルデータをファイルに出力することです。
※画面の操作やログインを実施せず

問題点:
手動で実行する場合、シリアルデータの読み込み及びログファイルへの出力はできたものの、crontabで自動起動する場合、シリアルデータの読み込みができませんでした。
※手動実行は「python3 read_serial.py」コマンドで実行します。

詳細:
接続機器: 開発セットに入っているケーブルでArmadillo本体とPCのUSBポートを接続します。
実行ユーザ: root
ファイル名: read_serial.py
保管場所:: /home/lithium_battery/
※保管場所やファイルの権限は「root」ユーザと設定され、read_serial.pyは「755」が設定されます。
crontab: @reboot /home/lithium_battery/read_serial.py
シリアルデータの送信: teratermのマクロコマンド
send'01:01:01 1 4 4 5 6 D 5 3 3 2 0 1 2 4 9'#13
成功時の出力:
シリアルデータ:b'01:01:01 1 4 4 5 6 D 5 3 3 2 0 1 2 4 9\r'
シリアルデータ:01:01:01 1 4 4 5 6 D 5 3 3 2 0 1 2 4 9
失敗時の出力(次のいずれか出力される):
①空
シリアルデータ:b''
シリアルデータ:
②不完全のデータ
シリアルデータ:b'0 4 4 5 6 D 5 3 3 2 0 1 2 4 9\r'
シリアルデータ:0 4 4 5 6 D 5 3 3 2 0 1 2 4 9
③変換されたデータ?
シリアルデータ:b'0 40\xb08Y`q``\xe0p\xd1'

目的を達成するためにご指導いただけますでしょうか。
また、他に必要な情報がございましたら、ご教授いただければ幸いです。

以上、よろしくお願いいたします。

ファイル ファイルの説明
read_serial.txt アップロードできるように、拡張しを「py」から「txt」に変更
コメント

at_syunya.ohshio

2022年9月20日 17時30分

大塩です。

> 詳細:
> 接続機器: 開発セットに入っているケーブルでArmadillo本体とPCのUSBポートを接続します。
> 実行ユーザ: root
> ファイル名: read_serial.py
> 保管場所:: /home/lithium_battery/
> ※保管場所やファイルの権限は「root」ユーザと設定され、read_serial.pyは「755」が設定されます。
> crontab: @reboot /home/lithium_battery/read_serial.py
> シリアルデータの送信: teratermのマクロコマンド
> send'01:01:01 1 4 4 5 6 D 5 3 3 2 0 1 2 4 9'#13
> 成功時の出力:
> シリアルデータ:b'01:01:01 1 4 4 5 6 D 5 3 3 2 0 1 2 4 9\r'
> シリアルデータ:01:01:01 1 4 4 5 6 D 5 3 3 2 0 1 2 4 9
> 失敗時の出力(次のいずれか出力される):
> ①空
> シリアルデータ:b''
> シリアルデータ:
> ②不完全のデータ
> シリアルデータ:b'0 4 4 5 6 D 5 3 3 2 0 1 2 4 9\r'
> シリアルデータ:0 4 4 5 6 D 5 3 3 2 0 1 2 4 9
> ③変換されたデータ?
> シリアルデータ:b'0 40\xb08Y`q``\xe0p\xd1'

1点確認させてください。
上記で記載頂いた失敗時の出力は
すべてcrontab での自動実行時に現れる症状(手動で必ず成功し、crontabでは必ず失敗する)という認識でよろしいでしょうか。

> 1点確認させてください。
> 上記で記載頂いた失敗時の出力は
> すべてcrontab での自動実行時に現れる症状(手動で必ず成功し、crontabでは必ず失敗する)という認識でよろしいでしょうか。
>
こんにちは。
はい、その認識でよろしいです。
よろしくお願いいたします。

at_syunya.ohshio

2022年9月21日 17時20分

大塩です。

情報ありがとうございます。
今までの情報を合わせると、手動でなら問題なく、crontab での実行方法または実行タイミングの問題である可能性があります。

Armadillo起動後に自動実行させたいとのことであるため
以下記事を参考にsystemd を用いて自動実行をお試しいただき、同様の問題が発生するかご確認いただけますでしょうか。
https://armadillo.atmark-techno.com/blog/6938/2865

> 大塩です。
>
> 情報ありがとうございます。
> 今までの情報を合わせると、手動でなら問題なく、crontab での実行方法または実行タイミングの問題である可能性があります。
>
> Armadillo起動後に自動実行させたいとのことであるため
> 以下記事を参考にsystemd を用いて自動実行をお試しいただき、同様の問題が発生するかご確認いただけますでしょうか。
> https://armadillo.atmark-techno.com/blog/6938/2865
>

大塩様
お世話になっております。

ご確認ごいただきありがとうございました。
USB-RS232C変換ケーブルでArmadillo-IoT A6のUSBポート接続し、
接続情報の「COM = '/dev/ttymxc2'」から「COM = '/dev/ttyUSB0'」に変更することで、目的を達成できました。

どうもありがとうございました。
これにて失礼いたします。