計測制御技術ラウンジ >> GPIB技術ラウンジ 全部 1- 最新50

バイナリデータの取得の仕方

1 名前: M's 投稿日:2004/02/06(金) 09:48 ID:s6wPa9sg
どなたか教えて下さい。
NI製ボードVB6.0でagilent ネットアナ 8720ESを制御したいのですが
どうもデータを取得できません。

私自身バイナリデータの知識がなく。。。
バイナリデータをtxtやcsvで保存したいのですが、
取得したデータが化けてしまします。

初歩的な質問かと思いますが、助けてください。

2 名前: 匿名488 投稿日:2004/02/06(金) 13:56 ID:???
VB が詳しくない私が回答するのは筋違いですが、

化ける、ということは取得はできているんでしょうか?
いわゆる「バイナリデータ」はバイトごと
そのままの数値が送られてきますので、それをそのまま
表示すると「化ける」ということになります。

受信対象のバイナリ値がバイト(0-255)範囲の場合には、
1バイトずつ切り出して(昔の MS系BASIC では MID$ 関数というのがありました)
数値型に変換(昔は ASC 関数というのがありました)
して、PRINT (表示もしくはファイルへ)してやればOKです。

複数バイトに渡る場合には、桁を考慮してやる必要があります。
2バイト(16bit データ)を上位バイトから受信した場合には、

過去の言語では
N バイト目から 2 バイトのワードデータを数値に変換するには
DATA = ASC(MID$(RECVDATA$,N,1)) * 256 + ASC(MID$(RECVDATA$,N+1,1))

のように記述しました。256 を掛けるのは 256 = &H100 (9ビット目以降に桁上げ)するためです。

単純なバイトやワードデータ以外の浮動小数点データなどの場合には、
同様に数値変換したのちに、ビット割があればビット演算など、
なければそれぞれに重み(上の例で言う 256 を掛けるなど)
して加工してやればいいはずです。

一般論ですが、参考になれば。

3 名前: M's 投稿日:2004/02/06(金) 17:02 ID:s6wPa9sg
ありがとうございます。
ただNI-488.2のデータコード"ibrd"では受信バッファは文字列(string)
になっています。
現在は変数に格納した段階で化けてしまいます。

4 名前: 匿名488 投稿日:2004/02/06(金) 23:37 ID:???
ibrdi を使って Integer 配列に格納しても化けますか?

5 名前: 小高俊 投稿日:2004/08/25(水) 19:52 ID:zxbahPrc
どなたか,どうか助けてください.
Interface社製PCI4301のGPIBで,小野測器CF8400(FFTアナライザ)からデータを
取得したいのですが,昔の計測器でバイナリ出力しかできず,大苦戦しています.
言語はC++です.M'sさんの書き込みも参考になりましたが,うまくできません.
バイナリは01の羅列で来るのでしょうか?
バイナリの知識も無いので,困っています.
どなたかアドバイスをお願いします.

[管理者追加]2004/9/3
この話題は以下のスレッドに続いています。
http://www.miolab.com/board/read.cgi?bbs=GPIB&key=1093431399&ls=50

新着レスの表示

名前 : E-mail(省略可) :

文責:計測制御技術ラウンジ, Powered by ©タカヒロ@みちのく掲示板 [12ch BBS 2.03]