動機
- (1)を見てください
環境
- Windows10
- Anaconda(3.x)
目標
- pySerialでRS232Cインターフェイスを持つ機器とシリアル通信する
pySerialを入れる
なぜ入れるか
- 多くの測定器具はRS232Cインターフェイスと、シリアル通信によるコマンド制御が用意されている
- pyserialとコマンド制御機構があれば、基本的に制御できるはず
- 詳しくは公式サイトを見てください
入れ方
- conda promptから
conda install -c anaconda pyserial
使い方
JupyterNotebookでの実行を前提とします。(pythonスクリプトでも同様なはずです)
例
まずはパッケージをimportします。パッケージ名と違うので注意してください。
import serial
import time
DSubをUSBに変換して繋ぐなりして、PCにデバイスを接続します。
Windowsの場合はデバイスマネージャーからCOM(数字)みたいなのを探してください。COM3と書かれたデバイスが該当デバイスの場合
COM="COM3"
bitRate=9600
ser = serial.Serial(COM, bitRate, timeout=0.1)
bitRateはお好みで。
これでシリアル通信ができるので、あとは各測定器具のコマンド集を見て
ser.write(b"H:2-\r\n")
などと入力してください(例はシグマ光機SHOT102のコマンドで、2軸目に対して、原点に復帰する命令です。)
-
\r\n
は改行文字です。詳しくはこちらを御覧ください。 -
()の中のbは文字列であることを意味しています。
bを書かない場合は、一文字しか送れません。
# time.sleep(0.1)
print(ser.read_all())
使用するデバイスによっては、命令が実行できたかどうかが、read()
によって返されるものがあります。
-
read()
一文字 -
read_line()
一行 -
read_all()
すべて
で返された文字列が読めるようです。
これまでのコードを同時に実行するときは、time.sleep(0.1)など、数秒待たないと失敗することがあるかもしれません。
ser.close()
命令の後は、シリアル通信を終了するのを忘れないこと。
以上です。ありがとうございました。
次の記事では連続実行してリストに入れてpandasでデータフレームにしてcsvに吐くコードまで書きます。