前回の投稿 024 PyVISAを使った測定機器のコントロールで重要なことで,「意図したことに対して成功しなかった」ことを検出する大切さを紹介しました.
今回は,さらに前の投稿 023 ファンクション・ジェネレータをコントロールするPythonスクリプト雛形の最後に述べた,2個のラッパー関数を(わざわざ)定義した理由も兼ねて,紹介します.
まず,PyVISAパッケージのwrite関数およびquery関数を使って,測定機器にコマンドを送受信した後で,
last_status
の値をチェックするようにしましょう.但し,このlast_statusの値をチェックするということは,ネット上では,本ブログ以外,ほとんど紹介されていません.
不思議なことに,PyVISAのドキュメントを見ても,last_statusの説明は,
「Last status code for this session.」
と,そっけない説明です(Googleで,「PyVISA last_status」で検索しても,ほとんどヒットしません).
この last_statusの値とは,PyVISAのwrite関数やquery関数を使ってコマンドを送受信した結果として,それが正常だったのか,何かしら不具合を生じたのかを調べるためのものです.
従って,last_statusの値をチェックするように,writeラッパー関数を書き換えると,
#---------------- writeラッパー関数
def write(self, command):
self.inst.write(command)
if self.inst.last_status != pyvisa.constants.StatusCode.success:
# 不具合発生のケース
といった具合に,last_statusの値が,pyvisa.constatns.StatusCode.successとは異なった場合は,何かしら,コマンドの送受信で不具合が発生していることになります.
では,不具合発生のケースとは,どのようなケースがあるのでしょうか?
それは,last_statusの値の一覧の資料に紹介されています.
上記の資料を見ると,予想以上に,さまざまなパターンの不具合発生のケースがあることに気づくと思います.
もちろん,last_statusの値をチェックすれば万全とまではいきませんが,少なくとも,コマンドの送受信で判明する幾つかの不具合は,このlast_statusの値をチェックすることで,無事検出できることになります.
コマンドの送受信の度に,毎回毎回,last_statusの値をチェックするのは現実的ではありませんが,上記に示したように,last_statusの値のチェックをラッパー関数内で処理することにすれば,Pythonスクリプトは複雑にならずに済みます.
「意図したことに対して成功しなかった」ことを検出するのは大変ですが,ラッパー関数を工夫することで,システム構築が少しでも楽になるよう心がけたいものです.
このブログを検索
アーカイブ
-
►
2022
(55)
-
►
4月 2022
(18)
- 025 PyVISAでコマンドを送受信した後でlast_statusの値をチェックする
- 026 PyVISAとExcelファイルで測定機器をコントロールする
- 027 Excelファイルから測定機器をコントロールするデータを読み込む
- 028 Excelファイルから測定機器をコントロールするデータを読み込む(その2)
- 029 Excelファイルから測定機器をコントロールするデータを読み込む(その3)
- 030 測定機器から得たデータをExcelファイルとして保存する
- 031 測定機器から得たデータをExcelファイルとして保存する(その2)
- 032 測定機器から得たデータをExcelファイルとして保存する(その3)
- 033 測定機器をコントロールするためのExcelファイルの読み書き時間
- 034 PyVISAとxlwingsのパッケージを使ってExcelから測定機器をコントロールする
- 035 ExcelからPythonスクリプトを実行する
- 036 ExcelからPythonスクリプトを実行する(その2)
- 037 PyVISAを使ってASCIIデータとBinaryデータを送受信する
- 038 PyVISAを使ってASCIIデータを送受信する
- 039 PyVISAを使ってBinaryデータを送受信する
- 040 PyVISAを使ってBinaryデータを送受信する(その2)
- 041 PyVISAを使ってBinaryデータを送受信する(その3)
- 042 PyVISAを使ってBinaryデータを送受信する(その4)
-
►
4月 2022
(18)
分類
- その他/雑談 (7)
- 環境構築/Python (5)
- 実機/オシロ (6)
- 実機/ファンクションジェネレータ (5)
- 紹介/Python (5)
- 紹介/PyVISA (12)
- 紹介/オブジェクト指向 (5)
- 紹介/スクリプト (10)
自己紹介
- メジャーメントラボ
- C++やC#を使って数値解析プログラムの開発を長年行ってきました.
今は,Pythonを使った自動処理システムの開発をメインに行っています.
0 件のコメント:
コメントを投稿