INtimeドキュメンタリトップへ

PCIボードを検出しろ!!

課題
いよいよ外組みができたので、処理をプログラミングしていくのですが、インターフェースボードへのアクセス部分は多少厄介なイメージがありました。
いったいどのような手法でボードにアクセスするのか皆目検討もつかずに、とりあえず調査と作業を進めていきます。

10月9日・・・インターフェースボードにアクセス
アナログデータをデジタルに変換して、そのデータを取得するということは、インターフェースボードにアクセスしなければいけません(あたりまえ)。

はてインターフェースボードへのアクセスは如何に?

そのアクセスにはどのような処理が必要なのか・・・数少ない資料とインターネット、ボードのマニュアル、マイクロネットのHPが味方です。

ボードのマニュアルを見るとボードの動作設定手順が掲載されていました。
まずはボードの初期化処理が必要になります。ボードの初期化処理を行うためにはボードにアクセスしなければいけません。

INtimeでPCIボードの処理を行うAPIがあるか、INtime Helpで調査することにしました。

スタート->プログラム->INtime V2.10->INtime Help

と選択し、INtimeオンラインヘルプを開き、キーワードを"PCI"と入力しました。
すると"PCI Library Call"が項目として表示され、INtimeにPCIライブラリコールがあることが分かりました。

PCIライブラリコール

PciInitialize
PciReadHeader
PciFindDevice
PciFindClass
PciSetConfigRegister
PciGetConfigRegister
PciVendorName
PciDeviceName
PciClassName

現在の心境

≪・・・・・!!! PciFindDevice()・・・・・これか!? これなのか!!!≫


さらに詳しく見てみると・・・:


シンタックス

BYTE PciFindDevice(
PCIDEV *pPciDevice
);

パラメータ

pPciDevice    PCIDEV構造体のポインタ; 上述通りに初期化されます。

戻り値

成功  
デバイスが検出された場合、TRUE を返します。 PCIDEV構造体にはPCIデバイスヘッダーの値が指定されます。

失敗
デバイスが検出されなかった場合、FALSE を返します。


本日の感想

これだ!!
(←感激の涙)

さらにINtimeウィザードでコードを生成するとutil.cというモジュールが自動的に生成され、その中にGetPciInterruptLevel()という関数があることが分かりました。

その関数(ユーティリティ)の中でまさに、PciFindDevice()をコールしているではありませんか!!

これで私は確信しました。

「PCIボードはPciFindDeviceにより検出できる!!」

≪待てよ!!最初からutil.cの内容をもうちょっとよく調べていたら、こんなに調べる必要もなかったのでは・・・

最初のあの難しいイメージはいったいなんだったんだろう・・・・?≫
(結果オーライ)