テクシオ・テクノロジーによるおじさんのためのIOT講座


(5) Pythonによる電源制御プログラミング(TEXIO API)

 

本ページではGUIの作成とボタン処理を行うGUIライブラリ(Tkinter)、一定周期で処理を
行うインターバル動作、変数の共用を行うグローバル指定、通信を行うためのTEXIO API
のWindows DLLの利用方法
を説明いたします。Windows DLLに直接アクセスするため
本プログラムはWindows専用となります。

制御対象は弊社のPSFシリーズ(IF-60RUによるUSB)となっていますが、他のWindows DLLを扱う場合も記述方法は参考になると思います

環境の準備などの手順はここでは扱いません、Python本体の他に様々な開発ツールがありますのでインターネットで検索してpython3 の実行環境をそろえてください。また、ファイル処理やグラフ出力などはインターネットに豊富にサンプルがありますので必要に応じて追加してみてください。



今回作成するPython/Tkinter でのGUI表示


Pythonでの画面の構成としてはボタン:9個、テキストボックス:4個、ラベル:1個で、
通信のOPEN/CLODE、アプリ終了、電圧値・電流値設定と1秒ごとの読取の開始と終了を
割当ています。 処理としてはボタンのほかに1秒のインターバルでの動作も盛り込んであります。

本アプリはPSFシリーズ用のWindows向けTEXIO-APIUSBドライバ が必要となります、
PCにあらかじめインストールをおこなってください。



1.初めに必要なライブラリとグローバル変数を登録します。
  
   ライブラリ登録はimportで行います、API利用のためにctypesを追加しています。
   Pythonの変数は何も指定しないとローカル変数になるようなので、計測器用
   のPCアドレス変数PC_ADDRを宣言します。複数の機器を制御する場合は、
   変数を増やすことで対応します。

2.画面のパーツを登録します。 
 
   画面パーツはgridで配置を行っています。画面の解像度や分解能、OSの種類によって
   サイズが変わってしまう症状があります。
   複数の環境で利用する場合はかなり余裕を持った配置が必要になります。
   細かいサイズ・位置を指定したい場合はplace などを使用してください。

   ボタンやコンボボックスなどのイベントは必要に応じてここで登録しますが、
   種類によって登録方法が異なります。サンプルでは測定モードの切替えを追加して
   います。

3.TEXIO USB API(Windows DLL)の定義を行います。

 
   Windowsの環境によりAPIのフォルダが異なるので切り分けをおこない、ctypesで
   ライブラリをロードします。
   Open/Close/Send/Reciveの各API関数についてエントリー、パラメータと戻り値
   の型を指定します。文字列は文字配列ポインタとなることに注意してください。
   最後のmainloop()はTkinterの動作に必要です。

4.イベントの処理を登録します。
 
   ボタンの有効・無効は['state']で切替えます。

   テキストの取得はget()、削除はdelete()、追加はinsert ()を使用します。
   指定時間後にイベントを発生させる場合はafter ()を使用します、ここでは1000ms
   後に自分自身を指定しているので1秒ごとに処理が行われます。

   デバイスを指定するinstrは、それぞれの処理でグローバル宣言をしておかないと、
   ローカル変数が割り当てられ正しく動作しなくなりますので注意してください。

   扱う文字列は計測器がASCIIですが、pythonはutf-8が標準になるため、送受信時に
   変換を行います。また、受信時に余計なヌルデータの削除が必要です。
   サンプルアプリでは電圧・電流の設定を追加しています。

5.まとめ
  実用アプリケーションには至っていませんが、アプリの最低限の内容を取り上げました。
   ・Python3に対応しています、Python2で使用する場合は多少の修正が必要です。
   ・GUIは標準のTkinterを使用し、画面配置は単純なgridを利用しました。
   ・GUIのボタンやテキストなどの最低限の扱いを記述しました。
   ・簡単なインターバル処理の方法を記述しました。
   ・通信はWindows DLLのTEXIO APIを使用しました。
   ・最低限のエラー処理を記述しました。
   ・グローバル変数の利用方法を記述しました。
   ・機器を増やす場合は機器のグローバル変数を追加して対応します。

  後は使う方が必要なものを追加してご利用ください。

目次に戻る




PSFシリーズUSB制御向けサンプルコード

©Copyright 2020 TEXIO TECHNOLOGY All Rights Reserved.