025 PyVISAでコマンドを送受信した後でlast_statusの値をチェックする

2022/04/01

紹介/スクリプト

t f B! P L

前回の投稿 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スクリプトは複雑にならずに済みます.

意図したことに対して成功しなかった」ことを検出するのは大変ですが,ラッパー関数を工夫することで,システム構築が少しでも楽になるよう心がけたいものです.

このブログを検索

アーカイブ

自己紹介

C++やC#を使って数値解析プログラムの開発を長年行ってきました.
今は,Pythonを使った自動処理システムの開発をメインに行っています.

QooQ