|
|
Python言語で DACSのWi-Fi機器(DACS-9600N)を操作 その1 |
DACS-9600Nシリーズのデバイスが接続できている環境があるものとします。
まずは Windowsパソコンに Python をインストール
Python は、コンパイルが不要なインタープリタ形式の言語で、プログラミング開発が素早くできるメリットがあります。
無償で配布されていますので、インターネットで「Python インストール」にて検索し、そちらを参考にして Python の動作環境を準備してください。
対象となるバージョンは 3.9 です(2021年1月時点)。
サンプルプログラムの準備
こちらをダウンロードしてください -- Python Wi-Fi機器用サンプルプログラム(1KB)
解凍して、サンプルプログラム d96wf.py を適当なフォルダに格納します。
カウンタ用サンプルプログラムは こちらへ
PWMパルス出力サンプルプログラムは こちらへ
Python で DACS-9600N デバイスを操作
サンプルプログラム d96wf.py の d96wf.connect(('192.168.0.42', 0x2616)) 行の IPアドレス指定が、
サンプルでは 192.168.0.42 となっていますが、これをデバイスに設定しているIPアドレスに変更してください。
初期設定で接続の場合は '192.168.96.10' に変更してください。
0x2616 はソケット番号です。このまま変更しないでください。
コマンドプロンプトを開いて、ディレクトリを d96wf.py のあるフォルダに移動し、 d96wf.py と入力してサンプルを実行します。
これで、DACS-9600Nシリーズの機器とデータの送受信ができるようになります。
コマンド文字列(例 : W0000000)をキー入力し、enterキーを押すと、コマンドデータを画面表示後、デバイスに送信し、受信した応答文字列を画面表示します。 enterキーのみを押すと、プログラムを終了します。
デジタル出力コマンド W0123456 を送信し、デジタル入力データ R0xxxxxx 受信例
サンプルプログラム d96wf.py の内容
import socket
# TCP/IP ソケットオブジェクトの作成
d96wf = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# タイムアウトの設定 2秒
d96wf.settimeout(2)
# DACS-9600N デバイスに接続
try:
d96wf.connect(('192.168.0.42', 0x2616))
except:
print('no device') # タイムアウトエラー
exit()
while True:
# 送信するコマンド文字列をキー入力
writedata = input('keyin = ') + chr(0xd)
if len(writedata) < 2: break
print(writedata)
# cp932文字列をASCII文字列に変換
wdata = writedata.encode('ascii')
# データ送信
d96wf.sendall(wdata)
# データ受信
try:
rdatabuf = d96wf.recv(1024)
except:
print('no return') # タイムアウトエラー
continue
# ASCII文字列をcp932文字列に変換
rdata = rdatabuf.decode('cp932')
print(rdata)
d96wf.close() # 接続終了
サンプルプログラム d96wf.py の動作
socket() TCP/IP通信の準備をします。
settimeout(2) タイムアウト時間を設定します。
connect(('192.168.0.42', 0x2616)) デバイスに接続します。
'192.168.0.42' は設定しているIPアドレスに一致させます。
初期設定で接続の場合は '192.168.96.10' となります。
0x2616 はソケット番号です。このまま変更しないでください。
キーボードからコマンド文字列を入力し、その文字列に復帰コード(16進数 0xd)を追加します。
入力するコマンドデータの例 W0000000 (注1を参照)
writedata を、ASCII文字列の wdata に変換します。
sendall(wdata) wdata をデバイスに送信します。
recv(1024) 最大長1024バイトとして、受信したデータを rdatabuf に格納します。
rdatabuf の ASCII文字列を cp932コード文字列に変換します。
受信データの例 R0FFFFFF (注2を参照)
(注1)
DACSのデバイスでは、送信文字列 (例)W0000000 の最後に、復帰コード(16進数 0xd)が必要です。
キーボードから入力したデータの最後は、復帰改行コード(16進数 0xa)となるため、
入力データの最後に chr(0xd) を追加していることに注視してください。
ユーザプログラミングでも、送信文字列の最後には、必ず chr(0xd) を追加してください。
(注2)
受信文字列の最後には、復帰コード(16進数 0xd)が追加になって、受信文字数に含まれています。
(完)
このページに直接こられた方は、こちらをクリックして、
ダックス技研株式会社 計測制御用電子機器のHOMEに移動してください。
USB接続のDIO、計測ユニットなどDACS製品を掲載しています。 |
|