今回は,横河社が提供しているDLLライブラリを使って,横河社製オシロから,波形データをPCにBinaryデータとして転送する方法について,簡単に紹介します.
なお,横河社のホームページから,ダウンロードできるDLLライブラリのファイルに添付されている技術資料のサンプルプログラムは,ASCIIデータとして転送するケースのみ提供されています.
従って,Binaryデータとして波形データを転送するサンプルプログラムは,ネットで偶然入手したサンプルプログラム(NEC社製PC98用のN88Basicで作成されたものなので,かなり古いですが,現在でも互換性はあると思います)を元にしています.
Binaryデータとして波形データを転送するプログラム本体を紹介しても,あまり意味がないので,PyVISAパッケージを使ったPythonスクリプトとの違いを強調して,プログラムの処理の流れを紹介します.
- 最初に,Binaryデータのヘッダー部分を読み込みます.ここには,波形データの総バイト数が収納されています(ヘッダー部分のフォーマットはIEEEタイプです)
- 読み込むバイト数を指定して,波形データをBinaryデータとして読み込みます.但し,実際に読み込まれるバイト数は,指定したバイト数よりも小さくなることがあります.また,波形データの終端まで達したかどうかを示すフラグも出力されます
- 2で読み込んだバイト数が,波形データのバイト数と一致するまで,2を繰り返します.その際,読み込んだ波形データのバイト数は,その都度加算し,加算したバイト数が波形データのバイト数と一致したら,波形データの読み込みが完了したものとみなします
- 3の波形データの読み込みが完了するまでに,波形データの終端まで達してしまった場合は,何かしら不具合が発生しているので,エラー判定とします
上記に示すように,横河社が提供するDLLライブラリを使って波形データをPCに転送するケースでは,波形データを一度に転送するのではなく,ある程度のサイズの波形データ毎に転送を繰り返すことになります.
このある程度のサイズの波形データは,測定機器の機種に異なる値となっているのかもしれません.技術資料には,サイズの具体的な値は特に記載されていないと思います.
一方,PyVISAパッケージで提供されているBinaryデータの転送関数query_binary_valuesは,このような,ある程度のサイズの波形データ毎に転送を繰り返す方法に,(特に何もしなくても)上手く対処してくれます.
但し残念なことに,Binaryデータの転送方法が同じであったとしても,全ての測定機器に対応できる訳ではありません.
今回採用した横河社製オシロでは,PyVISAパッケージのquery_binary_values関数を使って,波形データの総数が1万個では問題なく転送できましたが,10万個では転送できませんでした.
おそらく,10万個の波形データは一度に転送できず,何回かに分割して転送を繰り返すが,query_binary_values関数が,それに上手く対処できなかったのが原因だと思われます.
次回の投稿では,query_binary_values関数を使って,10万個以上の波形データの転送を行う対処方法に関して簡単に紹介します.
0 件のコメント:
コメントを投稿