前の投稿,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関数を使って,測定機器から情報を取得するケースでは,取得したデータを処理するようにラッパー関数を工夫することで,ラッパー関数をより使いやすくすることができます.
このブログを検索
アーカイブ
-
►
2022
(55)
-
►
3月 2022
(24)
- 001 Pythonを使った測定システムの構築方法を紹介するブログを始めます
- 002 Miniforgeを使ってPython環境構築
- 003 condaコマンドを使ったパッケージのインストール
- 004 condaコマンドを使ったパッケージ管理
- 005 なぜPythonを使って測定機器をコントロールするのか
- 006 numpy配列とは
- 007 numpy配列の使い方
- 008 PyVISAの簡単な紹介
- 009 測定機器のコマンドを調べる
- 010 PyVISAを使った測定機器へのコマンド送受信
- 011 Pythonで関数を作る方法
- 012 コマンド文字列の作成方法
- 013 測定機器へ送受信するラッパー関数を作成する
- 014 測定機器へ送受信するラッパー関数を工夫する
- 015 Pythonを使って動作検証用の測定データを作成する
- 016 Pythonを使って動作検証用の測定データを作成する(その2)
- 017 Pythonを使って動作検証用の測定データを作成する(その3)
- 018 Pythonとオブジェクト指向
- 019 Pythonとオブジェクト指向(その2)
- 020 Pythonでクラスを作る
- 021 Pythonでクラスのコンストラクタを定義する
- 022 Pythonでselfを使ってクラスを定義する
- 023 ファンクション・ジェネレータをコントロールするPythonスクリプト雛形
- 024 PyVISAを使った測定機器のコントロールで重要なこと
-
►
3月 2022
(24)
分類
- その他/雑談 (7)
- 環境構築/Python (5)
- 実機/オシロ (6)
- 実機/ファンクションジェネレータ (5)
- 紹介/Python (5)
- 紹介/PyVISA (12)
- 紹介/オブジェクト指向 (5)
- 紹介/スクリプト (10)
自己紹介
- メジャーメントラボ
- C++やC#を使って数値解析プログラムの開発を長年行ってきました.
今は,Pythonを使った自動処理システムの開発をメインに行っています.
0 件のコメント:
コメントを投稿