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
は必要ないのかな。。
もし考え方が間違っていればご指摘お願いします。
新着レスの表示