1.はじめに
GPIBによる通信のメリットの一つは、3線ハンドシェイクにより、低速の装置でも自分の動作スピードで高速の装置とデータの送受信ができることです。即ち、各装置がマイペースで通信に参加できるということです。
但し、通信パターンは様々であり、GPIBデバイスドライバの作り方によっては、ある条件では正常に通信ができないというようなことが起こります。
そのような場合、GPIBのコマンド発行をする場合に、各コマンド間に一定のウェイト入れれば解決するケースもあります。
しかし、それでは不要なところで、無駄に通信速度を落とす事になり得策ではありません。
また、本来のハードウェアによる3線ハンドシェイク以外に、タイマ即ちソフトウェアによるハンドシェイク要素が必要となると言うことで、正規のGPIBの仕様から外れる事にもなります。
但し、実際にGPIBデバイスドライバを、正規の動作をするように製作するのは、それ程容易ではないようです。また、多くの通信パターン毎にその検証をするのも手間がかかるものです。
ここでは、1つのプログラムで必要機能の多くを検証できるようにした、GPIBデバイスドライバテストプログラムを一例として紹介します。
ソースをダウンロードし、読者の必要に応じて修正を加えれば、本プログラムが対象とするシステム以外でも充分使用できると思います。読者が自分でGPIBデバイスドライバを製作する場合や、GPIBライブラリの性能をテストするような場合に利用してみて下さい。
2.テストプログラム
一例としてのGPIBデバイスドライバテストプログラムの概要を以下に示します。下記項目の何れも、読者のシステムに対応させる変更は、比較的容易だと思います。
(1)ソースリスト
必要に応じてソースリスト「sample.c」をダウンロードして下さい。
--- ソースリスト 「sample.c」をダウンロード する。
(2)対象システム
- マスタ、スレーブ装置 : NEC製9800シリーズパソコン2台(1対1マスタ−スレーブ間通信)
- 使用GPIBインターフェイスボード : 「PX9301」(プロエクシィ)、「PX9401」(プロエクシィ)、PC98−29n(NEC)の内何れか2台
- 使用ライブラリ : 「PC98シリーズ用 C言語GPIBライブラリ」(プロエクシィ)
- 使用言語 : MS−C(MicroSoft)またはTurboC(Borland)
(3)テスト内容
- DMA可能ボードでは非DMAとDMAの両方を行なう
- テストデータ : 浮動小数点数(8バイトデータ)のバイナリ形式、アスキー文字列形式
- 送受信パターン
(a)マスタ側連続データ送信、スレーブ側連続データ受信、チェック
(b)スレーブ側連続データ送信、マスタ側連続データ受信、チェック
(c)マスタ送信データをスレーブでループバックし、マスタで受信して送受信データ比較
(d)スレーブ送信データをマスタでループバックし、スレーブで受信して送受信データ比較
以上の全てのパターンについて、デリミタを順次EOI、CR、LF、CR+LF、CR+EOI、LF+EOI、CR+LF+EOIとして送受信する
- SRQ、パラレルポール、シリアルポールテスト
(4)ポイント
デバイスドライバの製作の仕方によっては、以下の様な不具合が出易いので、注意を要します。
- マスタとスレーブそれぞれの動作速度が大きく異なる場合に、マスタ側が高速の場合には送受信パターン(a)がNG、スレーブ側が高速の場合には送受信パターン(b)がNGというように、装置の動作速度と送受信パターンとの相互関係により正常動作しなくなる。
- 非DMA送受信からDMA送受信に移行する場合、またはその逆に移行する場合にNGになる。
- デリミタの切り替わり時にNGになる。
本項のテストプログラムは、これらの動作の良否を容易に判定するために作成したものです。
|