API-PAC(W32) DIO編
リファレンスマニュアル
API-PAC(W32)RM/DIO
API-PAC(W32)RM/DIO i 当社製品をより良く、より快適にご使用いただくために、次のサポートを行っております。
◆ホームページ
日本語 http://www.contec.co.jp/ 英語 http://www.contec.com/ 中国語 http://www.contec.com.cn/ ■最新製品情報 製品の最新情報を提供しています。 また、PDFファイル形式の製品マニュアル、各種技術資料なども提供しています。 ■無償ダウンロード 最新のドライバソフトウェア、差分ファイルをダウンロードできます。 また、各種言語のサンプルプログラムもダウンロードできます。 ■資料請求 カタログの請求が行えます。 ■製品貸出サービス 製品貸出の依頼が行えます。 ■イベント情報 当社主催/参加のセミナーおよび展示会の紹介を行っています。◆総合インフォメーション
(お問い合わせ窓口)
■技術的なお問い合わせ 当社製品に関する技術的なお問い合わせは、総合インフォメーションで受け付けています。 E-mail([email protected])またはFAXでお問い合わせください。専門のスタッフが対応します。 E-mailの場合は、製品添付のQuestion用紙と同様の内容をお送りください。 FAXの場合は、製品添付のQuestion用紙に必要事項を記入の上、お送りください。 ※FAX番号はQuestion用紙に記載されています。 ■その他の製品情報のお問い合わせ 製品の価格・納期・見積もり依頼などのお問い合わせは、販売店または当社各支社・営業所ま でお問い合わせください。ii API-PAC(W32)RM/DIO 修理の依頼は、お買い求めの販売店経由で受け付けています。 保証書に記載の条件のもとで、保証期間中に製品自体に不具合が認められた場合は、その製品 を無償で修理または交換いたします。 保証期間終了後、または保証条件外での修理は、有償修理となりますのであらかじめご了承く ださい。 なお、対象は製品のハードウェア部分の修理に限らせていただきます。
◆製品貸出サービス
製品を評価・理解していただくため、製品の貸出サービスを行っております。 詳細は、当社ホームページをご覧ください。◆各種セミナー
新製品の紹介・活用方法、システム構築のための技術習得など、各種セミナーを行っております。 出張プライベートセミナーも承ります。詳細は、当社ホームページをご覧ください。◆FA/LA無料相談コーナー
「FA/LA無料相談コーナー」は、お客様がシステムを構築する際に当社製品の選定の相談をお 受けする窓口です。面談によるシステム相談を専門スタッフが担当いたします。 お問い合わせは、当社各支社・営業所までご連絡ください。◆システム受託開発、OEM受託
ソフトウェア/ハードウェアの導入方法やシステム構築のご相談、お客様オリジナル・デザイ ンのシステムを製品化し供給するODMやOEMのご提案を行います。 詳しくは、E-mail([email protected])または当社各支社・営業所までお問い合わせください。API-PAC(W32)RM/DIO iii 次の内容をご理解の上、本製品を安全にご使用ください。
◆安全情報の表記
本書では、人身事故や機器の破壊をさけるため、次のシンボルで安全に関する情報を提供して います。内容をよく理解し、安全に機器を操作してください。危険
この表示を無視して、誤った取り扱いをすると、人が死亡または重傷を負う 危険が差し迫って生じることが想定される内容を示しています。警告
この表示を無視して、誤った取り扱いをすると、人が死亡または重傷を負う 可能性が想定される内容を示しています。注意
この表示を無視して、誤った取り扱いをすると、人が損害を負う可能性が想 定される内容および物的損害のみの発生が想定される内容を示しています。◆ご注意
(1) 本書の内容の全部、または一部を無断で転載することは禁止されています。 (2) 本書の内容に関しては将来予告なしに変更することがあります。 (3) 本書の内容については万全を期しておりますが、万一ご不審な点や記載もれなどお気づき のことがありましたら、お買い求めの販売店へご連絡ください。 (4) 本製品の運用を理由とする損失、逸失利益などの請求につきましては、前項にかかわらず、 いかなる責任も負いかねますのであらかじめご了承ください。(5) MS、Microsoft、Windows、Windows NT、MS-DOSは、米国Microsoft Corporationの各国に おける登録商標または商標です。
その他、本書中に使用している会社名および製品名は、一般に各社の商標または登録商標 です。
iv API-PAC(W32)RM/DIO サポートのご案内... i ◆ホームページ... i ◆総合インフォメーション(お問い合わせ窓口) ... i ◆修理窓口 ... ii ◆製品貸出サービス ... ii ◆各種セミナー... ii ◆FA/LA無料相談コーナー ... ii ◆システム受託開発、OEM受託 ... ii 安全にご使用いただくために... iii ◆安全情報の表記 ... iii ◆ご注意 ... iii 目次 ... iv
第1章 はじめに
1
概要 ... 1 商品の特長 ... 2 ◆CompactPCIバス対応ボードの場合 ... 2 ◆PCIバス対応ボードの場合 ... 2 ◆Eシリーズボードの場合 ... 2 ◆入出力点数固定ボードの場合 ... 3 ◆プログラマブルボードの場合 ... 3 ◆PIO-32DM(PCI)の場合... 3 解説書とヘルプファイルの内容... 4 仕様 ... 5Visual Basic .NET、Visual C++ .NETでご使用の際の注意点 ... 7
◆Visual Basic .NET ... 7
◆Visual C++ .NET ... 8 Borland Delphiでご使用の際の注意点 ... 9 ◆Borland Delphi... 9 プログラミング・動作テストを始める前に ... 10 ◆Windows Me/98/95 ... 11 ◆Windows XP/2000/NT ... 11
第2章 関数のリファレンス
13
関数一覧... 13 DioOpen ... 15 DioOpenEx ... 17 DioClose... 19 DioWait ... 20API-PAC(W32)RM/DIO v DioUseMutex... 24 Dio8255Mode ... 25 DioGet8255Mode ... 27 DioSetIoDirection ... 29 DioGetIoDirection... 31 DioInpByte... 33 DioOutByte ... 35 DioEchoBackByte ... 37 DioInpBit... 39 DioOutBit... 41 DioEchoBackBit... 43 DioInp... 45 DINP構造体 ... 47 DioOut ... 48 DOUT構造体 ... 50 DioEchoBack ... 51 DINP構造体 ... 53 DioBitInp... 54 DBINP構造体 ... 56 DioBitOut... 57 DBOUT構造体... 59 DioBitEchoBack ... 60 DBINP構造体 ... 62 DioInpBack ... 63 DINPB構造体 ... 67 DioOutBack ... 68 DOUTB構造体... 72 DioBitInpBack ... 73 DBINPB構造体... 77 DioBitOutBack ... 78 DBOUTB構造体... 82 DioSts ... 83 DioStop... 85 DioPtnSet ... 86 DPTNSET構造体... 88
vi API-PAC(W32)RM/DIO DioTrgSet... 92 DTRGSET構造体 ... 95 DioTrgStart ... 97 DioTrgSts... 99 DioInpBCD ... 101 DIBCD構造体... 103 DioOutBCD ... 104 DOBCD構造体 ... 106 DioNInpBCD ... 107 DIBCD構造体... 109 DioNOutBCD ... 110 DOBCD構造体 ... 112 DioEvent ... 113 DioIntEnable... 118 DioIntSence ... 119 DioEventEx... 122 DioIntEnableEx ... 127 LpByte... 129 LpWord ... 129 LpDWord ... 129 戻り値一覧 ... 130
第3章 PIO-32DM(PCI)を使用する場合
135
プログラミング・動作テストを始める前に ... 135 ◆Windows Me/98/95 ... 135 ◆Windows XP/2000/NT※2... 135 使用手順... 136 関数のリファレンス... 142 ◆関数一覧 ... 142 DioOpen ... 143 DioOpenEx ... 145 DioClose... 146 DioDmSetDirection... 147 DioDmSetStandAlone... 148 DioDmSetSetMasterCfg ... 149API-PAC(W32)RM/DIO vii DioDmSetStartPattern...156 DioDmSetClockTrg ...158 DioDmSetInternalClock ...160 DioDmSetStopTrg...162 DioDmSetStopNum...164 DioDmReset...166 DioDmSetBuff...167 DioDmStart ...169 DioDmStop ...170 DioDmGetStatus...171 DioDmGetCount...173 DioDmSetStopEvent ...175 DioDmSetCountEvent ...177 DioDmInpDWord...179 DioDmOutDWord...180 DioEvent...181 DioIntSence...183 DioIntEnable...184 DioEventEx...185 DioIntEnableEx ...187 一般的な転送形式について ...189 ステータス一覧 ...191 エラー一覧...191 戻り値一覧(PIO-32DM(PCI)) ...192 同期制御コネクタ(SCコネクタについて) ...193
第4章 用語説明
195
API-PAC(W32)RM/DIO 1
第1章 はじめに
概要
このたびは、デジタル入出力シリーズ用ドライバをご購入いただきまして、ありがとうござい ます。API-DIO(98/PC)W95は、Microsoft Windows XP/Me/98/95のドライバ(VxD、DLL)です。 Windows 98/95上で当社製デジタル入出力ボードを制御し、有効に使用するためのソフトウェ アです。
API-DIO(98/PC)NTは、Microsoft Windows XP/2000/NT対応ドライバ(SYS、DLL)です。 Windows 2000/NT上で当社製デジタル入出力ボードを制御し、有効に使用するためのソフト ウェアです。
注意
PIO-32DM(PCI)のドライバは、API-DIO(98/PC)W95、API-DIO(98/PC)NTに含まれています が、関数体系が別になっています。PIO-32DM(PCI)を使用する場合は、第2章の関数では なく、第3章の関数群を使用してください。2 API-PAC(W32)RM/DIO
商品の特長
◆CompactPCIバス対応ボードの場合
・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ CompactPCIバス対応ボードに対応しています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことができます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル入力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用したデジタルフィルタを使用することにより、チャタリングを 防止することができます。◆PCIバス対応ボードの場合
・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ PCIバス対応ボードに対応しています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことができます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル入力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用したデジタルフィルタを使用することにより、チャタリングを 防止することができます。◆Eシリーズボードの場合
・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ Eシリーズボードに対応しています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことがでの場合きます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル入力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用したデジタルフィルタを使用することにより、チャタリングを 防止することができます。API-PAC(W32)RM/DIO 3
◆入出力点数固定ボードの場合
・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことができます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ 指定ビットのデジタル入力を行うことができます。 ・ 指定ビットのデジタル出力を行うことができます。 ・ ドライバ内でのソフトウェア処理によるデジタルフィルタを使用することにより、チャタ リングを防止することができます。◆プログラマブルボードの場合
・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことができます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ 指定ビットのデジタル入力を行うことができます。 ・ 指定ビットのデジタル出力を行うことができます。 ・ プログラマブルボードは、入出力ポート(入出力点数)が固定されていないため、LSIi8255 のコントロールワードを設定することにより、入出力ポート(入出力点数)を設定すること ができます。 なお、8255モードおよびコントロールワードの設定値は、ボードにより異なる場合があり ます。詳細については、ボード添付の解説書を参照してください。 ・ ドライバ内でのソフトウェア処理によるデジタルフィルタを使用することにより、チャタ リングを防止することができます。◆PIO-32DM(PCI)の場合
PIO-32DM(PCI)では、バスマスタ転送による時系列等での連続的入出力(パターン入力/パター ン出力)を主目的として、開発したボードです。 ・ サンプリングレート20MHzの速度でデジタル信号をストレージし、またパターン検出でき ます。(パターン入力) ・ 20MHzのパターンジェネレータとして使用できます。(パターン出力) ・ 入出力に際しては、スタート条件、クロック条件、ストップ条件を、用意されているいく つかのパターンから選択して設定可能です。 ・ バスマスタ転送を使用していない場合は、通常のPIOボードとしての入出力(汎用入出力) を行うことも可能です。 ・ バスマスタ転送を使用していないときは、4点の割り込み入力が可能です。 ・ PIO-32DM(PCI)のI/Oポートマップは非公開になっております。本ボードを使用する場合は、 API-DIO(98/PC)W95、API-DIO(98/PC)NTの関数を使用してください。4 API-PAC(W32)RM/DIO
解説書とヘルプファイルの内容
この解説書は、API-TOOLを使用する上で必要な情報である、「概要」、「仕様」、「関数の リファレンス」、「用語説明」などを説明しています。「インストール方法」などの説明は、 API-PAC(W32)の解説書をご覧ください。 本書で説明されていない情報については、このAPI-TOOLをインストールしたあとのヘルプフ ァイルを参照してください。 ヘルプファイル名 “DIO5TD.HLP” ・・・・・・API-DIOヘルプ “HWINSTJ.HLP”・・・・・ ハードウェアの登録方法ヘルプ ヘルプファイルでは「関数のリファレンス」のほか、「サンプルプログラム」、「Q&A」な どの情報を提供しています。 なお、この解説書中の下線付きの語句は、「第4章 用語説明」のところでアルファベット順お よび五十音順に説明されています。必要に応じて参照してください。
API-PAC(W32)RM/DIO 5
仕様
項目 仕様
Microsoft Windows Me
Microsoft Windows 98およびSecond Edition Microsoft Windows 95
Microsoft Windows XP Professional Microsoft Windows XP Home Edition Microsoft Windows 2000 Professional
Microsoft Windows NT Workstation Ver.3.51、Ver.4.0 Microsoft Windows NT Ver.4.0 Terminal Server Edition 適応OS
Microsoft Windows NT Server Ver.3.51、Ver.4.0 (実行のみ) Visual C++ .Net 2002、2003 *1
Visual C++ Ver.2.0、Ver.4.x、Ver.5.0、Ver.6.0 Visual Basic .Net 2002、2003 *1
Visual Basic (32bit) Ver.4.0、Ver.5.0、Ver.6.0 Borland C++ Builder Ver.5.0、Ver.6.0 Borland C++ Ver.4.5x、Ver.5.0 適応言語
Borland Delphi Ver.3.0、Ver.4.0、Ver.5.0、Ver.6.0 *2 サポートできる 最大ボード枚数 4枚/1グループ *3 割り込み 4レベル/1グループ 適応機種 IBM PC/AT互換機、DOS/V機 NEC PC98-NXシリーズ NEC PC-9800シリーズ 対象ボード PCIバスボード PI-128L(PCI)、PI-64L(PCI)H、PI-32L(PCI)H、PI-64L(PCI)、PI-32L(PCI)、PI-32B(PCI)H、 PI-32B(PCI)、PO-128L(PCI)、PO-64L(PCI)H、PO-32L(PCI)H、PO-64L(PCI)、PO-32L(PCI)、 PO-32B(PCI)H、PO-32B(PCI)、PIO-64/64L(PCI)、PIO-32/32L(PCI)H、PIO-32/32L(PCI)、 PIO-32/32B(PCI)H、PIO-32/32B(PCI)、PIO-32/32F(PCI)、PIO-32/32T(PCI)、PIO-16/16L(PCI)H、 PIO-16/16L(PCI)、PIO-16/16RY(PCI)、PIO-16/16B(PCI)H、PIO-16/16B(PCI)、PIO-16/16T(PCI)、 PIO-16/16TB(PCI)、RRY-16C(PCI)、RRY-32(PCI)、PIO-48D(PCI)、PIO-32DM(PCI) LowProfile PCIバスボード PIO-16/16L(LPCI)H、PIO-16/16B(LPCI)H、PIO-16/16T(LPCI)H CompactPCIバスボード PI-64L(CPCI)、PO-64L(CPCI)、PIO-32/32L(CPCI) PCカード PIO-24W(PM)、PIO-32D(PM)、PIO-16/16L(PM) ISAバスボード PI-64L(PC)、PI-64T(PC)、PO-64L(PC)、PO-64T(PC)、 PIO-32/32L(PC)、PIO-32/32RL(PC)、PIO-32/32T(PC)、 PI-32L(PC)H、PI-32L(PC)V、PI-32B(PC)、PI-32B(PC)H、PI-32TB(PC)、PI-32T(PC)H、 PI-32RL(PC)、 PO-32L(PC)H、PO-32L(PC)V、PO-32B(PC)、PO-32B(PC)H、PO-32TB(PC)、 PO-32T(PC)H、PO-32RL(PC)、RRY-32(PC)、PRY-32(PC)、 PIO-16/16L(PC)H、PIO-16/16L(PC)V、PIO-16/16B(PC)、PIO-16/16B(PC)H、PIO-16/16TB(PC)、 PIO-16/16T(PC)H、PIO-16/16RL(PC)、 PIO-48W(PC)、PIO-48D(PC)、PIO-48C(PC)、PIO-96W(PC)、PIO-144W(PC)、PIO-120D(PC)
6 API-PAC(W32)RM/DIO 項目 仕様 対象ボード 98(C)バスボード PI-32(98)E、PI-32(98)E-F、PI-32T(98)E、PI-64(98)E、PI-64(98)E-F、PI-64T(98)E、 PO-32(98)E、PO-32(98)E-F、PO-32T(98)E、PO-64(98)E、PO-64(98)E-F、PO-64T(98)E、 PIO-16/16(98)E、PIO-16/16(98)E-F、PIO-16/16B(98)E、 PIO-16/16TB(98)E、PIO-16/16T(98)E、 PIO-32/32(98)E、PIO-32/32(98)E-F、PIO-32/32B(98)E、 PIO-32/32TB(98)E、PIO-32/32T(98)E、PIO-32/32R(98)E、 PI-32(98)H、PI-32B(98)、PI-32T(98)、PI-48(98)、PI-48B(98)、PI-48T(98)、PI-96T(98)K、 PO-32(98)H、PO-32B(98)、PO-32T(98)、PO-48(98)、PO-48B(98)、PO-48T(98)、PO-96T(98)K、 PIO-16/16(98)H、PIO-16/16B(98)、PIO-16/16T(98)、PIO-24/24(98)、PIO-24/24A(98)、 PIO-24/24B(98)、PIO-24/24TB(98)、PIO-24/24T(98)、PIO-48/48T(98)K、 ACI/DCI-8(98)、ACO/DCO-8(98)、RRY-16(98)、WRY-16(98)、SSR-16(98)、 RRY-32(98)、PRY-32(98)、 PIO-48W(98)、PIO-48W(98)B-01、PIO-48W(98)B-02、PIO-96W(98)K
*1) 詳細は「Visual Basic .NET、Visual C++ .NETでご使用の際の注意点」を参照ください。 *2) 詳細は「Borland Delphiでご使用の際の注意点」を参照ください。
*3) 実際に使用できるグループ数は、パソコンの空いている割り込みレベルの数に左右されま す。ドライバは最大16グループまでサポートします。
API-PAC(W32)RM/DIO 7
Visual Basic .NET、Visual C++ .NETで
ご使用の際の注意点
◆Visual Basic .NET
■関数仕様
従来と同じWIN32API形式の関数が使えます。Visual Basic .NET専用の関数はありません。 ■関数引数、戻り値 関数引数、戻り値の内容はご使用になる開発言語に依存せず共通になります。 詳細は[関数のリファレンス]を参照ください。 ■関数リファレンスの書式について 書式欄の「VB」はVisual Basic 4、5、6の書式を表します。 Visual Basic.NETからは以前のバージョンとは型宣言が大きく変わりました。 そのため、書式の引数の型は、サンプルプログラムにある関数宣言を参照してください。 ¥Program Files¥CONTEC¥API-PAC(W32)¥XXX¥Samples¥Inc¥APIXXX.VB (XXXはSIO/DIO/AIO/GPIB/CNT/SMC等) 型宣言の変更例
Visual Basic4,5,6 Visual Basic .NET 16Bit Integer → Short
32Bit Long → Integer 64Bit なし → Long Any → 固有のデータ型 ■サンプルプログラム ¥Program Files¥CONTEC¥API-PAC(W32)¥XXX¥Samples¥VbNet (XXXはSIO/DIO/AIO/GPIB/CNT/SMC等)以下にあるサンプルをご使用ください。 ■以前のバージョンのVisual Basic を使われていた方
Visual Basic 6.0以前のお客様で開発されたプログラムおよびCD-ROM収録サンプルプログラム (¥VB6)は「Visual Basic アップグレードウィザード」で変換できます。
但し自動的に変換されない個所がありますので、Visual Basic .NETのヘルプを参照して手動で 変更してください。なお、Visual Basic 4、5からは変換することはできません。
■MsgEcho.ocxを使われていた方
MsgEcho.ocxではメッセージを取得できなくなりました。代わりにCMessage.ocxコントロール をご利用ください。(既にCMessage.ocxコントロールを使用しているサンプルは変更の必要は ありません)
8 API-PAC(W32)RM/DIO
◆Visual C++ .NET
■関数仕様 従来と同じWIN32API形式の関数が使えます。Visual C++ .NET専用の関数はありません。 ■関数引数、戻り値 関数引数、戻り値の内容はご使用になる開発言語に依存せず共通になります。 詳細は[関数のリファレンス]を参照ください。 ■関数リファレンスの書式について 書式欄の「C言語用」と同じ書式となります。 ■サンプルプログラム ¥Program Files¥CONTEC¥API-PAC(W32)¥XXX¥Samples¥VcNet (XXXはSIO/DIO/AIO/GPIB/CNT/SMC等)以下にあるサンプルをご使用ください。 ※Visual C++.NETではMFCアプリケーション用のサンプルを提供しています。ManagedC++用 ではありません。 ■以前のバージョンのViasual C++ を使われていた方 Visual C++ 6.0以前のお客様で開発されたプログラムおよびCD-ROM収録サンプルプログラム (¥VC2CPP,¥VC6CPP)をコンパイル/実行する場合修正する必要があります。 変更に際してはVisual C++ .NETヘルプにて確認の上行ってください。 以下のコードがあると、うまくプログラムが起動しないことがありますので削除してください。 CWinAppのInitInstanceに以下のコードがある場合は削除 //Enable3dControls();//LoadStdProfileSettings(0); // 標準 INI ファイルをロードします。(MRUを含む)
なお、変換されたプロジェクトはMFCアプリケーションです。新規にプロジェクトを作成さ れる場合は、[Visual C++プロジェクト] - [MFCアプリケーション]を選択してください。
API-PAC(W32)RM/DIO 9
Borland Delphiでご使用の際の注意点
◆Borland Delphi
■関数仕様 WIN32API形式の関数として使えます。 ■関数引数、戻り値 関数引数、戻り値の内容はご使用になる開発言語に依存せず共通になります。 詳細は[関数のリファレンス]を参照ください。 ■関数リファレンスの書式について 書式の引数の型は、サンプルプログラムにある関数宣言を参照してください。 ¥apiXXX.pas (XXXはSIO/DIO/AIO/GPIB/CNT/SMC等)10 API-PAC(W32)RM/DIO
プログラミング・動作テストを始める前に
プログラミングやサンプルプログラムによる動作テストを行う前に、API-DIO(98/PC)W95、NT の使用方法を理解するために以下の説明を読んでからお使いください。 ■論理デバイス API-DIO(98/PC)W95、NTでは、複数枚のボードを1つの論理デバイスとして設定し、この論 理デバイスに対してOpen, Inp, Out, Close等の操作を行います。論理デバイスは、ドライバ番号 とグループ番号の組み合わせ、またはデバイス名で表します。 ■API-TOOLコンフィグレーション 論理デバイスの設定を行い、設定情報をレジストリに保存するのが、API-TOOLコンフィグレ ーションプログラム(CONFIG.EXE)です。API-TOOLの各関数を使用する前には、必ずAPI-TOOLコンフィグレーションでボードの設定を行う必要があります。 API-TOOLコンフィグレーションを起動して、ボードのI/Oアドレス、IRQ等を設定して保存す ると、API-DIOの各関数が使用可能になります。 ■ドライバ番号とグループ番号 論理デバイスはドライバ番号とグループ番号によって表されます。 ドライバ番号は、ボードの種類(入出力固定点数ボード、プログラマブルボード、PCIバス対応 ボード、Eシリーズボード)によって決まる番号(0∼3)です。 グループ番号は、各ドライバ番号に対してぶら下がる番号(1∼16)です。番号で示される各グ ループ(論理デバイス)には、それぞれ4枚までのボードが設定できます。 各グループに登録されたボードの入出力ポートは、論理ポート、論理ビットとして0から順番 に並べられた数値で表されます。 ハードウェアの解説書に書かれているグループと、API-TOOLで言うところのグループは全く 別物ですので、混同しないように注意してください。 ■論理ポートと論理ビット 1つのグループ(論理デバイス)に登録されたボードのボード番号1から4までに含まれる入力な ら入力、出力なら出力のポート(ビット)をすべて並べて、0から順番に番号を付けたものを、 論理ポート(論理ビット)と言います。API-DIOの入出力関数は、すべてこの論理ポートと論理 ビットを使って入出力を行います。 例:ドライバ番=0、グループ番号=1、デバイス名“DIO00” 論理ポート 論理ビット ボード番号 ボード 入力 出力 入力 出力 1 PIO-32/32L(PC) 0∼3 0∼3 0∼31 0∼31 2 PI-64L(PC) 4∼11 32∼95 3 PO-64L(PC) 4∼11 32∼95 4 PIO-16/16L(PC)H 12∼13 12∼13 96∼111 96∼111 各用語に対するより詳しい説明は、「第4章 用語説明」を参照してください。API-PAC(W32)RM/DIO 11 本ドライバは、DLLとデバイスドライバ(VXD/SYS)ファイルで提供されています。 作成されたアプリケーションを他の環境で使用する場合、以下のファイルをコピーしてください。 ここに記述されていない他の依存ファイルについての詳細は、ヘルプを参照してください。
◆Windows Me/98/95
API-TOOLコンフィグレーションファイル :C:¥CONTECW95¥CONFIG.EXE C:¥CONTECW95¥APCFG.DLL C:¥WINDOWS¥SYSTEM¥APCFG.VXD DLLファイル :C:¥WINDOWS¥SYSTEM¥APIDIO.DLL VXDファイル :C:¥WINDOWS¥SYSTEM¥APIDIO00.VXD :C:¥WINDOWS¥SYSTEM¥APIDIO01.VXD :C:¥WINDOWS¥SYSTEM¥APIDIO02.VXD :C:¥WINDOWS¥SYSTEM¥APIDIO03.VXD :C:¥WINDOWS¥SYSTEM¥APIDIO04.VXD◆Windows XP/2000/NT
API-TOOLコンフィグレーションファイル :C:¥CONTEC¥CONFIG.EXE C:¥CONTEC¥APCFG.DLL C:¥WINNT¥SYSTEM32¥DRIVERS¥APCFG.SYS DLLファイル :C:¥WINNT¥SYSTEM32¥APIDIO.DLL SYSファイル :C:¥WINNT¥SYSTEM32¥DRIVERS¥APIDIO00.SYS :C:¥WINNT¥SYSTEM32¥DRIVERS¥APIDIO01.SYS :C:¥WINNT¥SYSTEM32¥DRIVERS¥APIDIO02.SYS :C:¥WINNT¥SYSTEM32¥DRIVERS¥APIDIO03.SYS :C:¥WINNT¥SYSTEM32¥DRIVERS¥APIDIO04.SYS 作成するアプリケーションからDLLの関数を呼び出すには、以下の手順が必要です。 ■VisualC++の場合 ① サンプルプログラムに含まれているヘッダファイル(APIDIO.H)をインクルードしてください。 ② サンプルプログラムに含まれているLIBファイル(APIDIO.LIB)をプロジェクトに追加して ください。 ■VisualBasicの場合 ① サンプルプログラムに含まれている標準モジュール(APIDIO.BAS)をプロジェクトに追加し てください。 ■BorlandCの場合 ① サンプルプログラムに含まれているヘッダファイル(APIDIO.H)をインクルードしてください。 ② サンプルプログラムに含まれているLIBファイル(APIDIOBC.LIB)をプロジェクトに追加し てください。
API-PAC(W32)RM/DIO 13
第2章 関数のリファレンス
関数一覧
サポートしている関数は以下のとおりです。なお、PIO-32DM(PCI)関数については第3章を参 照してください。 < 1 / 2 > 関数名 機 能 ■共通部 DioOpen 初期化処理 DioOpenEx 初期化処理(デバイス名) DioClose 終了処理 DioWait 指定時間の待ち時間処理 DioWaitEx 指定時間の待ち時間処理(1ms単位) DioSFilter 指定グループのフィルタ処理 DioUseMutex マルチプロセス時の排他処理 ■PIO-32D(PM)専用関数DioSetIoDirection PIO-32D(PM) (Dual)の入出力設定 DioGetIoDirection PIO-32D(PM) (Dual)の入出力設定取得 ■8255搭載ボード専用関数 Dio8255Mode プログラマブルボードの8255モード設定 DioGet8255Mode プログラマブルボードの8255モード設定取得 ■基本機能関数 ■デジタル入出力関数 簡易入出力関数 DioInpByte 指定ポートのデジタル入力処理 DioOutByte 指定ポートのデジタル出力処理 DioEchoBackByte 指定ポートのリードバックデータ入力処理 DioInpBit 指定ビットのデジタル入力処理 DioOutBit 指定ビットのデジタル出力処理 DioEchoBackBit 指定ビットのリードバックデータ入力処理 複数バイト(ビット)入出力関数 DioInp 指定ポートのデジタル入力処理(複数バイト) DioOut 指定ポートのデジタル出力処理(複数バイト) DioEchoBack 指定ポートのリードバックデータ入力処理(複数バイト) DioBitInp 指定ビットのデジタル入力処理(複数ビット) DioBitOut 指定ビットのデジタル出力処理(複数ビット) DioBitEchoBack 指定ビットのリードバックデータ入力処理(複数ビット) バックグラウンド入出力関数 DioInpBack バックグラウンドでの指定ポートのデジタル入力処理 DioOutBack バックグラウンドでの指定ポートのデジタル出力処理 DioBitInpBack バックグラウンドでの指定ビットのデジタル入力処理 DioBitOutBack バックグラウンドでの指定ビットのデジタル出力処理 DioSts 関数のバックグラウンドでの実行状態の取得 DioStop バックグラウンドでのデジタル入出力処理の停止 ■割り込み機能関数 DioEvent 割り込みイベントの設定 DioIntEnable 割り込みイベント信号入力の禁止/許可の設定 DioIntSence 割り込みコントロールポートのステータスの取得 DioEventEx 割り込みイベントの設定(拡張版) DioIntEnableEx 割り込みイベント信号入力の禁止/許可の設定(拡張版)
14 API-PAC(W32)RM/DIO < 2 / 2 > 関数名 機 能 ■高機能関数 ■プロセスコントロール機能関数 DioPtnSet プロセスパターンの設定 DioPtnStart プロセスコントロール開始 DioPtnSts プロセス開始時のステータスの取得 ■トリガ監視機能関数 DioTrgSet トリガ監視ビットの設定 DioTrgStart トリガ開始 DioTrgSts トリガイベント発生時のステータスの取得 ■コード変換機能関数 DioInpBCD 指定ポートのデータをBCDコードに変換して入力 DioOutBCD 指定ポートのデータをBCDコードに変換して出力 DioNInpBCD 指定ポートのデータをBCDコードに変換して入力 (負論理) DioNOutBCD 指定ポートのデータをBCDコードに変換して出力(負論理) ■その他
LpByte 符号なしバイト変数のポインタ取得(Visual Basic) LpWord 符号なしワード変数のポインタ取得(Visual Basic) LpDWord 符号なしダブルワード変数のポインタ取得(Visual Basic)
関数実行にあたり... ・ 関数の実行順序としては、最初に初期化処理を行わなければなりません。初期化処理を行 って、初めて他の関数が使用できるようになります。 ・ プログラムの終了には、終了処理を実行してください。終了処理を実行せずにプログラム を終了した場合、その後のプログラムが正常に動作しないことがあります。 ・ 1度初期化処理を実行した後に再度初期化処理を行う場合は、1度終了処理を行ってから初 期化処理を実行するようにしてください。 (初期化処理と終了処理は、対で存在しなければなりません。)
API-PAC(W32)RM/DIO 15
DioOpen
■使用可能ボード 対象ボードすべて ■機能 使用するボード用のデバイスドライバをオープンし、ドライバの各関数を 使用可能にします。 ■書式 (C言語用) HANDLE hDrv; WORD DrvNo; WORD GrpNo; DWORD dwRet;dwRet = DioOpen( &hDrv, DrvNo, GrpNo);
(Visual Basic用) Dim hDrv As Long Dim DrvNo As Integer Dim GrpNo As Integer Dim dwRet As Long
dwRet = DioOpen(hDrv, DrvNo, GrpNo)
■引数 hDrv : 使用するグループのデバイスハンドルを取得します。 他のDioXxxx関数を実行する時には、このデバイスハンド ルを指定します。 DrvNo : オープンするドライバ番号を指定してください。 指定可能な範囲 : 0 ≦ DrvNo ≦ 3 設定範囲外である場合、001hを返します。 GrpNo : 使用するグループ番号を指定してください。 指定可能な範囲 : 1 ≦ GrpNo ≦ 16 設定範囲外である場合、戻り値003hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① 使用するボードのハードウェア環境(ボードID、I/Oアドレス、割り込 みレベル、ボードID)を変更する場合は、終了処理(DioClose)を行って から、再度API-TOOLコンフィグレーションプログラムを実行し、グ ループ内容を再設定する必要があります。 ② 1度初期化処理(DioOpen)を行った後に、再度初期化処理(DioOpen)を 行いたいときは、1度終了処理(DioClose)を行ってから初期化処理 (DioOpen)を実行するようにしてください。 ③ プログラムの終了には、終了処理(DioClose)を実行してください。終了 処理(DioClose)を実行せずにプログラムを終了した場合、その後のプロ グラムが正常に動作しないことがあります。 ④ この関数を実行すると、ボードの初期化を行います。 ⑤ 1つのグループに対して最大16プロセスまでアクセスすることができます。
16 API-PAC(W32)RM/DIO ■設定例 例) API-TOOLコンフィグレーションプログラムでグループ番号1に設定されたドライ バ番号0のボードを使用開始する場合 ●C言語用 HANDLE hDrv; WORD GrpNo, DrvNo; DWORD dwRet; DrvNo = 0;
GrpNo = 1;
dwRet = DioOpen(&hDrv, DrvNo, GrpNo);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim DrvNo As Integer Dim GrpNo As Integer Dim dwRet As Long DrvNo = 0
GrpNo = 1
dwRet = DioOpen(hDrv, DrvNo, GrpNo)
API-PAC(W32)RM/DIO 17
DioOpenEx
■使用可能ボード 対象ボードすべて ■機能 使用するボード用のデバイスドライバをオープンし、ドライバの各関数を 使用可能にします。 ■書式 (C言語用) char *DeviceName HANDLE hDrv; DWORD dwRet;dwRet = DioOpenEx(DeviceName, &hDrv);
(Visual Basic用)
Dim DeviceName As String Dim hDrv As Long Dim dwRet As Long
dwRet = DioOpenEx(DeviceName, hDrv) ■引数 hDrv : 使用するグループのデバイスハンドルを取得します。 他のDioXxxx関数を実行する時には、このデバイスハンド ルを指定します。 DeviceName : オープンするデバイス名を指定してください。 デバイス名はAPI-TOOLコンフィグレーションプログラム で設定します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① 使用するボードのハードウェア環境(ボードID、I/Oアドレス、割り込 みレベル、ボードID)を変更する場合は、終了処理(DioClose)を行って から、再度API-TOOLコンフィグレーションプログラムを実行し、グ ループ内容を再設定する必要があります。 ② プログラムの終了には、終了処理(DioClose)を実行してください。終了 処理(DioClose)を実行せずにプログラムを終了した場合、その後のプロ グラムが正常に動作しないことがあります。 ③ 1つのグループに対して最大16プロセスまでアクセスすることができます。 ④ DioOpenExは1つのプログラム中で複数回実行できます。プログラム終 了時には、DioOpenExを実行した回数だけDioCloseを実行する必要が あります。
18 API-PAC(W32)RM/DIO ■設定例 例) API-TOOLコンフィグレーションプログラムで“DIO00”に設定されたボードを使用 開始する場合 ●C言語用 HANDLE hDrv; DWORD dwRet;
dwRet = DioOpenEx(“DIO00”, &hDrv);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim dwRet As Long
dwRet = DioOpenEx(“DIO00”, hDrv)
API-PAC(W32)RM/DIO 19
DioClose
■使用可能ボード 対象ボードすべて ■機能 指定したデバイスの終了処理を行います。 ■書式 (C言語用) HANDLE hDrv; DWORD dwRet; dwRet = DioClose(hDrv); (Visual Basic用) Dim hDrv As Long Dim dwRet As LongdwRet = DioClose(hDrv) ■引数 hDrv : 終了するデバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① 終了処理実行後は、指定グループに対して、(DioOpen, DioOpenEx以外 の)ドライバの各関数は実行できません。 ■設定例 例) 使用可能(DioOpenでハンドル 'hDrv' を取得した)状態にあったボードの使用を終 了する場合 ポイント: DioCloseで指定するハンドルは、DioOpenで取得したハンドルです。 ●C言語用 HANDLE hDrv; DWORD dwRet; dwRet = DioClose(hDrv); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim dwRet As Long dwRet = DioClose(hDrv)
20 API-PAC(W32)RM/DIO
DioWait
■使用可能ボード 対象ボードすべて ■機能 指定した時間のウェイトを発生します。 ■書式 (C言語用) HANDLE hDrv; WORD WaitTim; DWORD dwRet; dwRet = DioWait(hDrv, WaitTim);(Visual Basic用) Dim hDrv As Long Dim WaitTim As Integer Dim dwRet As Long
dwRet = DioWait(hDrv, WaitTim)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 WaitTim : ウェイトを発生させる時間を指定してください。 指定可能な範囲 : 1 ≦ WaitTim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × WaitTim 設定範囲外である場合、戻り値60Ahを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、指定した時間後に戻り値を返します。 ② 発生するウェイトはソフトウェアにより実現していますので、多少の 時間誤差は生じます。 ③ ウェイトの調整を行うには、診断プログラムを実行してください。 ■設定例 例) 指定した時間のウェイトを発生する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; WORD WaitTim; WaitTim = 10; /* ウェイトを発生させる時間を指定 */ dwRet = DioWait(hDrv, WaitTim);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim dwRet As Long Dim WaitTim As Integer
WaitTim = 10 ' ウェイトを発生させる時間を指定 dwRet = DioWait(hDrv, WaitTim)
API-PAC(W32)RM/DIO 21
DioWaitEx
■使用可能ボード 対象ボードすべて ■機能 指定した時間のウェイトを発生します。 ■書式 (C言語用) HANDLE hDrv; DWORD WaitTim; DWORD dwRet;dwRet = DioWaitEx(hDrv, WaitTim);
(Visual Basic用) Dim hDrv As Long Dim WaitTim As Long Dim dwRet As Long
dwRet = DioWaitEx(hDrv, WaitTim)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 WaitTim : ウェイトを発生させる時間を指定してください。 指定可能な範囲 : 1 ≦ WaitTim ≦ FFFFFFFFh 実際の時間間隔 [ms] = 1[ms] × WaitTim 設定範囲外である場合、戻り値60Ahを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、指定した時間後に戻り値を返します。 ② 発生するウェイトはソフトウェアにより実現していますので、多少の 時間誤差は生じます。 ③ ウェイトの調整を行うには、診断プログラムを実行してください。 ■設定例 例) 指定した時間のウェイトを発生する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD WaitTim; WaitTim = 10; /* ウェイトを発生させる時間を指定 */ dwRet = DioWaitEx(hDrv, WaitTim);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim dwRet As Long Dim WaitTim As Long
WaitTim = 10 ' ウェイトを発生させる時間を指定 dwRet = DioWaitEx(hDrv, WaitTim)
22 API-PAC(W32)RM/DIO
DioSFilter
■使用可能ボード デジタル入力可能ボード ■機能 指定したデバイス(グループ)の全ての入力端子にデジタルフィルタをかけ ます。これにより、入力端子に発生するノイズおよびチャタリングを防止 することが出来ます。 ■書式 (C言語用) HANDLE hDrv; WORD TimCode; WORD InpBitNo; DWORD dwRet;dwRet = DioSFilter(hDrv, TimCode, InpBitNo);
(Visual Basic用) Dim hDrv As Long Dim TimCode As Integer Dim InpBitNo As Integer Dim dwRet As Long
dwRet = DioSFilter(hDrv, TimCode, InpBitNo)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 TimCode : デジタルフィルタの時定数を指定してください。 指定可能な範囲 : Eシリーズボード、PCIバス対応ボード(PIO-48D(PCI)は除 く)およびCompactPCIバス対応ボード 0 ≦ TimCode ≦ 20 入出力点数固定ボードおよびプログラマブルボード 0, 12 ≦ TimCode ≦ 20 設定範囲外である場合、戻り値634hを返します。 InpBitNo : 割り込み入力を行う論理ビット番号が格納されている変数 を指定してください。 この変数は、入出力点数固定ボードおよびプログラマブル ボードのみに有効です。Eシリーズボード、PCIバス対応ボ ードおよびCompactPCIバス対応ボードを使用する場合は、 0を指定してください。 指定可能な範囲 : 0 ≦ InpBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照)
API-PAC(W32)RM/DIO 23 ■補足 ① この関数は実行後すぐに戻ります。この関数の実行後は指定したデバ イス(グループ)の全ての入力信号にデジタルフィルタ処理が行われま す。また、関数の使用後は本関数、DioOpenまたはDioCloseを実行しな い限りデジタルフィルタ処理は継続します。 ② 入出力点数固定ボードおよびプログラマブルボードでは、ソフトウェ アによりフィルタを実現しておりますので、時定数に多少の時間誤差 が生じます。 ■設定例 例) 指定したデバイスに対して8.192[ms]のフィルタをかける場合 ポイント: 時定数 = 8.192[ms] 割り込み入力端子 : 論理ビット 0 ●C言語用 HANDLE hDrv; WORD TimCode; WORD InpBitNo; DWORD dwRet; TimCode = 16; /* 時定数を指定 */ InpBitNo = 0; /* 論理ビット 0 */ dwRet = DioSFilter(hDrv, TimCode, InpBitNo);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim Timcode As Integer Dim InpBitNo As Integer Dim dwRet As Long
TimCode = 16 ' 時定数を指定 InpBitNo = 0 ' 論理ビット 0 dwRet = DioSFilter(hDrv, TimCode, InpBitNo)
24 API-PAC(W32)RM/DIO
DioUseMutex
■使用可能ボード 対象ボードすべて ■機能 マルチプロセス環境において、Dio関数間での排他処理を行うかどうかを 設定します。 ■書式 (C言語用) WORD wSw; DioUseMutex(wSw); (Visual Basic用) Dim wSw As Integer DioUseMutex(wSw) ■引数 wSw : Mutexを使用した排他処理を行うかどうかを指定します。 0 : Mutexを使用しない 1 : Mutexを使用する ■補足 ① この関数は、API-DIOの関数を複数のプログラムから呼び出して使用 する場合に使用します。 ② この関数の呼び出しを行わない場合、Mutexによる複数プロセス間で の排他は行われません。 ③ Mutexに関する詳細は、お手持ちのWin32APIのマニュアル等を参照し てください。 ④ Mutexによる排他処理を行うと、関数呼び出しの際に若干の速度低下 が起こります。 ■設定例 例) Mutexによる排他処理を行う場合 ●C言語用 WORD wSw; wSw = 1; /* 排他処理を行う */ DioUseMutex(wSw); ●Visual Basic用 Dim wSw As Integer wSw = 1 ' 排他処理を行う DioUseMutex(wSw)API-PAC(W32)RM/DIO 25
Dio8255Mode
■使用可能ボード プログラマブルボード ■機能 プログラマブルボードに搭載されているLSIi8255チップの設定をチップ単 位で行います。 ■書式 (C言語用) HANDLE hDrv; WORD CNx; WORD CtrlWord; DWORD dwRet;dwRet = Dio8255Mode(hDrv, CNx, CtrlWord);
(Visual Basic用) Dim hDrv As Long Dim CNx As Integer Dim CtrlWord As Integer Dim dwRet As Long
dwRet = Dio8255Mode(hDrv, CNx, CtrlWord)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 CNx : 使用するプログラマブルボードのLSIi8255チップ番号を指 定してください。 指定可能な範囲 : 0 ≦ CNx ≦ 同じグループに設定されているボード上の LSIi8255チップの総数 - 1 設定範囲外である場合、戻り値630hを返します。 CtrlWord : コントロールワードを指定してください。 8255モード、コントロールワードの設定値についての詳細 は、ボード添付の解説書を参照してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、プログラマブルボードのみ使用できます。 入出力点数固定ボード、PCIバス対応ボード(PIO-48D(PCI)は除く)、 CompactPCIバス対応ボードおよびEシリーズボードでこの関数を実行 した場合、戻り値631hを返します。 ② プログラマブルボードを使用する場合は、まずDioOpenを実行し、次 にこの関数で入出力ポート(入出力点数)を設定してから、入出力関数 (DioInp, DioOut)を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。
26 API-PAC(W32)RM/DIO ■設定例 例) 入出力ポート(論理ポート番号0∼5)を全て入力ポートとして設定する場合 ポイント: 設定する8255モードおよびコントロールワードは、あらかじめボード 添付の解説書で確認しておいてください。 ●C言語用 HANDLE hDrv; WORD CNx, CtrlWord; DWORD dwRet; CtrlWord = 0x9B; for(CNx = 0; CNx < 2; CNx++){
dwRet = Dio8255Mode(hDrv, CNx, CtrlWord); }
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim CtrlWord As Integer Dim CNx As Integer Dim dwRet As Long CtrlWord = &H9B For CNx = 0 To 1
dwRet = Dio8255Mode(hDrv, CNx, CtrlWord) End
API-PAC(W32)RM/DIO 27
DioGet8255Mode
■使用可能ボード プログラマブルボード ■機能 プログラマブルボードに搭載されているLSIi8255チップの設定値をチップ 単位で取得します。 ■書式 (C言語用) HANDLE hDrv; WORD CNx; WORD CtrlWord; DWORD dwRet;dwRet = DioGet8255Mode(hDrv, CNx, &CtrlWord);
(Visual Basic用) Dim hDrv As Long Dim CNx As Integer Dim CtrlWord As Integer Dim dwRet As Long
dwRet = DioGet8255Mode(hDrv, CNx, CtrlWord)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 CNx : 使用するプログラマブルボードのLSIi8255チップ番号を指 定してください。 指定可能な範囲 : 0 ≦ CNx ≦ 同じグループに設定されているボード上の LSIi8255チップの総数 – 1 設定範囲外である場合、戻り値630hを返します。 CtrlWord : コントロールワードを格納する変数のアドレスを指定して ください。8255モード、コントロールワードの設定値につ いての詳細は、ボード添付の解説書を参照してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、プログラマブルボードのみ使用できます。 入出力点数固定ボード、PCIバス対応ボード(PIO-48D(PCI)を除く)、 CompactPCIバス対応ボードおよびEシリーズボードでこの関数を実行 した場合、戻り値631hを返します。 ② まずDioOpenを実行し、Dio8255Modeでモードを設定した後でこの関数 で設定値を取得してください。 ③ Windows98/95では、DioOpen実行直後には全ポート入力の設定になっ ています。他のプログラムがすでに実行中で、Dio8255Modeでコント ロールワードを設定している場合は、その設定値を返します。 ④ Windows2000/NTでは、システム起動時には全ポート入力の設定になっ ています。一度Dio8255Modeでコントロールワードを設定した後は、 その設定値を返すようになります。
28 API-PAC(W32)RM/DIO ■設定例 例)入出力ポート(論理ポート番号0∼2)のモードを取得する場合。 ●C言語用 HANDLE hDrv; WORD CNx, CtrlWord; DWORD dwRet; CNx = 0;
dwRet = DioGet8255Mode(hDrv, CNx, &CtrlWord);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim CtrlWord As Integer Dim CNx As Integer Dim dwRet As Long CNx = 0
dwRet = DioGet8255Mode(hDrv, CNx, CtrlWord) ErrChk(dwRet) ' エラーチェック関数
API-PAC(W32)RM/DIO 29
DioSetIoDirection
■使用可能ボード PIO-32D(PM) ■機能 I/Oポートの入出力方向を設定します。 ■書式 (C言語用) HANDLE hDrv; WORD BoardNo; DWORD dwDir; DWORD dwRet;dwRet = DioSetIoDirection(hDrv, BoardNo, dwDir);
(Visual Basic用) Dim hDrv As Long Dim BoardNo As Integer Dim dwDir As Long Dim dwRet As Long
dwRet = DioSetIoDirection(hDrv, BoardNo, dwDir)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 BoardNo : 設定するボードのボード番号を指定してください。 指定可能な範囲 : 0 ≦ BoardNo ≦ 同じグループに設定されているボードプ の総数 - 1 設定範囲外である場合、戻り値642hを返します。 dwDir : 入出力方向をビットイメージで指定してください。 指定可能な範囲 : 0 ≦ dwDir ≦ 0xf ビット=1:入力 ビット=0:出力 設定範囲外である場合、戻り値642hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、PIO-32D(PM)(Dual)のみ使用できます。 入出力点数固定ボード、PCIバス対応ボード(PIO-48D(PCI)は除く)、 PIO-32D(PM) (Dual)以外でこの関数を実行した場合、戻り値642hを返 します。 ② PIO-32D(PM)(Dual)を使用する場合は、まずDioOpenを実行し、次にこ の関数で入出力ポートを設定してから、入出力関数(DioInp, DioOut)を 使用するようにしてください。 ③ DioOpenの実行後は、全ポート入力に設定されています。
30 API-PAC(W32)RM/DIO ■設定例 例) 入出力ポート0,1を入力、2,3を出力として設定する場合 ●C言語用 HANDLE hDrv; WORD BoardNo; DWORD dwDir, dwRet; BoardNo = 0;
dwDir = 0x3;
dwRet = DioSetIoDirection(hDrv, BoardNo, dwDir);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim BoardNo As Integer Dim dwDir As Long Dim dwRet As Long BoardNo = 0
dwDir = &H3
dwRet = DioSetIoDirection(hDrv, BoardNo, dwDir) ErrChk(dwRet) ' エラーチェック関数
API-PAC(W32)RM/DIO 31
DioGetIoDirection
■使用可能ボード PIO-32D(PM) ■機能 I/Oポートの入出力方向を取得します。 ■書式 (C言語用) HANDLE hDrv; WORD BoardNo; DWORD dwDir; DWORD dwRet;dwRet = DioGetIoDirection(hDrv, BoardNo, &dwDir);
(Visual Basic用) Dim hDrv As Long Dim BoardNo As Integer Dim dwDir As Long Dim dwRet As Long
dwRet = DioGetIoDirection(hDrv, BoardNo, dwDir)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 BoardNo : 取得するボードのボード番号を指定してください。 指定可能な範囲 : 0 ≦ BoardNo ≦ 同じグループに設定されているボードプ の総数 - 1 設定範囲外である場合、戻り値642hを返します。 dwDir : 入出力方向を格納するバッファのアドレスを指定してくだ さい。 ビット=1:入力 ビット=0:出力 設定範囲外である場合、戻り値642hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、PIO-32D(PM)(Dual)のみ使用できます。 ② DioOpenの実行後は、全ポート入力に設定されています。
32 API-PAC(W32)RM/DIO ■設定例 例) ボード番号0の入出力方向を取得する場合 ●C言語用 HANDLE hDrv; WORD BoardNo; DWORD dwDir, dwRet; BoardNo = 0;
dwRet = DioGetIoDirection(hDrv, BoardNo, &dwDir); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim BoardNo As Integer Dim dwDir As Long Dim dwRet As Long BoardNo = 0
dwRet = DioGetIoDirection(hDrv, BoardNo, dwDir) ErrChk(dwRet) ' エラーチェック関数
API-PAC(W32)RM/DIO 33
DioInpByte
■使用可能ボード デジタル入力可能ボード ■機能 指定した1ポートからデジタルデータの入力を行い、そのデータをバッフ ァに格納します。 ■書式 (C言語用) HANDLE hDrv; WORD InpPortNo; BYTE InpBuf; DWORD dwRet;dwRet = DioInpByte(hDrv, InpPortNo, &InpBuf);
(Visual Basic用) Dim hDrv As Long Dim InpPortNo As Integer Dim InpBuf As Byte Dim dwRet As Long
dwRet = DioInpByte(hDrv, InpPortNo, InpBuf)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 InpPortNo : デジタル入力を行う論理ポート番号を指定してください。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 InpBuf : デジタル入力データを格納するバッファのアドレスを指定 してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル入力機能に対応しているボード(PIボード、PIO ボード)のみ使用できます。 デジタル出力機能のみに対応しているボード(POボード)でこの関数を 実行した場合、戻り値604hを返します。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。
34 API-PAC(W32)RM/DIO ■設定例 例)指定したボードの0ポートからデジタル入力処理を行う場合 ●C言語用 HANDLE hDrv; WORD InpPortNo; BYTE InpBuf; DWORD dwRet; InpPortNo = 0; /* 論理ポート0 */ dwRet = DioInpByte(hDrv, InpPortNo, &InpBuf);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim InpPortNo As Integer Dim InpBuf As Byte Dim dwRet As Long
InpPortNo = 0 ' 論理ポート0 dwRet = DioInpByte(hDrv, InpPortNo, InpBuf)
API-PAC(W32)RM/DIO 35
DioOutByte
■使用可能ボード デジタル出力可能ボード ■機能 指定した1ポートからデジタルデータの出力を行います。 ■書式 (C言語用) HANDLE hDrv; WORD OutPortNo; BYTE OutBuf; DWORD dwRet;dwRet = DioOutByte(hDrv, OutPortNo, OutBuf);
(Visual Basic用) Dim hDrv As Long Dim OutPortNo As Integer Dim OutBuf As Byte Dim dwRet As Long
dwRet = DioOutByte(hDrv, OutPortNo, OutBuf)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 OutPortNo : デジタル出力を行う論理ポート番号を指定してください。 指定可能な範囲 : 0 ≦ OutPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 OutBuf : デジタル出力データを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル出力機能に対応しているボード(POボード、PIO ボード)のみ使用できます。 デジタル入力機能のみに対応しているボード(PIボード)でこの関数を 実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。
36 API-PAC(W32)RM/DIO ■設定例 例)指定したボードの0ポートに55hのデジタル出力処理を行う場合 ●C言語用 HANDLE hDrv; WORD OutPortNo; BYTE OutBuf; DWORD dwRet; OutPortNo = 0; /* 論理ポート0 */ OutBuf = 0x55; /* 出力データ */ dwRet = DioOutByte(hDrv, OutPortNo, OutBuf);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim OutPortNo As Integer Dim OutBuf As Byte Dim dwRet As Long
OutPortNo = 0 ' 論理ポート0 OutBuf = &H55 ' 出力データ dwRet = DioOutByte(hDrv, OutPortNo, OutBuf)
API-PAC(W32)RM/DIO 37
DioEchoBackByte
■使用可能ボード デジタル出力可能ボード ■機能 指定した1ポートから出力されているデジタルデータのリードバックを行 い、そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; WORD OutPortNo; BYTE InpBuf; DWORD dwRet;dwRet = DioEchoBackByte(hDrv, OutPortNo, & InpBuf);
(Visual Basic用) Dim hDrv As Long Dim OutPortNo As Integer Dim InpBuf As Byte Dim dwRet As Long
dwRet = DioEchoBackByte(hDrv, OutPortNo, InpBuf)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 OutPortNo : デジタル入力を行う論理ポート番号を指定してください。 指定可能な範囲 : 0 ≦ OutPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 InpBuf : ポートデータのリードバックデータを格納するバッファの アドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル出力機能に対応しているボード(POボード、PIO ボード)のみ使用できます。 デジタル入力機能のみに対応しているボード(PIボード)でこの関数を 実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。
38 API-PAC(W32)RM/DIO ■設定例 例)指定したボードの0ポートからリードバックデータ入力処理を行う場合 ●C言語用 HANDLE hDrv; WORD OutPortNo; BYTE InpBuf; DWORD dwRet; OutPortNo = 0; /* 論理ポート0 */ dwRet = DioEchobackByte(hDrv, OutPortNo, & InpBuf); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim OutPortNo As Integer Dim InpBuf As Byte Dim dwRet As Long
OutPortNo = 0 ' 論理ポート0 dwRet = DioEchoBackByte(hDrv, OutPortNo, InpBuf) ErrChk(dwRet) ' エラーチェック関数
API-PAC(W32)RM/DIO 39
DioInpBit
■使用可能ボード デジタル入力可能ボード ■機能 指定した1ビットからデジタルデータの入力を行い、そのデータをバッフ ァに格納します。 ■書式 (C言語用) HANDLE hDrv; WORD InpBitNo; BYTE InpBuf; DWORD dwRet;dwRet = DioInpBit(hDrv, InpBitNo, &InpBuf);
(Visual Basic用) Dim hDrv As Long Dim InpBitNo As Integer Dim InpBuf As Byte Dim dwRet As Long
dwRet = DioInpBit(hDrv, InpBitNo, InpBuf)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 InpBitNo : デジタル入力を行う論理ビット番号を指定してください。 指定可能な範囲 : 0 ≦ InpBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 InpBuf : デジタル入力データを格納するバッファのアドレスを指定 してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル入力機能に対応しているボード(PIボード、PIO ボード)のみ使用できます。 デジタル出力機能のみに対応しているボード(POボード)でこの関数を 実行した場合、戻り値604hを返します。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。
40 API-PAC(W32)RM/DIO ■設定例 例)指定したボードの0ビットからデジタル入力処理を行う場合 ●C言語用 HANDLE hDrv; WORD InpBitNo; BYTE InpBuf; DWORD dwRet; InpBitNo = 0; /* 論理ビット0 */ dwRet = DioInpBit(hDrv, InpBitNo, &InpBuf);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim InpBitNo As Integer Dim InpBuf As Byte Dim dwRet As Long
InpBitNo = 0 ' 論理ビット0 dwRet = DioInpBit(hDrv, InpBitNo, InpBuf)
API-PAC(W32)RM/DIO 41
DioOutBit
■使用可能ボード デジタル出力可能ボード ■機能 指定した1ビットのデジタルデータの出力を行います。 ■書式 (C言語用) HANDLE hDrv; WORD OutBitNo; BYTE OutBuf; DWORD dwRet;dwRet = DioOutBit(hDrv, OutBitNo, OutBuf);
(Visual Basic用) Dim hDrv As Long Dim OutBitNo As Integer Dim OutBuf As Byte Dim dwRet As Long
dwRet = DioOutBit(hDrv, OutBitNo, OutBuf)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 OutBitNo : デジタル出力を行う論理ビット番号を指定してください。 指定可能な範囲 : 0 ≦ OutBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 OutBuf : デジタル出力データを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル出力機能に対応しているボード(POボード、PIO ボード)のみ使用できます。 デジタル入力機能のみに対応しているボード(PIボード)でこの関数を 実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。
42 API-PAC(W32)RM/DIO ■設定例 例)指定したボードの0ビットに1hのデジタル出力処理を行う場合 ●C言語用 HANDLE hDrv; WORD OutBitNo; BYTE OutBuf; DWORD dwRet; OutBitNo = 0; /* 論理ビット0 */ OutBuf = 0x1; /* 出力データ */ dwRet = DioOutBit(hDrv, OutBitNo, OutBuf);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim OutBitNo As Integer Dim OutBuf As Byte Dim dwRet As Long
OutBitNo = 0 ' 論理ポート0 OutBuf = &H1 ' 出力データ dwRet = DioOutBit(hDrv, OutBitNo, OutBuf)
API-PAC(W32)RM/DIO 43
DioEchoBackBit
■使用可能ボード デジタル出力可能ボード ■機能 指定した1ビットから出力されているデジタルデータのリードバックを行 い、そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; WORD OutBitNo; BYTE InpBuf; DWORD dwRet;dwRet = DioEchoBackBit(hDrv, OutBitNo, &InpBuf)
(Visual Basic用) Dim hDrv As Long Dim OutBitNo As Integer Dim InpBuf As Byte Dim dwRet As Long
dwRet = DioEchoBackBit(hDrv, OutBitNo, InpBuf)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 OutBitNo : デジタル入力を行う論理ビット番号を指定してください。 指定可能な範囲 : 0 ≦ OutBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 InpBuf : ビットデータのリードバックデータを格納するバッファの アドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル出力機能に対応しているボード(POボード、PIO ボード)のみ使用できます。 デジタル入力機能のみに対応しているボード(PIボード)でこの関数を 実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。
44 API-PAC(W32)RM/DIO ■設定例 例)指定したボードの0ビットからリードバックデータ入力処理を行う場合 ●C言語用 HANDLE hDrv; WORD OutBitNo; BYTE InpBuf; DWORD dwRet; OutBitNo = 0; /* 論理ビット0 */ dwRet = DioEchoBackBit(hDrv, OutBitNo, &InpBuf);
ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用
Dim hDrv As Long Dim OutBitNo As Integer Dim InpBuf As Byte Dim dwRet As Long
OutBitNo = 0 ' 論理ビット0 dwRet = DioEchoBackBit(hDrv, OutBitNo, InpBuf) ErrChk(dwRet) ' エラーチェック関数
API-PAC(W32)RM/DIO 45
DioInp
■使用可能ボード デジタル入力可能ボード ■機能 指定したポートからデジタルデータの入力を行い、そのデータをバッファ に格納します。 ■書式 (C言語用) HANDLE hDrv; DINP lpDInp; DWORD dwRet; dwRet = DioInp(hDrv, &lpDInp);(Visual Basic用) Dim hDrv As Long Dim lpDInp As DINP Dim dwRet As Long
dwRet = DioInp(hDrv, lpDInp)
■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDInp : デジタル入力の設定状態を格納するDINP構造体のアドレ スを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数は、デジタル入力機能に対応しているボード(PIボード、PIO ボード)のみ使用できます。デジタル出力機能のみに対応しているボー ド(POボード)でこの関数を実行した場合、戻り値604hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。