GPIBを用いたVBによるFFT制御
- 1 名前: 流れ者 投稿日:2006/01/28(土) 16:21 ID:fPBqEjO2
- GPIB Interface社pci4302
 測定器 小野測器FFTアナライザCF-350
 PG VB6.0
 OS Win2000
 初めまして。
 VB6.0を用いてFFTアナライザ制御をしようとしているのですが、
 PCからデータを送信して制御することはできるのですが
 FFTから送信してくるデータを読み取ることができないのです。
 バイナリデータの取得の仕方がうまくいっていないと思うのですが、
 なにぶんまだまだ初心者でどのようにしたらよいのかわからず
 ここにたどり着きました。
 早くプログラムを完成させないといけませんので
 どなたかご教授いただける方が居られましたらよろしくお願いいたします。
 
 
- 2 名前: 匿名488 投稿日:2006/01/29(日) 08:44 ID:???
- 流れ者さん、はじめまして。
 
 CF-350 なる計測器はもってないのですが、
 
 >バイナリデータの取得の仕方がうまくいっていない
 
 と思われた理由(発生している現象)はなんでしょうか?
 
 たとえば、
 データが化けている(思っていたものと違う)、
 エラーメッセージが出る、
 プログラムが途中で停止してしまう、etc...
 
 
- 3 名前: 流れ者 投稿日:2006/02/02(木) 18:13 ID:eV0VJk8A
- 匿名488さんお返事ありがとうございます。
 バイナリデータの取得の仕方がうまくいっていないと思った理由ですが
 送信データはきちんと送れていて、FFTは処理を行っているおり、
 トーカーにもきちんと切り替わってデータを送信しているみたいなのですが
 データが受信できていませんというメッセージが出てしまうからです。
 受信のプログラムは以下のとおりです。
 
 Dim ulLength As Long
 Dim bRecvBuff(1612) As Byte
 'データ受信
 For i = 0 To 1612
 bRecvBuff(i) = 0
 Next
 ulLength = 1612
 nRet = GpibReceive(nBoardNo, lAdrTbl(0), ulLength, bRecvBuff(0))
 
 If nRet <> 0 Then
 nRet = MsgBox("データ受信に失敗しました", (vbOKOnly + vbCritical), "GpibReceive")
 nRet = GpibClose(ulBoardNo) ' ボード番号0のボードを使用終了
 Unload Me ' ダイアログを閉じる
 End If
 
 ' 受信文字列の表示
 Text1.Text = ""
 For i = 0 To 1612
 If bRecvBuff(i) = 0 Then Exit For
 Text1.SelText = Chr(bRecvBuff(i))
 Next
 
 データ送信がString形式で、
 受信のByte形式と異なっているので、
 送信もByte形式にするためにMID関数を用いたのですが
 それでも受信はうまくいかないのです・・・。
 
 Dim lngStrLength As Long
 Dim bSendData(1612) As Byte
 lngStrLength = Len("SMS2")
 '送信バッファに文字列(アスキーコード)を設定します。
 For I = 1 To lngStrLength
 bSendData(I - 1) = Asc(Mid("SMS2", I, 1))
 Next
 nRet = GpibSend(ulBoardNo, lAdrTbl(0), lngStrLength, bSendData(0))
 
 このようにしているのですが、改善しなければならないところが
 わかりましたらご指南の方よろしくお願いいたします。
 
 
- 4 名前: 匿名488 投稿日:2006/02/02(木) 19:24 ID:???
- GpibReceive() の戻り値が 0 でない、ということでしょうか?
 
 0 以外だとエラーのようですが、
 戻り値(=エラーコード)によってどんな原因で失敗したのか
 区別できるような API になっていませんか?
 
 
- 5 名前: 流れ者 投稿日:2006/02/09(木) 17:19 ID:SumIbdow
- 値の表示に関しては以下のプログラムにしているのですが、
 値はおろか戻り値さえも表示されない始末で・・・・。
 
 Dim bRecvBuff(3220) As Byte
 ' 受信文字列の表示
 Text1.Text = ""
 For i = 0 To 3220
 If bRecvBuff(i) = 0 Then Exit For
 Text1.SelText = bRecvBuff(i)
 Next
 
 
新着レスの表示