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


(7) PythonによるVISAプログラミング2(拡張編)

 

本ページでは以前作成したマルチメータ向けのVISAライブラリ(PyVISA)を使った一定周期で受信を行うサンプルを再利用します。ログ表示とそのログをCSVで保存する処理についてと
アプリの配布についての解説となります。コマンドのテキストを変更することでマルチメータ以外の機器に対応できるようになっています。おまけとしてPythonが無い環境向けのアプリ作成などの情報を追加してあります。

環境の準備などの手順はここでは扱いません、Python本体の他に様々な開発ツールがありますのでインターネットで検索してPython3 の実行環境をそろえてください。Tkinterはpytk
モジュールをインストールしてご利用ください。



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


画面要素の追加としてはログデータを表示するTreeviewと縦スクロールバー、ログのクリアと保存のボタン、ファイルの保存場所を選択するダイアログとなります。また、送信コマンド
についても履歴を使えるようにテキストボックスをドロップダウンに変更し、ボタンをまとめるフレームを追加しています。



1.追加するライブラリは以下の通りです。
  
   ログに必要な日時取得、ログファイル書込用のCSV、フォルダ選択用のファイル
   ダイアログの3種類です、ログ表示自体はTkinterのtreeviewを利用します。

2.画面のテキストボックスをコンボボックスに変更します。
  
   送信下コマンドを履歴として利用できるようにコンボボックスに変更しています。
   あとで送信時にコマンドを追加する処理を記述します。

3.ボタンをFrameでまとめます。
   1つのgridにボタンを複数表示するためにFrameを使用し、フレームに追加するボタン
   はmasterをフレームに指定してgridで配置します。
  
  
   フレーム内のgridはrow = 0 ,colum = 0から始まります。ボタンの上下に余白を
   追加する場合はpadyを指定、左右に余白を追加する場合はpadxを指定します。
   また、TEXTなどがgridを横方向にまたぐ場合は、Columnspanを指定します。

4.画面にログ表示のTreeviewを追加します。
  
   ログ表示のためのTreeviewを追加しますが、縦スクロールバーを使うために先に
   フレームを追加、その中にTreeviewとバーを追加し、スクロールバーとTreeviewの
   連携を指定します。Treeviewは3列としていますが必要に応じて拡張してください。
   今回はTreeviewを使用しましたが複数列が不要であればScrolledtextでも同様の
   表示が可能です。

5.イベントの処理を登録します。
  
   送信ボタンの処理に送信文字列をコンボボックスに登録する処理と受信データをログ
   に追記する処理を追加しています。
  
   ファイル保存とログクリアを記述します。CSVとファイルダイアログのモジュールを
   利用していますので記述自体は簡単になっています。
  
   インターバル処理にログへの出力とスクロールを追加します。受信データはカンマで
   区切って2項目まで使っています。インターバル時間は約1秒になっていますが、
   必要に応じて修正してください。
   以上の対応でログの表示と保存までが追加されました。

6.実行アプリケーションについて
   Pythonのファイルはテキストファイルであり実行するのに普通は開発環境 が必要
   です。Pythonの拡張としてPyInstaller という実行ファイルを作成するツールが
   用意されています。他のPCで実行する場合はアプリのインストールは不要で、
   実行ファイルとライブラリファイル をコピーすればプログラムを利用できるように
   なっています。ソースコード内で宣言されているモジュールは一緒にパッキング
   されるので問題ありませんが、モジュール自体が他のライブラリを参照している
   場合はアプリケーションが強制終了する場合があります。必要とされるライブラリ
   をよく確認してください。本アプリの実行では利用するPCでVISAライブラリの
   インストールが必要になります。ナショナルインスツルメンツ製NI-VISA などを
   利用してください。
   また、プロンプト画面を消すなどのオプションを指定して実行ファイルを作成する
   と実行ファイルがウイルスとして判断され、隔離・駆除対象となることがあるので
   注意してください。見栄えを気にする場合はインストールタイプの実行ファイルを
   作成するツールの利用やが必要です。

7.使用上の注意
  ・Socket通信のデバイスについて
   NI-VISAでLAN(Socket通信)を使用する場合は、NI-MAXでネットワークデバイスへ
   RawSocketデバイスの登録していないとFindボタンによる一覧に表示されません。
   登録しない場合でもDeviceListに直接デバイスの指定を入力することで接続できる
   ようになります。IPアドレスが192.168.1.1、Socketポートが1026の場合に以下
   の形式となります。
      指定の例: TCPIP0::192.168.1.1::1026::SOCKET

  ・Linuxでの利用について
   本アプリケーションをUbuntuなどのLinuxで利用する場合は、NI-VISA(Linux版)、
   Python3-tk又はpytk、Python3-pyvisaのインストールが必要になります。
   ARM系のCPUではNI-VISAではなくPyVISA-py、pyUSB、pySerialなどを
   インストールします。またUSB-CDCの機器を利用する場合は初期状態では読書きの
   権限がないためエラーが発生します。管理者権限を使って/dev/ttyACM*の権限を
   修正するか、dialout のグループに利用しているユーザーを追加してください。
      設定の例: sudo chmod 666 /dev/ttyACM0
            sudo gpasswd -a ユーザー名 dialout


   組込用LinuxではUSB-CDCおよびUSB-CDCACMの認識が無効になっている場合が
   あるようです。構成用ツールなどで有効にするか手動でデバイスを登録してください。

8.まとめ
   実用アプリケーションには至っていませんが、データを扱うアプリとしての必要な機能
   は実装されました。表の編集やグラフなどは使えるライブラリによりかなり差がある
   ため今回は扱いませんでした。

目次に戻る



ソースコードのダウンロード   実行形式のダウンロード(VISAライブラリが必要です)

©Copyright 2020 TEXIO TECHNOLOGY All Rights Reserved.