LabVIEWでバイナリファイルの書き込みや読み取りをおこなう

更新しました Aug 1, 2019

使用製品

Software

  • LabVIEW

問題

LabVIEWでバイナリファイルの書き込みや読み取りをおこないたいです。また、2次元配列のデータを読み書きしたいため手順を理解したいのですが、どうすればよいですか?

解決策

LabVIEWのプログラムは、関数パレットのプログラミング>>ファイルI/Oにあるバイナリファイルに書き込む関数およびバイナリファイルから読み取る関数を用いることでバイナリファイルにアクセスすることができます。LabVIEWサンプルファインダ(ヘルプ>>サンプルを検索...)の基本機能>>ファイル入力と出力>>バイナリにこれらの関数を使用したサンプルコードがあります。 
 

追加情報

バイナリファイルにアクセスする方法は、別のファイル形式と同様のコードストラクチャを用います。特に、ユーザがファイルを開く、必要に応じて読み取りおよび書き込み関数を呼び出す、そしてファイルを閉じる流れは同じです。下図は、32ビット符号付き整数値をバイナリファイルに書き込む方法を示しています。 


 

バイナリファイルを読み取る際、ユーザはファイルにデータを書き込んだ際のフォーマットを知っている必要があります。バイナリファイルに書き込む際は、データが後で読み取れるようにフォーマットに気をつける必要があります。これらのバイナリファイルの構造はユーザの定義次第で、ユニバーサルなバイナリファイル用のフォーマット(ASCIIではない)がないため、他のアプリケーションやオペレーティングシステムでこのようなバイナリで保存されたデータを読むことは、容易ではありません。 

整数をバイナリファイルに書き込む際、整数のビットがファイル内でビットとしてマッピングされます。たとえば、I32をバイナリファイルに書き込む場合、32ビットのスペースを必要とします。 

I32の2D配列をバイナリファイルに書き込むことは、配列は行と列数が異なることがあるためより複雑です。この2D配列データをシンプルにするには、これらの次元を記述するヘッダとともに保存することです。LabVIEWでバイナリファイルから2D配列を読み取るには、8バイトのヘッダが必要です。このヘッダを作成する方法は、2通りあります。 
 

  • 手動の方法: 配列サイズ関数は、これらの値を取得することができます。バイナリファイルに書き込む関数の配列または文字列サイズを先頭に追加?入力端子にFALSE定数を配線する必要があります。
  • 自動の方法: 自動的にヘッダを生成するには、バイナリファイルに書き込む関数の配列または文字列サイズを先頭に追加?入力端子にTRUE定数を配線します(ただし、必須ではありません)。


一般的には、自動的にヘッダを作成することをお勧めします。理由は、ヘッダはディスクに保存するデータタイプによって変わるからです。しかし、ユーザが明確にヘッダ構造を知っている必要がある場合があります。このケースでは、オンラインリファレンスを参照することで異なるデータタイプに対して必要となるヘッダを決定することができます。 
 

下図は、シンプルに2D配列をバイナリファイルへ書き込み、自動的にヘッダを生成する方法を示しています。 



 

バイナリファイルを読み取るには、想定するデータタイプをデータタイプ入力端子に配線します。たとえば、32ビット整数の2D配列からなるファイルを読み取るには、32ビット整数の2D配列定数をデータタイプ入力端子に配線します。LabVIEWは、ダミーデータタイプがファイルに保存されている適切なヘッダを想定し、そしてバイナリ情報の抽出に使用します。下図は、バイナリファイルから2Dデータを読み取る方法を示しています。 


この記事はお役に立ちましたか?

いいえ