今回の投稿は,PyVISAパッケージのBinaryデータの送受信に関係する関数を紹介する前に,Binaryデータの送受信そのものに関する一般的な決まりごとを紹介します.
決まりごとは,大きく分けて2つあります.
- データの先頭に,Binaryデータの種類を表すヘッダー情報が挿入されます
- エンディアン(ビッグ,リトル)を指定します
まず最初の,「Binaryデータの種類を表すヘッダー情報が挿入されます」について説明します.
これは,測定機器の技術資料の中で,Binaryデータの送受信の箇所を見れば,
#<digit><byte><data[0]>...<data[n-1]>
# : Binaryデータの開始
<digit> : 後続する<byte>の桁数を示す0以外の数字
<byte> : 後続するデータのバイト数を示す数字列
以下はBinaryデータが続く(測定機器やデータの種類によって異なる)
と送受信するBinaryデータのフォーマットに関する説明があると思います.
上記のうち,最初の #<digit><byte>まではBinaryデータではなく,この部分こそが,「Binaryデータの種類を表すヘッダー情報」にほかなりません.
この, #<digit><byte>で表されるヘッダー情報は,いわゆるIEEEタイプのヘッダーで,これはPyVISAパッケージでBinaryデータを送受信する関数のデフォルトとなっています.従って,ヘッダー情報の種類を,header_fmtキーワード引数で指定しなければ,このIEEEタイプのヘッダーが,実際に送信するBinaryデータの先頭に自動で挿入され,受信するBinaryデータから自動で読み飛ばされます(ので,PyVISAパッケージを使う場合は,このヘッダー情報の部分は考慮しなくて良い).
IEEEタイプ以外のヘッダー情報もありますが(PyVISAでは,"hp"と"empty"が指定可能),IEEEタイプ以外のヘッダー情報を採用した測定機器の例をメジャーメントラボは知りません(絶対に無いとは言い切れません).
結論をまとめると,
PyVISAパッケージを使う場合,Binaryデータの先頭に挿入するヘッダー部分は無視してよい(PyVISAパッケージが自動で挿入および読み飛ばししてくれる)が,万が一,IEEEタイプ以外のヘッダーの場合は,別途対処が必要.
となります.
長くなってきたので,
2. エンディアン(ビッグ,リトル)の指定
に関しては,次の投稿で紹介します.
0 件のコメント:
コメントを投稿