055 オシロをコントロールする(その6)

2022/06/30

実機/オシロ

t f B! P L

今回は,PyVISAパッケージが提供するバイナリデータを受信するためのquery_binary_values関数を使って,横河社製オシロが取り込んだ10万個の波形データをPCに転送する対処方法(試行錯誤した手順)について紹介します.

まず,10万個の波形データを,1万個ずつ,5000個ずつ,といった具合に,特定のサイズ毎に分割し,それらの分割した波形データの転送を連続してみて,10万個の波形データが問題なく転送できる分割サイズに関して調べてみました.
すると,5000個ずつでは駄目で,4000個ずつでは上手く転送できました.
つまり,4000個ずつ分割して転送すれば,10万個の波形データも無事PCに転送でき,これは波形データを100万個に増やしても,問題なく転送できることを確認しました.

これを実現するには,転送したい波形データを4000個ずつ分割して転送する処理を,ループを使って繰り返すPythonスクリプトを作成すれば良いことになります.

でもチョット待ってください.PyVISAパッケージが提供する便利な関数には,調べてみると,さらに使いやすくなる便利機能があるものです.
query_binary_values関数のドキュメントを,もう一度,よく見てみましょう.
最後のキーワード引数に,chunk_sizeというのがあるのに気が付きませんか?

そうです,query_binary_values関数の,chunk_sizeキーワード引数に,今回のように,分割サイズを指定することで,わざわざループ処理しなくて済みます.
(但し,このchunk_sizeキーワード引数で指定するのは,データ数ではなく,おそらくバイト数だと思われます.今回のケースでは,データ1個は2バイトなので,chunk_sizeには4000✕2=8000を指定しました)

このように,PyVISAパッケージが提供する各種関数は,そのままでは上手く処理できなくても,個々の測定機器に依存する値を少しばかり設定するだけで問題解決できることがあります.
今回行ったオシロのコントロールでは,最初からchunk_sizeキーワード引数の存在を知っていた訳ではありません.あくまでも,上記に示したように,最初は,特定のサイズ毎に波形データを分割して転送できるかどうか,試行錯誤してみました.
その結果,ある分割サイズを用いれば,100万個の波形データでも問題なく転送できることが判明したのです.
全てのケースにおいて,今回のように上手く対処できる訳ではありませんが,参考にして頂ければ幸いです.

なお,PyVISAパッケージには,別のchunk_sizeが存在します.こちらは,上記に示した分割して転送するデータのサイズではなく,PyVISAパッケージが分割して転送するデータを(一時的に)保存するためのメモリ容量に該当するもの(らしい)ので,紛らわしいですが(関連はするが)別の設定値であると認識して下さい.

以上で,PyVISAパッケージを使ってオシロをコントロールする手順の紹介を終わります.


QooQ