Python言語で
DACSのWi-Fi機器(DACS-9600KWF)を操作 その1
 

  DACS-9600KWFシリーズのデバイスが接続できている環境があるものとします。 接続ができていない場合は、こちらをご覧いただいて仮接続を行ってください。-- DACS-9600KWF Wi-Fi仮接続

まずは Windowsパソコンに Python をインストール

  Python は、コンパイルが不要なインタープリタ形式の言語で、プログラミング開発が素早くできるメリットがあります。 無償で配布されていますので、インターネットで「Python インストール」にて検索し、そちらを参考にして Python の動作環境を準備してください。 対象となるバージョンは 3.9 です(2021年1月時点)。

サンプルプログラムの準備

  こちらをダウンロードしてください -- Python Wi-Fi機器用サンプルプログラム(1KB)
  解凍して、サンプルプログラム d96wf.py を適当なフォルダに格納します。

        カウンタ用サンプルプログラムは こちらへ

        PWMパルス出力サンプルプログラムは こちらへ

Python で DACS-9600KWF デバイスを操作

  サンプルプログラム d96wf.py の d96wf.connect(('192.168.0.40', 0x2616)) 行の IPアドレス指定が、 サンプルでは 192.168.0.40 となっていますが、これをデバイスに設定しているIPアドレスに変更してください。 仮接続の場合は '192.168.1.10' に変更してください。
  0x2616 はソケット番号です。このまま変更しないでください。

  コマンドプロンプトを開いて、ディレクトリを d96wf.py のあるフォルダに移動し、 d96wf.py と入力してサンプルを実行します。 これで、DACS-9600KWFシリーズの機器とデータの送受信ができるようになります。
  コマンド文字列(例 : 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-9600KWF デバイスに接続
try:
    d96wf.connect(('192.168.0.40', 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.40', 0x2616))   デバイスに接続します。
      '192.168.0.40' は設定しているIPアドレスに一致させます。
      仮接続のAPモードでは '192.168.1.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製品を掲載しています。

    ダックス技研株式会社     〒709-0721 岡山県赤磐市桜が丘東5-5-380

Copyright(C) DACS electronics