(未完成記事) Mac で USB ケーブルでのシリアル通信でコマンドを投げて測器からデータを取得する (2) 必要そうな知識
必要そうな知識をまず適当に書き出しておきます。
ボーレート
1 秒間に通信するデータのビット数 (bps) で表される通信速度のことです。データを送り出す USB (シリアル通信) ケーブルで繋がっている測器のボーレート (通信速度) が分かっていないと、screen だろうが Python:pyserial だろうが cat を使おうが、正常にデータを読み取れません。詳しくはこちらのサイト:
シリアルコンソールが文字化けしたら、まずはボーレートを確認しよう - Qiita
ちなみに、cat を使って読むときは
/boot/cmdline.txt
を書き換える必要があります。(多分…これを書き換えて再起動したら cat で読めた記憶が…) 詳しくはこちらのサイト:
測器 (シリアル通信機器) のボーレートが知りたいときは
sudo ssty -a < /dev/ttyなんとか
のように ssty コマンドを使用します。詳しくはこちらのサイト:
Linuxで直接シリアルデバイスを利用する際の注意点等: 猫にコ・ン・バ・ン・ワ
cat で読む・データを送る
シリアル通信を cat を使って直接読んじゃうというコマンド:
cat /dev/ttyなんとか
逆に、
echo "Hello" > /dev/ttyなんとか
で、文字列を測器 (機器) に送り付けることもできます。私が使用する測器は USB-A のプラグがスケルトンになっていたため、ちゃんと送れていると光りました。これで、データ送付ができているらしいのが確認できたのはよかったです。詳しくはこちらのサイト:
Linuxにおけるシリアルポートのトラブルシューティング - Qiita
Raspberry Piのシリアルポートをコマンドラインで動かす: マイコン漬け
Python で読む
私は Raspberry Pi を使うことが前提なので、ラズパイのデファクトスタンダードらしい言語で Python で読むことにしました。必要な Python のモジュールは pyserial. Mac に入れるなら Python 自身も最新に近いものにアップデートした方がよいようです。(少なくとも Python 3) この Python アップデートと pyserial インストールは後日記事を改めて。
USB ケーブル機器がちゃんと認識されたかの確認
機器と Mac (Linux など) を USB ケーブルで接続したあと
dmesg
コマンド。これで、デバイスのアドレスが /dev/ttyxxx の xxx 辺りが分かるはず。ただ、このままだと、ちょっと読みづらいので
dmesg | grep tty
でもよいと思います。詳しくは: