From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

cancel
Showing results for 
Search instead for 
Did you mean: 

LabViewでバイナリファイルをcsvに変換する方法

Solved!
Go to solution

LabViewでバイナリファイルをcsvに変換する方法を探しています。

0 Kudos
Message 1 of 7
(2,273 Views)

tdakさん、はじめまして。

 

こちらのバイナリファイルは、中身がどのようなフォーマットで作成されているかは把握されていますでしょうか。

基本的には、

1. バイナリファイルを読み込む

2. フォーマットを参照して、バイナリファイルを変換する

3. 変換したデータをカンマ区切りの文字列にするか、文字列の配列にする

4. それをCSVとして書き出す

という流れです。

 

ただ、フォーマットがわからないと、文字列に戻せないと思いますので、まずはそちらからかと思います。

0 Kudos
Message 2 of 7
(2,261 Views)

ke525 様

 

素人のため大雑把な質問で大変失礼いたしました。

おそらく、日付がフォーマットになっていると思います。

 

前任の者から添付したブロック線図のプログラムを引き継いだのですが、なぜかうまく作動しません。

具体的には、バイナリファイルの全データを変換できずにいます。

Highlight Executionの状態でプログラムを実行するとフロントパネルから実行するよりはるかに多くのデータをcsvファイルに変換することができました。

0 Kudos
Message 3 of 7
(2,223 Views)

tdakさん、こんにちは。

 

まず現状ですが、

・バイナリデータをDoubleの2次元配列で変換しながら読み込んでいます。

なので、もし内容が浮動小数点でない(日付フォーマットのデータ)のであれば、この時点で数字が意味ないものになってしまうと思います。

VIとファイルを共有いただければ、少し試すことはできると思います。

 

・Highlightでデータ数が増える現象について

これはキューの利用が関わっています。上のループの右側でキューを削除していると思います。

下のループでデキューでデータを取っているところが実行される前にキューが削除されると、下のループからデータが出てこなくなります。

なので、Highlightでゆっくり実行すると、キュー削除が呼ばれる時間を遅らせられるので、その間にデータが取得できているのかと思います。

キューの中身が0になるまでキューを削除しないように作ると良いと思います。

 

方法としては、上のループとキュー削除の間にもう一つWhileループを入れます。

新しいループの中で、キューステータス取得を使い、キュー数のデータが0になったらループが止まるように作ります。

 

一度試していただきうまくいかないようであればサンプルみたいなものを作れると思います。もしくはVIを共有いただけるのであればそちらに少しコメントとか入れつつ実装サンプルも入れられると思います。

0 Kudos
Message 4 of 7
(2,216 Views)

ke525 様

 

フォーマットですが、確かではありません。バイナリファイルが1Gbを超えるため共有できないのですが、フォーマットを確認する方法がございましたら、教えていただきたいです。おそらく、私がわかっていないだけで、このプログラムは正しいフォーマットに対して組まれていると思いますので問題ないと思います。

 

VIを共有させていただきます。

0 Kudos
Message 5 of 7
(2,207 Views)
Solution
Accepted by tdak

tdakさん

 

今のVIが正しいとすると、以前に書いたように2次元の浮動小数点のデータということになります。

バイナリファイルのフォーマットは作った人しか基本わかりませんので。。

一部はCSV変換できているのであれば、そのデータがカンマ区切りの数値になっているかどうかで確認できると思います。

 

ファイルは1GB以上とのことですが、Wordpadなどで開いて、後半部分をガッツリ削除して小さくすれば共有できるかと思います。

中途半端なデータになってしまってても途中までは読み込めると思います。

 

キューを削除しないように変更しましたので、一度試してみてください。

0 Kudos
Message 6 of 7
(2,171 Views)

tdakさん

 

追記です。

今回のバイナリファイルを作成しているVIもしくはプログラムがあるのであれば、そちらを見ることでフォーマットがわかると思います。

ご参考まで。

0 Kudos
Message 7 of 7
(2,161 Views)