014 測定機器へ送受信するラッパー関数を工夫する

2022/03/21

紹介/PyVISA

t f B! P L

前の投稿,013 測定機器へ送受信するラッパー関数を作成するラッパー関数の作成方法を紹介しましたが,ここでは,さらにラッパー関数に工夫して,より使いやすくしてみます.

まず,測定機器へquery関数を使ってコマンドを送信するケースでは,何かしら返答を受信します.例えば,次に示すように,query関数を使って測定機器に設定されている周波数を問合せたとします.
    freq = inst.query(":SOURce:FREQuency?")

この場合,変数freqには周波数が代入されますが,注意しないといけないのは,代入される周波数は数値ではなく,数値を表す文字列ということです.
従って,周波数を数値として取得したいのであれば,float関数を使って,さらに文字列→数値へ変換する必要があります(これは,しばしば忘れてしまいがちです).
    freq = float(inst.query(":SOURce:FREQuency?"))

これに対し,文字列→数値への変換も行うラッパー関数を下記に示します.
    def get_freq(inst):
        return float(inst.query(":SOURce:FREQuency?"))

上記のラッパー関数を使うと,変数freqには,周波数が数値として取得できます.
    freq = get_freq(inst)

別のケースも紹介します.
時々見かけることもあると思いますが,下記のコマンドは,測定機器のモデル名やシリアル番号他を取得する,共通コマンドです.
    res = inst.query("*IDN?")

ここで,変数resには,製造業者名,モデル名,シリアル番号,ファームウェアのバージョンなどが,カンマで区切られた文字列として代入されます.
しかし,カンマで区切られた文字列のままだと使いにくいので,split関数を使って,文字列を分割します.
    (maker, model, serial, firmware) = inst.query("*IDN?").split(',')

この文字列の分割も,ラッパー関数で行うようにしましょう.
    def get_identification(inst):
        return inst.query("*IDN?").split(',')

使い方は,
    (maker, model, serial, firmware) = get_identification(inst)

query関数を使って,測定機器から情報を取得するケースでは,取得したデータを処理するようにラッパー関数を工夫することで,ラッパー関数をより使いやすくすることができます.

このブログを検索

自己紹介

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

QooQ