温度が計算通りきちんと反映されるかを知りたくて、Teratermの表示を流れているをみていたが、よくわかならい。VitualBoxでデータを加工する方法ならPythonがいいが、それだったらMacでできないのかなって調べたらできそうだった。
PySerial
PySerialを使えばMacでも、PythonでUSB-UART変換で使えそうな感じだ。で、やってみた。
Anacondaの初期状態での”installed"には含まれていなかったのでPythonターミナルで
$ conda install pyserial
でインストールして使用する。
上のページでも書いたが、Macのterminalから接続デバイスをまず探しておく。そのときはVirtualBoxで使用しているポートを外しておいてやらないといけない。VirtualBoxで掴んでいると、ここには表示されないみたいだった。私の場合、下記コマンドで4つ表示された。
$ ls /dev/tty.* /dev/tty.Bluetooth-Incoming-Port /dev/tty.Powerbeats3-WirelessiAP /dev/tty.Powerbeats3-SPPServer /dev/tty.usbmodemC_73_3349211
最後の奴がUSBシリアルだと思われる。あとの3つはわからない、USBシリアルを外すと最後のやつがなくなるので、間違いない。
途中過程省きますが、これで、一応温度が出ている。
import serial ss=serial.Serial("/dev/tty.usbmodemC_73_3349211",115200) while True: lines=ss.readline() print(lines) ad1u=int(lines[37:39],16)*4 ad1h=int(lines[45:47],16) & 0x03 ad1=(ad1u+ad1h)*4 t=(ad1-600)/10 print(t)
で、そのコンソール出力結果です
b':78811501CF81003BB67827EB000B291B000031FFFFFFFDAC\r\n' 18.8 b':78811501CF81003BB678282B000B291B000031FFFFFFFD6B\r\n' 18.8 b':78811501CF81003BB678286B000B291B000031FFFFFFFD2B\r\n' 18.8
で、このreadline()なんですがbyte型が返される。これがよくわからんが、どうもbyte型の配列のようだ。なので、配列スライスで、値がいい感じであったので、上の方法で一応値は取り出せて計算できている。一応目的は達した。
次は、mbedで読み込みをおこなってみる。
コメントを追加