A1. GP-IBでコマンド送信する際の変数の型変換について(VisualBasic)。
AXP-GP02を使用してVBを使ってサンプルプログラムを参考にしておりますが、例えば下記のプログラムにて"SET?"というコマンドを送信したい場合、どのようにすれば良いのでしょうか?
尚、Buff(i)に"SET?"を代入すれば良いと思うのですが、変数の型式が異なるということで不可になります。
'-------------------------------------------------------------------
' 指定機器へのデータ送信(コントローラ専用)
'-------------------------------------------------------------------
wGpibAdrs = PRTADRS ' リスナのIBアドレス
dwDataCnt = 10 ' 送信するデータ個数
For i = 1 To 10
Buff(i) = Asc("0") + (i - 1)
Next i
If Gp02wSendDataC(wLogSocket, wGpibAdrs, Buff, dwDataCnt) = False Then
ErrorMessage (wLogSocket)
Exit Sub
End If
strbuf = "指定機器へのデータ送信"
ResultMessage (strbuf)
StrConvという関数を使って型変換をおこないます。以下はそのためのサンプルソースです。
' 文字列格納用バッファをサイズ指定無しで宣言
Dim GpibCmd() As Byte
GpibAdrs = PRTADRS
' 送信文字数を保存
dwDataCnt = Len("SET??")
' バッファに "SET??" を Unicode からシステムの既定の
' コードページに変換して格納
GpibCmd = StrConv("SET??",vbFromUnicode)
' データ送信実行
If Gp02wSendDataC(wLogSocket, wGpibAdrs, GpibCmd, dwDataCnt) = False Then
ErrorMessage (wLogSocket)
Exit Sub
End If
strbuf = "指定機器へのデータ送信"
ResultMessage (strbuf)
A2. VisualBasicでのデータ受信用バッファ確保について。
下記のようなプログラムをVBで作成し実行した場合、”実行時エラー'9'; インデックスが有効範囲にありません。 ”となってしまいます。
'データ受信
Dim datRecieve() as Byte '受信用バッファ
Dim dwDataCnt as Long '受信データ数
dwDataCnt = 50 '受信データ数決定
if Gp02wRecvDataC(wLogSocket,PRTADRS,datRecieve,dwDataCnt) = False Then
...
この症状は、GPIBデータ受信関数に受信用バッファを引き渡す前にバッファ領域を確保していないことが原因です。
バッファ領域を確保するには、DimステートメントかRedimステートメントを用いて、受信用バイト配列の要素数を指定します。
'データ受信
Dim datRecieve() as Byte '受信用バッファ
Dim dwDataCnt as Long '受信データ数=受信用バッファサイズ
dwDataCnt = 50 '受信データ数決定
Redim datRecieve(1 To dwDataCnt)'受信用バッファ領域確保
if Gp02wRecvDataC(wLogSocket,PRTADRS,datRecieve,dwDataCnt) = False Then
...
dwDataCntには、返ってくるデータ数に応じて適切なバッファサイズを指定してください。
A3. PCIバスボードのaPCI-G01用に作ったプログラムはAXP-GP02でそのまま動くでしょうか。
現在、PCIバスボードのaPCI-G01を使用していますが、これで作ったプログラムはAXP-GP02でそのまま動くでしょうか。
以下の通りaPCI-G01とAXP-GP02は API関数名が異なりますので、そのままでは動作致しません。
ただし、APIの構成は両者でほぼ統一されておりますので、プログラム中で対応する関数名に変えていただければ、恐らく大きな変更無しに動作すると思われます。
APIリファレンス
aPCI-G01 AXP-GP02
-----------------------------------------------------
初期化 API
Apci01GetVersion Gp02GetVersion
Apci01Create Gp02Create
Apci01Close Gp02Close
Apci01GetResource Gp02GetResource
GP-IB API
Apci01Init Gp02Init
Apci01SetTime Gp02SetTime
Apci01SetEos Gp02SetEos
Apci01SendCmd Gp02SendCmd
Apci01Ifc Gp02Ifc
Apci01Ren Gp02Ren
Apci01Dcl Gp02Dcl
Apci01Sdc Gp02Sdc
Apci01SendDataCN Gp02SendDataCN
Apci01SendDataC Gp02SendDataC
Apci01SendDataS Gp02SendDataS
Apci01RecvDataC Gp02RecvDataC
Apci01RecvDataS Gp02RecvDataS
Apci01SetSrqLine Gp02SetSrqLine
Apci01GetSrqLine Gp02GetSrqLine
Apci01Spoll Gp02Spoll
Apci01Ppoll Gp02Ppoll
Apci01PpollConfig Gp02PpollConfig
Apci01PpollUnConfig Gp02PpollUnConfig
Apci01PpollUnConfigAll Gp02PpollUnConfigAll
Apci01PpollRespModeSet Gp02PpollRespModeSet
Apci01TransDataN Gp02TransDataN
Apci01TransData Gp02TransData
Apci01GetStatus Gp02GetStatus
その他 API
Apci01GetLastError Gp02GetLastError
Apci01GetSwitchValue
Apci01GetDipSwitch Gp02GetStatus
|