サイト検索 サイトマップ 会社案内 通信販売 求人情報
製品情報 テクニカルサポート ダウンロード カタログ請求 ホームページ

 
テクニカルQ&A
■AXP-GP01 GP-IBアダプタカード

Question  
Q1. 製品について。
Q2. ライブラリはありますか。

Answer  

A1. 製品について。

 ケ−ブルの長さ 約1mのケーブルを同梱しております。
 対応言語 C言語とQuickBASICとN88日本語BASIC(インタプリタのみ)です。

A2. ライブラリはありますか。

 付属しております。
 対応コンパイラはBorland C/C++3.0、Turbo C/C++2.0, 3.0,Microsoft C5.0, 6.0, C/C++7.0、QuickBASIC4.5 です。

 
テクニカルQ&A
■AXP-GP02 GP-IBアダプタカード

Question  
Q1. GP-IBでコマンド送信する際の変数の型変換について(VisualBasic)。
Q2. VisualBasicでのデータ受信用バッファ確保について。
Q3. PCIバスボードのaPCI-G01用に作ったプログラムはAXP-GP02でそのまま動くでしょうか。

Answer  

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

テクニカルQ&A
サポート&サービス
Home Page