バイナリデータの取得の仕方
- 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
新着レスの表示