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

N88からVB6.0への移行

5 名前: N88初心者 投稿日:2006/03/31(金) 14:35 ID:41izjFp.
匿名488さんお返事ありがとうございます。

>1,2,3は端末に対するコントローラからの指示で、
>通常の GPIB カードの API では直接記述することは
>まれです

そうなんですか。
直接記述することがないということは、API関数にそのような機能
が含まれているという認識でよろしいでしょうか?

そこでヘルプより下記のものを見つけました。
>Declare Function PciGpibExMastRecvData Lib "gpc4304.dll"( _
>ByVal BoardNo As Long, _
>ByRef AdrsTbl As Long, _
>ByRef Length As Long, _
>ByRef Buffer As Any, _
>ByVal Msg As Long _
>) As Long

>【パラメータ】
>BoardNo
>ボードアクセス番号(0〜15)を指定します。
>AdrsTbl
>機器のアドレステーブルへのポインタ(参照渡し)を指定します。
>アドレステーブルへの終端には必ず-1 を設定します。
>Length
>受信バッファのバイトサイズが格納されている変数へのポインタ(参照渡し)を指定しま
>す。
>本関数呼び出し後、実際に受信したバイトサイズが格納されます。(同期入出力時)
>受信バッファの領域は、必ず「受信データ長」+「デリミタ」分の領域を確保するように
>してください。
>Buffer
>受信バッファ領域へのポインタ(参照渡し)を指定します。
>※ Visual Basic の場合には、API のDeclare Function の宣言がバイト型/数値型と文字列
>型とでは異なります。
>※ Visual Basic では、文字列変数として固定長文字列を指定してください。
>例: Dim RecvBuffer As String * 32 など
>※ Visual Basic で非同期送信を行う場合は、GlobalAlloc 関数などを用いて割り当てたメ
>モリ領域を指定してください。詳しくはサンプルプログラムをご参照ください。
>Msg
>非同期送信完了時にアプリケーションに通知されるメッセージを指定します。
>同期動作時にはWM_NULL もしくは0 を指定してください

ここでAdrsTblに&H42(十進数だと66?)を入れてあげれば解決できるというわけですね!

実際の使われ方は
10  RBYTE &H3F,&H20,&H42;M,L
20  IF M<>254 THEN 10
のような形になっているため、各コマンドを送信し、セットされたら
次の行へいくということですかね。(勝手な想像)
(勝手な想像はまだまだ続く)
PciGpibExMastRecvDataで、機器の指定を行っているため、
RBYTE &H3F,&H20,&H42;M,L
は必要ないのかな。。

もし考え方が間違っていればご指摘お願いします。

新着レスの表示

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

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