![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
VB初心者です。
VB6.0を使用しています。
Agilentのスペアナからのトレースデータをテキストで、"RecvData1"という文字列に受け取らせたいと考えています。
下記のように記述したのですが、RecvData1にテキストデータをうまく受け渡すことができません。
どこを改善すればよろしいでしょうか。
Dim RecvData1 As String
stats = viVPrintf(vi, "TRAC:DATA? TRACE1" + Chr$(10), 0)
stats = viVScanf(vi, RecvData1, 0)
viVScanfの定義
↓
Public Declare Function viVScanf Lib "VISA32.DLL" Alias "#272" (ByVal vi As Long, ByVal readFmt As String, params As Any) As Long
なお、「stats = viVPrintf(vi, "TRAC:DATA? TRACE1" + Chr$(10), 0)」の部分のコマンドが測定機に正しく送られていることは確認済みです。
やりたいことをVisa Assistantを使用して行った場合のC言語の記述と結果
↓
--------------------------------------------------------------------
viPrintf(vi,"TRAC:DATA? TRACE1\n");
char buf[32768];
int bufLength = sizeof(buf);
ViScanf(vi,"%#t", &bufLength, buf);
buf[] = {"-28.986280,-30.730440,-44.042957,-68.885155,-80.233.....
bufLength = 5071;
--------------------------------------------------------------------
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
とりあえず、バッファ確保してからにしようよ。
例えば、
RecvData1 = Space(32769)
ただし、API に ByVal String 形式で渡した場合、
暗黙の Unicode → ANSI 変換が入るので文字化けする可能性あり。
Byte の配列を使う事を考えた方がいいのかも。
それ以前に viscanf はデータが欠落するという情報もあるので
vread() で読み込み、1 バイトずつチマチマになるのかも。
ttp://surf.ml.seikei.ac.jp/~nakano/diary/?0707
ちなみに私は、VISA32 自体使った事無い門外漢ですので信用
しないようにして下さい。10分ほどWEB検索して分かった事を並べた
だけですので。
回答ありがとうございます。
Dim RecvData1 As * 10000
stats = viVScanf(vi,"%t" , RecvData1)
のようにするとデータを受け取らせることができました。
No.1
- 回答日時:
>ViScanf(vi,"%#t", &bufLength, buf);
の部分では、
ViScanf(vi,型の指定, bufLengthの先頭アドレス, buf);
のようになっていて、引数の個数が4。一方、VB6のviVScanfの定義
では、
Public Declare Function viVScanf Lib "VISA32.DLL" Alias "#272" (ByVal vi As Long, ByVal readFmt As String, params As Any) As Long
において、引数の個数が3.明らかにVB6とC言語では
関数の定義が異なっていますが?
C言語の関数では、第二引数が型の指定であって、
VB6では、
>stats = viVScanf(vi, RecvData1, 0)
のように、型指定にはなっていません。もし、仮に
VB6の関数の定義通りで、かつデータを受け取るのが
VB6で第三引数ならば、
stats = viVScanf(vi,%#t" , RecvData1)
あるいは、
stats = viVScanf(vi,"%t" , RecvData1)
では?
回答有難うございます。
回答していただいたように、入力してみたのですが、
stats = viVScanf(vi,"%t" , RecvData1)
とすると、うまくいかず。
stats = viVScanf(vi,%#t" , RecvData1)
とすると、VBが固まって終了してしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたい 6 2023/01/23 12:00
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
メモ帳(テキストデータ)をExc...
-
【エクセル】測定時間がバラバ...
-
この行は既に別のテーブルに属...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
エクセルで2つの時系列のデー...
-
配列でデータが入っている要素...
-
なぜ通りがけをすると昇順に整...
-
csvファイルに複数行あるデ...
-
DataGridViewのデータの引渡し...
-
ブレーカー落ちで壊れたりしな...
-
[エクセル]データの個数が2番目...
-
プログラミング python pandas ...
-
python, 空のタプルの必要性
-
GridViewの行の一部を複数行にする
-
チェックサムの実装方法について
-
C# でDataTableの更新を高速化...
-
VB6.0 テキストデータの受け取り
-
issetでボタンが押されたかを確...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
VBA 空白セルを削除ではない方...
-
S9タイプからXタイプにデータ...
-
多量のSUMIF式を軽くしたい
-
Accessで該当データにフラグを...
-
[C言語] コメント文字列を無視...
-
[エクセル]データの個数が2番目...
-
エクセルで2つの時系列のデー...
-
特定のデータの抽出方法を教え...
-
外部データの更新がうまくでき...
-
ActiveReportについて
-
CString型の文字列連結について
-
ユーザーフォームのテキストボ...
-
カンマからスラッシュに
-
シーケンサにパソコンからアク...
おすすめ情報