pyserial で AT コマンド
2019-6-13 3:00 JST
古の cu コマンドなどを使いつつ python で AT コマンドを使う。
cu でシリアル
まずは cu のインストール。実は screen で出来るとか。でもここは強く cu にこだわってみる。すでにインストールしているので --dry-run のログを下に掲げる。本当にインストールするときは --dry-run をはずせばよい。
# apt install --dry-run cu Reading package lists... Done Building dependency tree Reading state information... Done cu is already the newest version (1.07-23+b1). 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. # cu -s 115200 -l /dev/ttyPS1
よくわからないが、chmod しないとだめ。たぶんオーナの問題。chown dailout とかすればよいのだろうか?(要確認)chown した方がセキュリティ上安全なはず。
# cu -s 115200 -l /dev/ttyPS1 cu: open (/dev/ttyPS1): Permission denied cu: /dev/ttyPS1: Line in use # ls -l /dev/ttyPS1 cr--r----- 1 root dialout 252, 1 Jun 13 14:33 /dev/ttyPS1 # chmod 660 /dev/ttyPS1 # ls -l /dev/ttyPS1 crw-rw---- 1 root dialout 252, 1 Jun 13 14:33 /dev/ttyPS1 # cu -s 115200 -l /dev/ttyPS1 cu: open (/dev/ttyPS1): Permission denied cu: /dev/ttyPS1: Line in use # chmod 666 /dev/ttyPS1 # cu -s 115200 -l /dev/ttyPS1 Connected. AT OK ~. ~. Disconnected. #
知ってるか?~("にょろ"あるいはチルダ).("てん"あるいはドット)で抜けられるんだぜ。ssh とかも ~ + Ctrl-Z でサスペンドできるしね。古の魔術。
python でシリアル
pyserial を使う。普通の open じゃだめ(でした)。その後、Serial で操作する。readline() して応答がなかったら timeout 後、0 byte 返ってくる。
$ pip3 install pyserial
cnum.py
import serial
with serial.Serial('/dev/ttyPS1', baudrate=115200, timeout=1) as sara201:
sara201.write(b'at+cnumrn')
sara201.readline()
b=sara201.readline()
cnum=b.decode().split(',')[1].split('"')[1]
print(cnum)
リンク集
「/dev/ttyS0 やっぱり chown するみたい。」という情報
ここのソースを参考に