Comments
Description
Transcript
API-PAC(W32)RM/DIO
PC-MODULE / PC-HELPER API-PAC(W32) DIO編 リファレンスマニュアル API-PAC(W32)RM/DIO 解説書 サポートのご案内 当社製品をより良く、より快適にご使用いただくために、次のサポートを行っております。 ◆ホームページ 日本語 英語 中国語 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用紙に記載されています。 ■その他の製品情報のお問い合わせ 製品の価格・納期・見積もり依頼などのお問い合わせは、販売店または当社各支社・営業所ま でお問い合わせください。 API-PAC(W32)RM/DIO i ◆修理窓口 修理の依頼は、お買い求めの販売店経由で受け付けています。 保証書に記載の条件のもとで、保証期間中に製品自体に不具合が認められた場合は、その製品 を無償で修理または交換いたします。 保証期間終了後、または保証条件外での修理は、有償修理となりますのであらかじめご了承く ださい。 なお、対象は製品のハードウェア部分の修理に限らせていただきます。 ◆製品貸出サービス 製品を評価・理解していただくため、製品の貸出サービスを行っております。 詳細は、当社ホームページをご覧ください。 ◆各種セミナー 新製品の紹介・活用方法、システム構築のための技術習得など、各種セミナーを行っております。 出張プライベートセミナーも承ります。詳細は、当社ホームページをご覧ください。 ◆FA/LA無料相談コーナー 「FA/LA無料相談コーナー」は、お客様がシステムを構築する際に当社製品の選定の相談をお 受けする窓口です。面談によるシステム相談を専門スタッフが担当いたします。 お問い合わせは、当社各支社・営業所までご連絡ください。 ◆システム受託開発、OEM受託 ソフトウェア/ハードウェアの導入方法やシステム構築のご相談、お客様オリジナル・デザイ ンのシステムを製品化し供給するODMやOEMのご提案を行います。 詳しくは、E-mail([email protected])または当社各支社・営業所までお問い合わせください。 ii API-PAC(W32)RM/DIO 安全にご使用いただくために 次の内容をご理解の上、本製品を安全にご使用ください。 ◆安全情報の表記 本書では、人身事故や機器の破壊をさけるため、次のシンボルで安全に関する情報を提供して います。内容をよく理解し、安全に機器を操作してください。 危険 この表示を無視して、誤った取り扱いをすると、人が死亡または重傷を負う 危険が差し迫って生じることが想定される内容を示しています。 警告 この表示を無視して、誤った取り扱いをすると、人が死亡または重傷を負う 可能性が想定される内容を示しています。 注意 この表示を無視して、誤った取り扱いをすると、人が損害を負う可能性が想 定される内容および物的損害のみの発生が想定される内容を示しています。 ◆ご注意 (1) 本書の内容の全部、または一部を無断で転載することは禁止されています。 (2) 本書の内容に関しては将来予告なしに変更することがあります。 (3) 本書の内容については万全を期しておりますが、万一ご不審な点や記載もれなどお気づき のことがありましたら、お買い求めの販売店へご連絡ください。 (4) 本製品の運用を理由とする損失、逸失利益などの請求につきましては、前項にかかわらず、 いかなる責任も負いかねますのであらかじめご了承ください。 (5) MS、Microsoft、Windows、Windows NT、MS-DOSは、米国Microsoft Corporationの各国に おける登録商標または商標です。 その他、本書中に使用している会社名および製品名は、一般に各社の商標または登録商標 です。 API-PAC(W32)RM/DIO iii 目次 サポートのご案内...................................................................................................................................... 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 仕様 .............................................................................................................................................................. 5 Visual 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 ...................................................................................................................................................... 20 iv API-PAC(W32)RM/DIO DioWaitEx ................................................................................................................................................. 21 DioSFilter................................................................................................................................................... 22 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 API-PAC(W32)RM/DIO v DioPtnStart................................................................................................................................................. 89 DioPtnSts ................................................................................................................................................... 91 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 ......................................................................................................................... 149 vi API-PAC(W32)RM/DIO DioDmSetSlaveCfg.................................................................................................................................152 DioDmSetStartTrg...................................................................................................................................154 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章 用語説明 API-PAC(W32)RM/DIO 195 vii viii 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章の関数群を使用してください。 API-PAC(W32)RM/DIO 1 第1章 はじめに 商品の特長 ◆CompactPCIバス対応ボードの場合 ・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ CompactPCIバス対応ボードに対応しています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことができます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル入力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用したデジタルフィルタを使用することにより、チャタリングを 防止することができます。 ◆PCIバス対応ボードの場合 ・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ PCIバス対応ボードに対応しています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことができます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル入力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用したデジタルフィルタを使用することにより、チャタリングを 防止することができます。 ◆Eシリーズボードの場合 ・ 本ドライバは、Win32 API関数の形式で供給されています。 ・ Eシリーズボードに対応しています。 ・ 各グループに最大4枚まで設定することができます。 ・ 指定ポートのデジタル入力を行うことがでの場合きます。 ・ 指定ポートのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル入力を行うことができます。 ・ ハードウェアの機能を利用した指定ビットのデジタル出力を行うことができます。 ・ ハードウェアの機能を利用したデジタルフィルタを使用することにより、チャタリングを 防止することができます。 2 API-PAC(W32)RM/DIO 第1章 はじめに ◆入出力点数固定ボードの場合 ・ 本ドライバは、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の関数を使用してください。 API-PAC(W32)RM/DIO 3 第1章 はじめに 解説書とヘルプファイルの内容 この解説書は、API-TOOLを使用する上で必要な情報である、「概要」、「仕様」、「関数の リファレンス」、「用語説明」などを説明しています。「インストール方法」などの説明は、 API-PAC(W32)の解説書をご覧ください。 本書で説明されていない情報については、このAPI-TOOLをインストールしたあとのヘルプフ ァイルを参照してください。 ヘルプファイル名 “DIO5TD.HLP” ・・・・・・ API-DIOヘルプ “HWINSTJ.HLP”・・・・・ ハードウェアの登録方法ヘルプ ヘルプファイルでは「関数のリファレンス」のほか、「サンプルプログラム」、「Q&A」な どの情報を提供しています。 なお、この解説書中の下線付きの語句は、「第4章 用語説明」のところでアルファベット順お よび五十音順に説明されています。必要に応じて参照してください。 4 API-PAC(W32)RM/DIO 第1章 はじめに 仕様 項目 適応OS 仕様 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 Microsoft Windows NT Server Ver.3.51、Ver.4.0 (実行のみ) 適応言語 Visual C++ .Net 2002、2003 Visual C++ Ver.2.0、Ver.4.x、Ver.5.0、Ver.6.0 *1 Visual Basic .Net 2002、2003 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 *1 *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) API-PAC(W32)RM/DIO 5 第1章 はじめに 項目 対象ボード 仕様 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グループまでサポートします。 *4) グループ内の1枚目に設定されているボードの割り込み信号をその対象とします。 6 API-PAC(W32)RM/DIO 第1章 はじめに 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等) 型宣言の変更例 16Bit 32Bit 64Bit Visual Basic4,5,6 Integer → Long → なし → Any → Visual Basic .NET Short Integer Long 固有のデータ型 ■サンプルプログラム ¥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コントロールを使用しているサンプルは変更の必要は ありません) API-PAC(W32)RM/DIO 7 第1章 はじめに ◆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アプリケーション]を選択してください。 8 API-PAC(W32)RM/DIO 第1章 はじめに Borland Delphiでご使用の際の注意点 ◆Borland Delphi ■関数仕様 WIN32API形式の関数として使えます。 ■関数引数、戻り値 関数引数、戻り値の内容はご使用になる開発言語に依存せず共通になります。 詳細は[関数のリファレンス]を参照ください。 ■関数リファレンスの書式について 書式の引数の型は、サンプルプログラムにある関数宣言を参照してください。 ¥apiXXX.pas API-PAC(W32)RM/DIO (XXXはSIO/DIO/AIO/GPIB/CNT/SMC等) 9 第1章 はじめに プログラミング・動作テストを始める前に プログラミングやサンプルプログラムによる動作テストを行う前に、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の各関数を使用する前には、必ずAPITOOLコンフィグレーションでボードの設定を行う必要があります。 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” ボード番号 ボード 論理ポート 論理ビット 入力 出力 入力 出力 0∼3 0∼31 0∼31 1 PIO-32/32L(PC) 0∼3 2 PI-64L(PC) 4∼11 3 PO-64L(PC) 4 PIO-16/16L(PC)H 32∼95 4∼11 12∼13 12∼13 32∼95 96∼111 96∼111 各用語に対するより詳しい説明は、「第4章 用語説明」を参照してください。 10 API-PAC(W32)RM/DIO 第1章 はじめに 本ドライバは、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 11 第1章 はじめに 12 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 第2章 関数のリファレンス 関数一覧 サポートしている関数は以下のとおりです。なお、PIO-32DM(PCI)関数については第3章を参 照してください。 <1/2> 関数名 機 能 ■共通部 DioOpen 初期化処理 DioOpenEx 初期化処理(デバイス名) DioClose 終了処理 DioWait 指定時間の待ち時間処理 DioWaitEx 指定時間の待ち時間処理(1ms単位) DioSFilter 指定グループのフィルタ処理 DioUseMutex ■PIO-32D(PM)専用関数 DioSetIoDirection DioGetIoDirection ■8255搭載ボード専用関数 Dio8255Mode DioGet8255Mode ■基本機能関数 ■デジタル入出力関数 マルチプロセス時の排他処理 PIO-32D(PM) (Dual)の入出力設定 PIO-32D(PM) (Dual)の入出力設定取得 プログラマブルボードの8255モード設定 プログラマブルボードの8255モード設定取得 簡易入出力関数 DioInpByte 指定ポートのデジタル入力処理 DioOutByte 指定ポートのデジタル出力処理 DioEchoBackByte 指定ポートのリードバックデータ入力処理 DioInpBit 指定ビットのデジタル入力処理 DioOutBit 指定ビットのデジタル出力処理 DioEchoBackBit 複数バイト(ビット)入出力関数 指定ビットのリードバックデータ入力処理 DioInp 指定ポートのデジタル入力処理(複数バイト) DioOut 指定ポートのデジタル出力処理(複数バイト) DioEchoBack 指定ポートのリードバックデータ入力処理(複数バイト) DioBitInp 指定ビットのデジタル入力処理(複数ビット) DioBitOut 指定ビットのデジタル出力処理(複数ビット) DioBitEchoBack バックグラウンド入出力関数 指定ビットのリードバックデータ入力処理(複数ビット) DioInpBack バックグラウンドでの指定ポートのデジタル入力処理 DioOutBack バックグラウンドでの指定ポートのデジタル出力処理 DioBitInpBack バックグラウンドでの指定ビットのデジタル入力処理 DioBitOutBack バックグラウンドでの指定ビットのデジタル出力処理 DioSts 関数のバックグラウンドでの実行状態の取得 DioStop ■割り込み機能関数 バックグラウンドでのデジタル入出力処理の停止 DioEvent 割り込みイベントの設定 DioIntEnable 割り込みイベント信号入力の禁止/許可の設定 DioIntSence 割り込みコントロールポートのステータスの取得 DioEventEx 割り込みイベントの設定(拡張版) DioIntEnableEx 割り込みイベント信号入力の禁止/許可の設定(拡張版) API-PAC(W32)RM/DIO 13 第2章 関数のリファレンス <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度終了処理を行ってから初 期化処理を実行するようにしてください。 (初期化処理と終了処理は、対で存在しなければなりません。) 14 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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 dwRet ■補足 設定範囲外である場合、戻り値003hを返します。 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 使用するボードのハードウェア環境(ボードID、I/Oアドレス、割り込 みレベル、ボードID)を変更する場合は、終了処理(DioClose)を行って から、再度API-TOOLコンフィグレーションプログラムを実行し、グ ループ内容を再設定する必要があります。 ② 1度初期化処理(DioOpen)を行った後に、再度初期化処理(DioOpen)を 行いたいときは、1度終了処理(DioClose)を行ってから初期化処理 (DioOpen)を実行するようにしてください。 ③ プログラムの終了には、終了処理(DioClose)を実行してください。終了 処理(DioClose)を実行せずにプログラムを終了した場合、その後のプロ グラムが正常に動作しないことがあります。 ④ この関数を実行すると、ボードの初期化を行います。 ⑤ 1つのグループに対して最大16プロセスまでアクセスすることができます。 API-PAC(W32)RM/DIO 15 第2章 関数のリファレンス ■設定例 例) 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) ErrChk(dwRet) ' エラーチェック関数 16 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実行する必要が あります。 API-PAC(W32)RM/DIO 17 第2章 関数のリファレンス ■設定例 例) 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) ErrChk(dwRet) ' エラーチェック関数 18 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioClose ■使用可能ボード 対象ボードすべて ■機能 指定したデバイスの終了処理を行います。 ■書式 (C言語用) HANDLE hDrv; DWORD dwRet; dwRet = DioClose(hDrv); (Visual Basic用) Dim hDrv As Long Dim dwRet As Long dwRet = 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) ErrChk(dwRet) API-PAC(W32)RM/DIO ' エラーチェック関数 19 第2章 関数のリファレンス 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) ErrChk(dwRet) 20 ' ウェイトを発生させる時間を指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 21 第2章 関数のリファレンス 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 22 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■補足 ① この関数は実行後すぐに戻ります。この関数の実行後は指定したデバ イス(グループ)の全ての入力信号にデジタルフィルタ処理が行われま す。また、関数の使用後は本関数、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) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 23 第2章 関数のリファレンス DioUseMutex ■使用可能ボード 対象ボードすべて ■機能 マルチプロセス環境において、Dio関数間での排他処理を行うかどうかを 設定します。 ■書式 (C言語用) WORD wSw; DioUseMutex(wSw); (Visual Basic用) Dim wSw As Integer DioUseMutex(wSw) ■引数 wSw ■補足 ① この関数は、API-DIOの関数を複数のプログラムから呼び出して使用 する場合に使用します。 : Mutexを使用した排他処理を行うかどうかを指定します。 0 : Mutexを使用しない 1 : Mutexを使用する ② この関数の呼び出しを行わない場合、Mutexによる複数プロセス間で の排他は行われません。 ③ Mutexに関する詳細は、お手持ちのWin32APIのマニュアル等を参照し てください。 ④ Mutexによる排他処理を行うと、関数呼び出しの際に若干の速度低下 が起こります。 ■設定例 例) Mutexによる排他処理を行う場合 ●C言語用 WORD wSw; wSw = 1; /* 排他処理を行う */ DioUseMutex(wSw); ●Visual Basic用 Dim wSw As Integer wSw = 1 ' 排他処理を行う DioUseMutex(wSw) 24 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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)を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 25 第2章 関数のリファレンス ■設定例 例) 入出力ポート(論理ポート番号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 ErrChk(dwRet) ' エラーチェック関数 26 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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でコントロールワードを設定した後は、 その設定値を返すようになります。 API-PAC(W32)RM/DIO 27 第2章 関数のリファレンス ■設定例 例)入出力ポート(論理ポート番号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) ' エラーチェック関数 28 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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の実行後は、全ポート入力に設定されています。 API-PAC(W32)RM/DIO 29 第2章 関数のリファレンス ■設定例 例) 入出力ポート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) ' エラーチェック関数 30 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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の実行後は、全ポート入力に設定されています。 API-PAC(W32)RM/DIO 31 第2章 関数のリファレンス ■設定例 例) ボード番号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) ' エラーチェック関数 32 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実 行してからこの関数を使用するようにしてください。 API-PAC(W32)RM/DIO 33 第2章 関数のリファレンス ■設定例 例)指定したボードの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) ErrChk(dwRet) ' エラーチェック関数 34 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実 行してからこの関数を使用するようにしてください。 API-PAC(W32)RM/DIO 35 第2章 関数のリファレンス ■設定例 例)指定したボードの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) ErrChk(dwRet) ' エラーチェック関数 36 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実 行してからこの関数を使用するようにしてください。 API-PAC(W32)RM/DIO 37 第2章 関数のリファレンス ■設定例 例)指定したボードの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) ' エラーチェック関数 38 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実 行してからこの関数を使用するようにしてください。 API-PAC(W32)RM/DIO 39 第2章 関数のリファレンス ■設定例 例)指定したボードの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) ErrChk(dwRet) ' エラーチェック関数 40 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実 行してからこの関数を使用するようにしてください。 API-PAC(W32)RM/DIO 41 第2章 関数のリファレンス ■設定例 例)指定したボードの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) ErrChk(dwRet) ' エラーチェック関数 42 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 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を実 行してからこの関数を使用するようにしてください。 API-PAC(W32)RM/DIO 43 第2章 関数のリファレンス ■設定例 例)指定したボードの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) ' エラーチェック関数 44 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioInp ■使用可能ボード デジタル入力可能ボード ■機能 指定したポートからデジタルデータの入力を行い、そのデータをバッファ に格納します。 ■書式 (C言語用) HANDLE DINP hDrv; 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を実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 45 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートと2ポートの合計2ポートのデジタル入力処理を行う場合 ポイント: 論理ポート0 = 先頭ポート 論理ポート2 = 先頭ポートから2番目 ●C言語用 HANDLE hDrv; DINP lpDInp; WORD InpPortNo[2]; BYTE InpBuf[2]; DWORD dwRet; InpPortNo[0] = 0; /* 論理ポート0 */ InpPortNo[1] = 2; /* 論理ポート2 */ lpDInp.InpPortNo = &InpPortNo[0]; /* InpPortNoの先頭アドレスを 指定 */ lpDInp.PortNum = 2; /* 入力ポート数を指定 */ lpDInp.Buf = &InpBuf[0]; /* InpBufの先頭アドレスを 指定 */ dwRet = DioInp(hDrv, &lpDInp); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDInp As DINP Dim InpPortNo(1) As Integer Dim InpBuf(1) As Byte Dim dwRet As Long InpPortNo(0) = 0 InpPortNo(1) = 2 lpDInp.InpPortNo = LpWord(InpPortNo(0)) lpDInp.PortNum = 2 lpDInp.Buf = LpByte(InpBuf(0)) dwRet = DioInp(hDrv, lpDInp) ErrChk(dwRet) 46 ' 論理ポート0 ' 論理ポート2 ' InpPortNoの先頭アドレスを 指定 ' 入力ポート数を指定 ' InpBufの先頭アドレスを指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DINP構造体 ■書式 (C言語用) typedef struct tagDINP{ LPWORD InpPortNo; WORD PortNum; LPBYTE Buf; }DINP; (Visual Basic用) Type DINP InpPortNo As Long PortNum As Integer Buf As Long End Type ■メンバ InpPortNo : デジタル入力を行う論理ポート番号が格納されている配列 の先頭アドレスを指定してください。 複数ポートの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 PortNum : デジタル入力を行うポート数を指定してください。 指定可能な範囲 : 1 ≦ PortNum ≦ 論理ポートの最大値 設定範囲外である場合、戻り値607hを返します。 Buf ■補足 : デジタル入力データを格納するバッファの先頭アドレスを 指定してください。 ① “InpPortNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル入力データを格納するバッファサイズは、必ず“PortNum”で 指定したデータ数が格納できるサイズで確保してください。 API-PAC(W32)RM/DIO 47 第2章 関数のリファレンス DioOut ■使用可能ボード デジタル出力可能ボード ■機能 出力データが格納されているバッファのデータをもとに、指定したポート からデジタルデータの出力を行います。 ■書式 (C言語用) HANDLE hDrv; DOUT lpDOut; DWORD dwRet; dwRet = DioOut(hDrv, &lpDOut); (Visual Basic用) Dim hDrv As Long Dim lpDOu As DOUT Dim dwRet As Long dwRet = DioOut(hDrv, &lpDOut) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDOut : デジタル出力の設定状態を格納するDOUT構造体のアドレ スを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、デジタル出力機能に対応しているボード(POボード、 PIOボード)のみ使用できます。デジタル入力機能のみに対応している ボード(PIボード)でこの関数を実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 48 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの1ポートに55hと3ポートにAAh、合計2ポートのデジタル出力処 理を行う場合 ポイント: 論理ポート1 = 先頭ポートから1番目 論理ポート3 = 先頭ポートから3番目 ●C言語用 HANDLE hDrv; DOUT lpDOut; WORD OutPortNo[2]; BYTE OutBuf[2]; DWORD dwRet; OutPortNo[0] = 1; /* 論理ポート1 */ OutPortNo[1] = 3; /* 論理ポート3 */ OutBuf[0] = 0x55; /* 出力データ1 */ OutBuf[1] = 0xAA; /* 出力データ2 */ lpDOut.OutPortNo = &OutPortNo[0]; /* OutPortNoの先頭アドレスを 指定 */ lpDOut.PortNum = 2; /* 出力ポート数を指定 */ lpDOut.Buf = &OutBuf[0]; /* OutBufの先頭アドレスを 指定 */ dwRet = DioOut(hDrv, &lpDOut); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDOut As DOUT Dim OutPortNo(1) As Integer Dim OutBuf(1) As Byte Dim dwRet As Long OutPortNo(0) = 1 OutPortNo(1) = 3 OutBuf(0) = &H55 OutBuf(1) = &HAA lpDOut.OutPortNo = LpWord(OutPortNo(0)) lpDOut.PortNum = 2 lpDOut.Buf = LpByte(OutBuf(0)) dwRet = DioOut(hDrv, lpDOut) ErrChk(dwRet) API-PAC(W32)RM/DIO ' 論理ポート1 ' 論理ポート3 ' 出力データ1 ' 出力データ2 ' OutPortNoの先頭アドレスを 指定 ' 出力ポート数を指定 ' OutBufの先頭アドレスを指定 ' エラーチェック関数 49 第2章 関数のリファレンス DOUT構造体 ■書式 (C言語用) typedef struct tagDOUT{ LPWORD OutPortNo; WORD PortNum; LPBYTE Buf; }DOUT; (Visual Basic用) Type DOUT OutPortNo As Long PortNum As Integer Buf As Long End Type ■メンバ OutPortNo : デジタル出力を行う論理ポート番号が格納されている配列 の先頭アドレスを指定してください。 複数ポートの場合、配列に格納されている順番にデジタル 出力を行います。 指定可能な範囲 : 0 ≦ OutPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 PortNum : デジタル出力を行うポート数を指定してください。 指定可能な範囲 : 1 ≦ PortNum ≦ 論理ポートの最大値 設定範囲外である場合、戻り値607hを返します。 Buf ■補足 : デジタル出力データが格納されているバッファの先頭アド レスを指定してください。 ① “OutPortNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル出力データを格納するバッファサイズは、必ず“PortNum”で 指定したデータ数が格納できるサイズで確保してください。 50 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioEchoBack ■使用可能ボード デジタル出力可能ボード ■機能 指定したポートから出力されているデジタルデータのリードバックを行い、 そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; DINP lpDInp; DWORD dwRet; dwRet = DioEchoBack(hDrv, &lpDInp); (Visual Basic用) Dim hDrv As Long Dim lpDInp As DINP Dim dwRet As Long dwRet = DioEchoBack(hDrv, lpDInp) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDEnp : ポートデータのリードバックデータを格納するDINP構造 体のアドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 51 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートと2ポートの合計2ポートのリードバックデータ入力処理 を行う場合 ポイント: 論理ポート0 = 先頭ポート 論理ポート2 = 先頭ポートから2番目 ●C言語用 HANDLE hDrv; DINP lpDInp; WORD InpPortNo[2]; BYTE InpBuf[2]; DWORD dwRet; InpPortNo[0] = 0; /* 論理ポート0 */ InpPortNo[1] = 2; /* 論理ポート2 */ lpDInp.InpPortNo = &InpPortNo[0]; /* InpPortNoの先頭アドレスを 指定 */ lpDInp.PortNum = 2; /* 入力ポート数を指定 */ lpDInp.Buf = &InpBuf[0]; /* InpBufの先頭アドレスを 指定 */ dwRet = DioEchoBack(hDrv, &lpDInp); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDInp As DINP Dim InpPortNo(1) As Integer Dim InpBuf(1) As Byte Dim dwRet As Long InpPortNo(0) = 0 InpPortNo(1) = 2 lpDInp.InpPortNo = LpWord(InpPortNo(0)) lpDInp.PortNum = 2 lpDInp.Buf = LpByte(InpBuf(0)) dwRet = DioEchoBack(hDrv, lpDInp) ErrChk(dwRet) 52 ' 論理ポート0 ' 論理ポート2 ' InpPortNoの先頭アドレスを 指定 ' 入力ポート数を指定 ' InpBufの先頭アドレスを指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DINP構造体 ■書式 (C言語用) typedef struct tagDINP{ LPWORD InpPortNo; WORD PortNum; LPBYTE Buf; }DINP; (Visual Basic用) Type DINP InpPortNo As Long PortNum As Integer Buf As Long End Type ■メンバ InpPortNo : デジタル入力を行う論理ポート番号が格納されている配列 の先頭アドレスを指定してください。 複数ポートの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 PortNum : デジタル入力を行うポート数を指定してください。 指定可能な範囲 : 1 ≦ PortNum ≦ 論理ポートの最大値 設定範囲外である場合、戻り値607hを返します。 Buf ■補足 : デジタル入力データを格納するバッファの先頭アドレスを 指定してください。 ① “InpPortNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル入力データを格納するバッファサイズは、必ず“PortNum”で 指定したデータ数が格納できるサイズで確保してください。 API-PAC(W32)RM/DIO 53 第2章 関数のリファレンス DioBitInp ■使用可能ボード デジタル入力可能ボード ■機能 指定したビットからデジタルデータの入力を行い、そのデータをバッファ に格納します。 ■書式 (C言語用) HANDLE hDrv; DBINP lpDBInp; DWORD dwRet; dwRet = DioBitInp(hDrv, &lpDBInp); (Visual Basic用) Dim hDrv As Long Dim lpDBInp As DBINP Dim dwRet As Long dwRet = DioBitInp(hDrv, &lpDBInp) ■引数 ■補足 54 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDBInp : デジタル入力の設定状態を格納するDBINP構造体のアドレ スを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ビットと2ビットの合計2ビットのデジタル入力処理を行う場合 ポイント: 論理ビット0 = 先頭ビット 論理ビット2 = 先頭ビットから2番目 ●C言語用 HANDLE hDrv; DBINP lpDBInp; WORD InpBitNo[2]; BYTE InpBuf[2]; DWORD dwRet; InpBitNo[0] = 0; /* 論理ビット0 */ InpBitNo[1] = 2; /* 論理ビット2 */ lpDBInp.InpBitNo = &InpBitNo[0]; /* InpBitNoの先頭アドレスを 指定 */ lpDBInp.BitNum = 2; /* 入力ビット数を指定 */ lpDBInp.Buf = &InpBuf[0]; /* InpBufの先頭アドレスを 指定 */ dwRet = DioBitInp(hDrv, &lpDBInp); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDBInp As DBINP Dim InpBitNo(1) As Integer Dim InpBuf(1) As Byte Dim dwRet As Long InpBitNo(0) = 0 InpBitNo(1) = 2 lpBDBInp.InpBitNo = LpWord(InpBitNo(0)) lpBDBInp.BitNum = 2 lpBDBInp.Buf = LpByte(InpBuf(0)) dwRet = DioBitInp(hDrv, lpDBInp) ErrChk(dwRet) API-PAC(W32)RM/DIO ' 論理ビット0 ' 論理ビット2 ' InpBitNoの先頭アドレスを 指定 ' 入力ビット数を指定 ' InpBufの先頭アドレスを指定 ' エラーチェック関数 55 第2章 関数のリファレンス DBINP構造体 ■書式 (C言語用) typedef struct tagDBINP{ LPWORD InpBitNo; WORD BitNum; LPBYTE Buf; }DBINP; (Visual Basic用) Type DBINP InpBitNo As Long BitNum As Integer Buf As Long End Type ■メンバ InpBitNo : デジタル入力を行う論理ビット番号が格納されている配列 の先頭アドレスを指定してください。 複数ビットの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 BitNum : デジタル入力を行うビット数を指定してください。 指定可能な範囲 : 1 ≦ BitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 Buf ■補足 : デジタル入力データを格納するバッファの先頭アドレスを 指定してください。 ① “InpBitNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル入力データを格納するバッファサイズは、必ず“BitNum”で指 定したデータ数が格納できるサイズで確保してください。 56 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioBitOut ■使用可能ボード デジタル出力可能ボード ■機能 出力データが格納されているバッファのデータをもとに、指定したビット からデジタルデータの出力を行います。 ■書式 (C言語用) HANDLE hDrv; DBOUT lpDBOut; DWORD dwRet; dwRet = DioBitOut(hDrv, &lpDBOut); (Visual Basic用) Dim hDrv As Long Dim lpDBOu As DBOUT Dim dwRet As Long dwRet = DioBitOut(hDrv, lpDBOut) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDBOut : デジタル出力の設定状態を格納するDBOUT構造体のアド レスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 57 第2章 関数のリファレンス ■設定例 例) 指定したボードの1ビットに1hと3ビットに1h、合計2ビットのデジタル出力処理を 行う場合 ポイント: 論理ビット1 = 先頭ビットから1番目 論理ビット3 = 先頭ビットから3番目 ●C言語用 HANDLE hDrv; DBOUT lpDBOut; WORD OutBitNo[2]; BYTE OutBuf[2]; DWORD dwRet; OutBitNo[0] = 1; /* 論理ビット1 */ OutBitNo[1] = 3; /* 論理ビット3 */ OutBuf[0] = 1; /* 出力データ1 */ OutBuf[1] = 1; /* 出力データ2 */ lpDBOut.OutBitNo = &OutBitNo[0]; /* OutBitNoの先頭アドレスを 指定 */ lpDBOut.BitNum = 2; /* 出力ビット数を指定 */ lpDBOut.Buf = &OutBuf[0]; /* OutBufの先頭アドレスを 指定 */ dwRet = DioBitOut(hDrv, &lpDBOut); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDBOut As DBOUT Dim OutBitNo(1) As Integer Dim OutBuf(1) As Byte Dim dwRet As Long OutBitNo(0) = 1 OutBitNo(1) = 3 OutBuf(0) = 1 OutBuf(1) = 1 lpDBOut.OutBitNo = LpWord(OutBitNo(0)) lpDBOut.BitNum = 2 lpDBOut.Buf = LpByte(OutBuf(0)) dwRet = DioBitOut(hDrv, lpDBOut) ErrChk(dwRet) 58 ' 論理ビット1 ' 論理ビット3 ' 出力データ1 ' 出力データ2 ' OutBitNoの先頭アドレスを 指定 ' 出力ビット数を指定 ' OutBufの先頭アドレスを指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DBOUT構造体 ■書式 (C言語用) typedef struct tagDBOUT{ LPWORD OutBitNo; WORD BitNum; LPBYTE Buf; }DBOUT; (Visual Basic用) Type DBOUT OutBitNo As Long BitNum As Integer Buf As Long End Type ■メンバ OutBitNo : デジタル出力を行う論理ビット番号が格納されている配列 の先頭アドレスを指定してください。 複数ビットの場合、配列に格納されている順番にデジタル 出力を行います。 指定可能な範囲 : 0 ≦ OutBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 BitNum : デジタル出力を行うビット数を指定してください。 指定可能な範囲 : 1≦ BitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 Buf ■補足 : デジタル出力データが格納されているバッファの先頭アド レスを指定してください。 ① “OutBitNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル出力データを格納するバッファサイズは、必ず“BitNum”で指 定したデータ数が格納できるサイズで確保してください。 API-PAC(W32)RM/DIO 59 第2章 関数のリファレンス DioBitEchoBack ■使用可能ボード デジタル出力可能ボード ■機能 指定したビットから出力されているデジタルデータのリードバックを行い、 そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; DBINP lpDBInp; DWORD dwRet; dwRet = DioBitEchoBack(hDrv, &lpDBInp); (Visual Basic用) Dim hDrv As Long Dim lpDBInp As DBOUT Dim dwRet As Long dwRet = DioBitEchoBack(hDrv, &lpDBInp) ■引数 ■補足 60 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDBInp : ビットデータのリードバックデータを格納するDBINP構造 体のアドレスで指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ビットと2ビットの合計2ビットのデジタル入力処理を行う場合 ポイント: 論理ビット0 = 先頭ビット 論理ビット2 = 先頭ビットから2番目 ●C言語用 HANDLE hDrv; DBINP lpDBInp; WORD InpBitNo[2]; BYTE InpBuf[2]; DWORD dwRet; InpBitNo[0] = 0; /* 論理ビット0 */ InpBitNo[1] = 2; /* 論理ビット2 */ lpDBInp.InpBitNo = &InpBitNo[0]; /* InpBitNoの先頭アドレスを 指定 */ lpDBInp.BitNum = 2; /* 入力ビット数を指定 */ lpDBInp.Buf = &InpBuf[0]; /* InpBufの先頭アドレスを 指定 */ dwRet = DioBitEchoBack(hDrv, &lpDBInp); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDBInp As DBINP Dim InpBitNo(1) As Integer Dim InpBuf(1) As Byte Dim dwRet As Long InpBitNo(0) = 0 InpBitNo(1) = 2 lpBDBInp.InpBitNo = LpWord(InpBitNo(0)) lpBDBInp.BitNum = 2 lpBDBInp.Buf = LpByte(InpBuf(0)) dwRet = DioBitInp(hDrv, lpDBInp) ErrChk(dwRet) API-PAC(W32)RM/DIO ' 論理ビット0 ' 論理ビット2 ' InpBitNoの先頭アドレスを 指定 ' 入力ビット数を指定 ' InpBufの先頭アドレスを指定 ' エラーチェック関数 61 第2章 関数のリファレンス DBINP構造体 ■書式 (C言語用) typedef struct tagDBINP{ LPWORD InpBitNo; WORD BitNum; LPBYTE Buf; }DBOUT; (Visual Basic用) Type DBINP OutBitNo As Long BitNum As Integer Buf As Long End Type ■メンバ InpBitNo : デジタル入力を行う論理ビット番号が格納されている配列 の先頭アドレスを指定してください。 複数ビットの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 BitNum : デジタル入力を行うビット数を指定してください。 指定可能な範囲 : 1≦ BitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 Buf ■補足 : デジタル入力データが格納されているバッファの先頭アド レスを指定してください。 ① “InpBitNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル入力データを格納するバッファサイズは、必ず“BitNum”で指 定したデータ数が格納できるサイズで確保してください。 62 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioInpBack ■使用可能ボード デジタル入力可能ボード ■機能 バックグラウンドにおいて、指定したポートから周期的にデジタルデータ の入力を行い、そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; DINPB lpDInpB; HANDLE hOK; WORD DMegOK; HANDLE hExcp; WORD DMegExcp; DWORD dwRet; dwRet = DioInpBack(hDrv, &lpDInpB, hOK, DMegOK, hExcp, DMegExcp); (Visual Basic用) Dim hDrv As Long Dim lpDInpB As DINPB Dim hOK As Long Dim DmegOK As Integer Dim hExcp As Long Dim DmegExcp As Integer Dim dwRet As Long dwRet = DioInpBack(hDrv, lpDInpB, hOK, DMegOK, hExp, DMegExcp) API-PAC(W32)RM/DIO 63 第2章 関数のリファレンス ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDInpB : デジタル入力の設定状態を格納するDINPB構造体の先頭ア ドレスを指定してください。 hOK : 動作終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegOK : 動作終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 指定可能な範囲 : DMegOK = 0h, 400h ≦ DMegOK ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 : 異常終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegExcp : 異常終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 hExcp 指定可能な範囲 : DMegExcp = 0h, 400h ≦ DMegExcp ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、デジタル入力機能に対応しているボード(PIボード、PIO ボード)のみ使用できます。デジタル出力機能のみに対応しているボー ド(POボード)でこの関数を実行した場合、戻り値604hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 ④ この関数は1度実行すると、その処理が終了するまでは再実行できませ ん。 ⑤ この関数は実行後すぐに戻り値を返します。また、入力動作終了の確 認は、動作終了メッセージまたはDioStsで行います。 64 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートと2ポートの合計2ポートから、100[ms]の周期で、それ ぞれ100個づつのデジタル入力処理を行う場合 ポイント: 論理ポート0 = 先頭ポート 論理ポート2 = 先頭ポートから2番目 データ入力周期 = 100[ms] データ入力回数 = 100[個] ●C言語用 HANDLE hDrv; HANDLE hOK; WORD wMegOK; HANDLE hExcp; WORD wMegExcp; DINPB lpDInpB; WORD InpPortNo[2]; BYTE InpBuf[100][2]; DWORD dwRet; wMegOK = 0x470; wMegExcp = 0x480; InpPortNo[0] = 0; /* 論理ポート0 */ InpPortNo[1] = 2; /* 論理ポート2 */ lpDInpB.InpPortNo = &InpPortNo[0]; /* InpPortNoの先頭アドレスを 指定 */ lpDInpB.PortNum = 2; /* 入力ポート数を指定 */ lpDInpB.DataNum = 100; /* データ入力回数を指定 */ lpDInpB.Buf = &InpBuf[0][0]; /* InpBufの先頭アドレスを 指定 */ lpDInpB.Tim = 10; /* データ入力周期を指定 */ dwRet = DioInpBack(hDrv, &lpDInpB, hOK, wMegOK, hExcp, wMegExcp); ErrChk(dwRet); /* エラーチェック関数 */ API-PAC(W32)RM/DIO 65 第2章 関数のリファレンス ●Visual Basic用 Dim hDrv As Long Dim lpDInpB As DINPB Dim InpPortNo(1) As Integer Dim InpBuf(1,99) As Byte Dim dwRet As Long MsgOK.Message = &H470 MsgExcp.Message = &H480 InpPortNo(0) = 0 ' 論理ポート0 InpPortNo(1) = 2 ' 論理ポート2 lpDInpB.InpPortNo = LpWord(InpPortNo(0)) ' InpPortNoの先頭アドレスを 指定 lpDInpB.PortNum = 2 ' 入力ポート数を指定 lpDInpB.DataNum = 100 ' データ入力回数を指定 lpDInpB.Buf = LpByte(InpBuf(0,0)) ' InpBufの先頭アドレスを指定 lpDInpB.Tim = 10 ' データ入力周期を指定 dwRet = DioInpBack(hDrv, 1pDinpB, MsgOK.hWnd, MsgOK.Message, MsgExcp.hWnd, MsgExcp.Message) ErrChk(dwRet) ' エラーチェック関数 66 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DINPB構造体 ■書式 (C言語用) typedef struct tagDINPB{ LPWORD InpPortNo; WORD PortNum; WORD DataNum; LPBYTE Buf; WORD Tim; }DINPB; (Visual Basic用) Type DINPB InpPortNo PortNum DataNum Buf Tim End Type ■メンバ InpPortNo : As Long As Integer As Integer As Long As Integer デジタル入力を行う論理ポート番号が格納されている配列 の先頭アドレスを指定してください。 複数ポートの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 PortNum : デジタル入力を行うポート数を指定してください。 指定可能な範囲 : 1 ≦ PortNum ≦ 論理ポートの最大値 設定範囲外である場合、戻り値607hを返します。 DataNum : データを入力する回数を指定してください。 指定可能な範囲 : 1≦ DataNum ≦ FFFFh 設定範囲外である場合、戻り値609hを返します。 Buf : デジタル入力データを格納するバッファの先頭アドレスを 指定してください。 Tim : データを入力する読み取り周期を指定してください。 指定可能な範囲 : 1 ≦ Tim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × Tim(読み取り周期) 設定範囲外である場合、戻り値60Ahを返します。 ■補足 ① “InpPortNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル入力データを格納するバッファサイズは、必ず“PortNum”で 指定したデータ数が格納できるサイズで確保してください。 API-PAC(W32)RM/DIO 67 第2章 関数のリファレンス DioOutBack ■使用可能ボード デジタル出力可能ボード ■機能 バックグラウンドにおいて、出力データが格納されているバッファのデー タをもとに、指定したポートから周期的にデジタルデータの出力を行いま す。 ■書式 (C言語用) HANDLE hDrv; DOUTB lpDOutB; HANDLE hOK; WORD DMegOK; HANDLE hExcp; WORD DMegExcp; DWORD dwRet; dwRet = DioOutBack(hDrv, &lpDOutB, hOK, DMegOK, hExcp, DMegExcp); (Visual Basic用) Dim hDrv As Long Dim lpDOutB As DOUTB Dim hOK As Long Dim DmegOK As Integer Dim hExcp As Long Dim DmegExcp As Integer Dim dwRet As Long dwRet = DioOutBack(hDrv, lpDOutB, hOK, DMegOK, hExp, DMegExcp) 68 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDOutB : デジタル出力の設定状態を格納するDOUTB構造体のアド レスを指定してください。 hOK : 動作終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegOK : 動作終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 指定可能な範囲 : DMegOK = 0h, 400h ≦ DMegOK ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 : 異常終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegExcp : 異常終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 hExcp 指定可能な範囲 : DMegExcp = 0h, 400h ≦ DMegExcp ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、デジタル出力機能に対応しているボード(POボード、PIO ボード)のみ使用できます。デジタル入力機能のみに対応しているボー ド(PIボード)でこの関数を実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 ④ この関数は1度実行すると、その処理が終了するまでは再実行できませ ん。 ⑤ この関数は実行後すぐに戻り値を返します。また、入力動作終了の確 認は、動作終了メッセージまたはDioStsでDioNC_CMRF17で行います。 API-PAC(W32)RM/DIO 69 第2章 関数のリファレンス ■設定例 例) 指定したボードの1ポートに55hと3ポートにAAh、合計2ポートから、100[ms]の周 期で、それぞれ100個づつのデジタル出力処理を行う場合 ポイント: 論理ポート1 = 先頭ポートから1番目 論理ポート3 = 先頭ポートから3番目 データ出力周期 = 100[ms] データ出力回数 = 100[個] ●C言語用 HANDLE hDrv; HANDLE hOK; WORD wMegOK; HANDLE hExcp; WORD wMegExcp; DOUTB lpDOutB; WORD OutPortNo[2]; BYTE OutBuf[100][2]; DWORD dwRet; wMegOK = 0x470; wMegExcp = 0x480; OutPortNo[0] = 1; /* 論理ポート1 */ OutPortNo[1] = 3; /* 論理ポート3 */ lpDOutB.OutPortNo = &OutPortNo[0]; /* OutPortNoの先頭アドレスを 指定 */ lpDOutB.PortNum = 2; /* 出力ポート数を指定 */ lpDOutB.DataNum = 100; /* データ出力回数を指定 */ OutBuf[0][0] = 0x55; /* 出力データ1 */ OutBuf[0][1] = 0xAA; /* 出力データ2 */ lpDOutB.Buf = &OutBuf[0][0]; /* OutBufの先頭アドレスを 指定 */ ………………………………………………… lpDOutB.Tim = 10; /* データ出力周期を指定 */ dwRet = DioOutBack(hDrv, &lpDOutB, hOK, wMegOK, hExcp, wMegExcp); ErrChk(dwRet); /* エラーチェック関数 */ 70 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ●Visual Basic用 Dim hDrv As Long Dim lpDOutB As DOUTB Dim OutPortNo(1) As Integer Dim OutBuf(1,99) As Byte Dim dwRet As Long MsgOK.Message = &H470 MsgExcp.Message = &H480 OutPortNo(0) = 1 OutPortNo(1) = 3 lpDOutB.OutPortNo = LpWord(OutPortNo(0)) lpDOutB.PortNum = 2 lpDOutB.DataNum = 100 OutBuf(0,0) = &H55 OutBuf(1,0) = &HAA ………………………………………………… lpDOutB.Buf = LpByte(OutBuf(0,0)) ' 論理ポート1 ' 論理ポート3 ' OutPortNoの先頭アドレスを 指定 ' 出力ポート数を指定 ' データ出力回数を指定 ' 出力データ1 ' 出力データ2 ' OutBufの先頭アドレスを 指定 lpDOutB.Tim = 10 ' データ出力周期を指定 dwRet = DioOutBack(hDrv, lpDOutB, MsgOK.hWnd, MsgOK.Message, MsgExcp.hWnd, MsgExcp.Message) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 71 第2章 関数のリファレンス DOUTB構造体 ■書式 (C言語用) typedef struct tagDOUTB{ LPWORD OutPortNo; WORD PortNum; WORD DataNum; LPBYTE Buf; WORD Tim; }DOUTB; (Visual Basic用) Type DOUTB OutPortNo PortNum DataNum Buf Tim End Type ■メンバ OutPortNo : As Long As Integer As Integer As Long As Integer デジタル出力を行う論理ポート番号が格納されている配列 の先頭アドレスを指定してください。 複数ポートの場合、配列に格納されている順番にデジタル 出力を行います。 指定可能な範囲 : 0 ≦ OutPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 PortNum : デジタル出力を行うポート数を指定してください。 指定可能な範囲 : 1≦ PortNum ≦ 論理ポートの最大値 設定範囲外である場合、戻り値607hを返します。 DataNum : データを出力する回数を指定してください。 指定可能な範囲 : 1 ≦ DataNum ≦ FFFFh 設定範囲外である場合、戻り値609hを返します。 Buf : デジタル出力データを格納するバッファのアドレスを指定 してください。 Tim : データを出力する読み取り周期を指定してください。 指定可能な範囲 : 1 ≦ Tim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × Tim(読み取り周期) 設定範囲外である場合、戻り値60Ahを返します。 ■補足 ① “OutPortNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル出力データを格納するバッファサイズは、必ず“PortNum”で 指定したデータ数が格納できるサイズで確保してください。 72 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioBitInpBack ■使用可能ボード デジタル入力可能ボード ■機能 バックグラウンドにおいて、指定したビットから周期的にデジタルデータ の入力を行い、そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; DBINPB lpDBInpB; HANDLE hOK; WORD DMegOK; HANDLE hExcp; WORD DMegExcp; DWORD dwRet; dwRet = DioBitInpBack(hDrv, &lpDBInpB, hOK, DMegOK, hExcp, DMegExcp); (Visual Basic用) Dim hDrv As Long Dim lpDBInpB As DBINPB Dim hOK As Long Dim DmegOK As Integer Dim hExcp As Long Dim DmegExcp As Integer Dim dwRet As Long dwRet = DioBitInpBack(hDrv, lpDBInpB, hOK, DMegOK, hExp, DMegExcp) API-PAC(W32)RM/DIO 73 第2章 関数のリファレンス ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDBInpB : デジタル入力の設定状態を格納するDBINPB構造体のアド レスを指定してください。 hOK : 動作終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegOK : 動作終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 指定可能な範囲 : DMegOK = 0h, 400h ≦ DMegOK ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 : 異常終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegExcp : 異常終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 hExcp 指定可能な範囲 : DMegExcp = 0h, 400h ≦ DMegExcp ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 同一グループ内のボードは複数枚で使用することができます。 ② この関数は1度実行すると、その処理が終了するまでは再実行できませ ん。 ③ この関数は実行後すぐに戻り値を返します。また、入力動作終了の確 認は、動作終了メッセージまたはDioStsで行います。 74 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ビットと2ビットの合計2ビットから、100[ms]の周期で、それ ぞれ100個づつのデジタル入力処理を行う場合 ポイント: 論理ビット0 = 先頭ビット 論理ビット2 = 先頭ビットから2番目 データ入力周期 = 100[ms] データ入力回数 = 100[個] ●C言語用 HANDLE hDrv; HANDLE hOK; WORD wMegOK; HANDLE hExcp; WORD wMegExcp; DBINPB lpDBInpB; WORD InpBitNo[2]; BYTE InpBuf[100][2]; DWORD dwRet; wMegOK = 0x470; wMegExcp = 0x480; InpBitNo[0] = 0; /* 論理ビット0 */ InpBitNo[1] = 2; /* 論理ビット2 */ lpDBInpB.InpBitNo = &InpBitNo[0]; /* InpBitNoの先頭アドレスを 指定 */ lpDBInpB.BitNum = 2; /* 入力ビット数を指定 */ lpDBInpB.DataNum = 100; /* データ入力回数を指定 */ lpDBInpB.Buf = &InpBuf[0][0]; /* InpBufの先頭アドレスを 指定 */ lpDBInpB.Tim = 10; /* データ入力周期を指定 */ dwRet =DioBitInpBack(hDrv, &lpDBInpB, hOK, wMegOK, hExcp,wMegExcp); ErrChk(dwRet); /* エラーチェック関数 */ API-PAC(W32)RM/DIO 75 第2章 関数のリファレンス ●Visual Basic用 Dim hDrv As Long Dim lpDBInpB As DBINPB Dim InpBitNo(1) As Integer Dim InpBuf(1,99) As Byte Dim dwRet As Long MsgOK.Message = &H470 MsgExcp.Message = &H480 InpBitNo(0) = 0 ' 論理ビット0 InpBitNo(1) = 2 ' 論理ビット2 lpDBInpB.InpBitNo = LpWord(InpBitNo(0)) ' InpBitNoの先頭アドレスを 指定 lpDBInpB.BitNum = 2 ' 入力ビット数を指定 lpDBInpB.DataNum = 100 ' データ入力回数を指定 lpDBInpB.Buf = LpByte(InpBuf(0,0)) ' InpBufの先頭アドレスを指定 lpDBInpB.Tim = 10 ' データ入力周期を指定 dwRet = DioBitInpBack(hDrv, lpDBInpB, MsgOK.hWnd, MsgOK.Message, MsgExcp.hWnd,MsgExcp.Message) ErrChk(dwRet) ' エラーチェック関数 76 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DBINPB構造体 ■書式 (C言語用) typedef struct tagDBINPB{ LPWORD InpBitNo; WORD BitNum; WORD DataNum; LPBYTE Buf; WORD Tim; }DBINPB; (Visual Basic用) Type DBINPB InpBitNo BitNum DataNum Buf Tim End Type ■メンバ As Long As Integer As Integer As Long As Integer InpBitNo : デジタル入力を行う論理ビット番号が格納されている配列 の先頭アドレスを指定してください。 複数ビットの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 BitNum : デジタル入力を行うビット数を指定してください。 指定可能な範囲 : 1 ≦ BitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 DataNum : データを入力する回数を指定してください。 指定可能な範囲 : 1 ≦ DataNum ≦ FFFFh 設定範囲外である場合、戻り値609hを返します。 Buf : デジタル入力データを格納するバッファのアドレスを指定 してください。 Tim : データを入力する読み取り周期を指定してください。 指定可能な範囲 : 1 ≦ Tim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × Tim(読み取り周期) 設定範囲外である場合、戻り値60Ahを返します。 ■補足 ① “InpBitNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル入力データを格納するバッファサイズは、必ず“BitNum”で指 定したデータ数が格納できるサイズで確保してください。 API-PAC(W32)RM/DIO 77 第2章 関数のリファレンス DioBitOutBack ■使用可能ボード デジタル出力可能ボード ■機能 バックグラウンドにおいて、出力データが格納されているバッファのデー タをもとに、指定したビットから周期的にデジタルデータの出力を行いま す。 ■書式 (C言語用) HANDLE hDrv; DBOUTB lpDBOutB; HANDLE hOK; WORD DMegOK; HANDLE hExcp; WORD DMegExcp; DWORD dwRet; dwRet = DioBitOutBack(hDrv, &lpDBOutB, hOK, DMegOK, hExcp, DMegExcp); (Visual Basic用) Dim hDrv As Long Dim lpDBOutB As DBOUTB Dim hOK As Long Dim DmegOK As Integer Dim hExcp As Long Dim DmegExcp As Integer Dim dwRet As Long dwRet = DioBitOutBack(hDrv, lpDBOutB, hOK, DMegOK, hExp, DMegExcp) 78 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDBOutB : デジタル出力の設定状態を格納するDBOUTB構造体のアド レスを指定してください。 hOK : 動作終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegOK : 動作終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 指定可能な範囲 : DMegOK = 0h, 400h ≦ DMegOK ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 : 異常終了イベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 DMegExcp : 異常終了イベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 hExcp 指定可能な範囲 : DMegExcp = 0h, 400h ≦ DMegExcp ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 同一グループ内のボードは複数枚で使用することができます。 ② この関数は1度実行すると、その処理が終了するまでは再実行できませ ん。 ③ この関数は実行後すぐに戻り値を返します。また、入力動作終了の確 認は、動作終了メッセージまたはDioStsで行います。 API-PAC(W32)RM/DIO 79 第2章 関数のリファレンス ■設定例 例) 指定したボードの1ビットに1hと3ビットに1h、合計2ビットから、100[ms]の周期 で、それぞれ100個づつのデジタル出力処理を行う場合 ポイント: 論理ビット1 = 先頭ビットから1番目 論理ビット3 = 先頭ビットから3番目 データ出力周期 = 100[ms] データ出力回数 = 100[個] ●C言語用 HANDLE hDrv; HANDLE hOK; WORD wMegOK; HANDLE hExcp; WORD wMegExcp; DBOUTB lpDBOutB; WORD OutBitNo[2]; BYTE OutBuf[100][2]; DWORD dwRet; wMegOK = 0x470; wMegExcp = 0x480; OutBitNo[0] = 1; /* 論理ビット1 */ OutBitNo[1] = 3; /* 論理ビット3 */ ………………………………………………… lpDBOutB.OutBitNo = &OutBitNo[0]; /* OutBitNoの先頭アドレスを 指定 */ lpDBOutB.BitNum = 2; /* 出力ビット数を指定 */ lpDBOutB.DataNum = 100; /* データ出力回数を指定 */ OutBuf[0][0] = 0x1; /* 出力データ1 */ OutBuf[0][1] = 0x1; /* 出力データ2 */ lpDBOutB.Buf = &OutBuf[0][0]; /* OutBufの先頭アドレスを 指定 */ lpDBOutB.Tim = 10; /* データ出力周期を指定 */ dwRet = DioBitOutBack(hDrv, &1pDBOutB, hOK, wMegOK, hExcp, wMegExcp); ErrChk(dwRet); /* エラーチェック関数 */ 80 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ●Visual Basic用 Dim hDrv As Long Dim lpDBOutB As DBOUTB Dim OutBitNo(1) As Integer Dim OutBuf(1,99) As Byte Dim dwRet As Long MsgOK.Message = &H470 MsgExcp.Message = &H480 OutBitNo(0) = 1 OutBitNo(1) = 3 lpDBOutB.OutBitNo = LpWord(OutBitNo(0)) lpDBOutB.BitNum = 2 lpDBOutB.DataNum = 100 OutBuf(0,0) = &H1 OutBuf(1,0) = &H1 ………………………………………………… lpDBOutB.Buf = LpByte(OutBuf(0,0)) ' 論理ビット1 ' 論理ビット3 ' OutBitNoの先頭アドレスを 指定 ' 出力ビット数を指定 ' データ出力回数を指定 ' 出力データ1 ' 出力データ2 ' OutBufの先頭アドレスを 指定 lpDBOutB.Tim = 10 ' データ出力周期を指定 dwRet = DioBitOutBack(hDrv, lpDBOutB, MsgOK.hWnd, MsgOK.Message, MsgExcp.hWnd, MsgExcp.Message) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 81 第2章 関数のリファレンス DBOUTB構造体 ■書式 (C言語用) typedef struct tagDBOUTB{ LPWORD OutBitNo; WORD BitNum; WORD DataNum; LPBYTE Buf; WORD Tim; }DBOUTB; (Visual Basic用) Type DBOUTB OutBitNo BitNum DataNum Buf Tim End Type ■メンバ OutBitNo : As Long As Integer As Integer As Long As Integer デジタル出力を行う論理ビット番号が格納されている配列 の先頭アドレスを指定してください。 複数ビットの場合、配列に格納されている順番にデジタル 出力を行います。 指定可能な範囲 : 0 ≦ OutBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 BitNum : デジタル出力を行うビット数を指定してください。 指定可能な範囲 : 1 ≦ BitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 DataNum : データを出力する回数を指定してください。 指定可能な範囲 : 1 ≦ DataNum ≦ FFFFh 設定範囲外である場合、戻り値609hを返します。 Buf : デジタル出力データを格納するバッファのアドレスを指定 してください。 Tim : データを出力する読み取り周期を指定してください。 指定可能な範囲 : 1 ≦ Tim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × Tim(読み取り周期) 設定範囲外である場合、戻り値60Ahを返します。 ■補足 ① “OutBitNo”で指定するアドレスは、配列の先頭アドレスを指定してく ださい。 ② デジタル出力データを格納するバッファサイズは、必ず“BitNum”で指 定したデータ数が格納できるサイズで確保してください。 82 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioSts ■使用可能ボード 対象ボードすべて ■機能 バックグラウンドで動作中の関数 DioInpBack, DioOutBack, DioBitInpBack, DioBitOutBack, DioPtnStartおよびDioTrgStartの動作状態を取 得します。 ■書式 (C言語用) HANDLE hDrv; WORD Sts; WORD Cnt; DWORD dwRet; dwRet = DioSts(hDrv, &Sts, &Cnt); (Visual Basic用) Dim hDrv As Long Dim Sts As Integer Dim Cn As Integer Dim dwRet As Long dwRet = DioSts(hDrv, Sts, Cnt) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Sts : バックグランドで実行中の関数 DioInpBack, DioOutBack, DioBitInpBack, DioBitOutBack, DioPtnStartおよびDioTrgStart の動作ステータスを格納する変数のアドレスを指定してく ださい。 ステータス ■補足 : 0: 1: 2: 3: 動作終了 入力処理中 出力処理中 動作エラー Cnt : バックグランドにおける関数の実行回数を格納する変数の アドレスで指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、バックグランドでDioInpBack, DioBitInpBack, DioOutBack, DioBitOutBack, DioPtnStartおよびDioTrgStartのみに有効で す。他の関数の動作状態を確認することはできません。 API-PAC(W32)RM/DIO 83 第2章 関数のリファレンス ■設定例 例) 現在、バックグラウンドで実行中の関数の実行状態を取得する場合 ポイント: 実行中の関数の動作ステータスは、Stsにより確認します。 実行中の関数の実行回数は、Cntにより確認します。 ●C言語用 HANDLE hDrv; WORD Sts; WORD Cnt; DWORD dwRet; dwRet = DioSts(hDrv, &Sts, &Cnt); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim Sts As Integer Dim Cnt As Integer Dim dwRet As Long dwRet = DioSts(hDrv, Sts, Cnt) ErrChk(dwRet) 84 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioStop ■使用可能ボード 対象ボードすべて ■機能 バックグラウンドで動作中のデバイスを停止します。 ■書式 (C言語用) HANDLE hDrv; DWORD dwRet; dwRet = DioStop(hDrv); (Visual Basic用) Dim hDrv As Long Dim dwRet As Long dwRet = DioStop(hDrv) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 指定した論理デバイスにおいて、バックグランドでDioInpBack, DioBitInpBack, DioOutBack, DioBitOutBack, DioPtnStartおよび DioTrgStartが実行中である場合は、この関数でバックグランドの動作 を停止します。 ■設定例 例) 現在、バックグラウンドで実行中の関数を停止する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; dwRet = DioStop(hDrv); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim dwRet As Long dwRet = DioStop(hDrv) ErrChk(dwRet) API-PAC(W32)RM/DIO ' エラーチェック関数 85 第2章 関数のリファレンス DioPtnSet ■使用可能ボード デジタル入力可能ボード ■機能 指定したポートからデータを周期的に入力し、その入力したデータが指定 した値と一致した場合、イベントを発生します。 この関数は上記の関数を実行するためのデータを設定します。 ■書式 (C言語用) HANDLE hDrv; DPTNSET lpDPtnSet; DWORD dwRet; dwRet = DioPtnSet(hDrv, &lpDPtnSet); (Visual Basic用) Dim hDrv As Long Dim lpDPtnSet As DPTNSET Dim dwRet As Long dwRet = DioPtnSet(hDrv, lpDPtnSet) ■引数 ■補足 86 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDPtnSet : データの設定状態を格納するDPTNSET構造体のアドレス を指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 本関数、関数DioPtnStartおよびDioPtnStsから構成するプロセスコント ロール機能関数の使用方法については、ヘルプのQ&A“プロセスコン トロール機能関数の使用方法”をご参照ください。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの論理ポート0から、100[ms]周期でデータの入力を行い、パター ン22h, 55hもしくは88hとなった場合にプロセスの実行を行う場合 ポイント: 入力ポート = 0 パターン = パターン番号 0 : 22h パターン = パターン番号 1 : 55h パターン = パターン番号 2 : 88h データ入力周期 = 100[ms] ●C言語用 HANDLE hDrv; DPTNSET lpDPtnSet; WORD InpPortNo[1]; DWORD StsBuf[3]; DWORD dwRet; InpPortNo[0] = 0; /* 論理ポート0 */ lpDPtnSet.InpPortNo = &InpPortNo[0]; /* InpPortNoの先頭アドレスを 指定 */ lpDPtnSet.PortNum = 1; /* 入力ポート数を指定 */ StsBuf[0] = 22h; /* パターンデータ 0 */ StsBuf[1] = 55h; /* パターンデータ 1 */ StsBuf[2] = 88h; /* パターンデータ 2 */ lpDPtnSet.StsBuf = StsBuf[0]; /* StsBuf[0]の先頭アドレスを 指定 */ lpDPtnSet.StsBufNum = 3; /* パターンデータ数を指定 */ lpDPtnSet.Tim = 10; /* データ入力周期を指定 */ dwRet = DioPtnSet(hDrv, &lpDPtnSet); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDPtnSet As DPTNSET Dim InpPortNo(0) As Integer Dim StsBuf(2) As Long Dim dwRet As Long InpPortNo(0) = 0 ' 論理ポート0 lpDPtnSet.InpPortNo = LpWord(InpPortNo(0)) ' InpPortNoの先頭アドレスを 指定 lpDPtnSet.PortNum = 1 ' 入力ポート数を指定 StsBuf(0) = &H22 ' パターンデータ 0 StsBuf(1) = &H55 ' パターンデータ 1 StsBuf(2) = &H88 ' パターンデータ 2 lpDPtnSet.StsBuf = LpDWord(StsBuf(0)) ' StsBuf[0]の先頭アドレスを 指定 lpDPtnSet.StsBufNum = 3 ' パターンデータ数を指定 lpDPtnSet.Tim = 10 ' データ入力周期を指定 dwRet = DioPtnSet(hDrv, lpDPtnSet) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 87 第2章 関数のリファレンス DPTNSET構造体 ■書式 (C言語用) typedef struct tagDPTNSET{ LPWORD InpPortNo; WORD PortNum; LPDWORD StsBuf; DWORD StsBufNum; WORD Tim; }DPTNSET; (Visual Basic用) Type DPTNSET InpPortNo As Long PortNum As Integer StsBuf As Long StsBufNum As Long Tim As Integer End Type ■メンバ InpPortNo : PortNum : 信号の入力を行うポート数を指定してください。 指定可能な範囲 : 1 ≦ PortNum ≦ 4 設定範囲外である場合、戻り値635hを返します。 StsBuf : 一致データを格納するバッファのアドレスで指定してくだ さい。 複数データの場合、配列に格納されている順番がパターン 番号になります。 信号の入力を行う論理ポート番号が格納されている配列の 先頭アドレスを指定してください。 複数ポートの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 StsBufNum : 一致データのパターンの個数を指定してください。 指定可能な範囲 : 1 ≦ StsBunNum ≦ FFFFFFFFh 設定範囲外である場合、戻り値636hを返します。 Tim データを入力する読み取り周期を指定してください。 指定可能な範囲 : 1 ≦ Tim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × Tim(読み取り周期) : 設定範囲外である場合、戻り値60Ahを返します。 ■補足 88 ① “InpPortNo”および“StsBuf”で指定するアドレスは、配列の先頭アドレ スを指定してください。 ② “StsBuf”で指定する一致データのバッファサイズは、“PortNum”およ び”StsBufNum”で指定したサイズとしてください。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioPtnStart ■使用可能ボード デジタル入力可能ボード ■機能 指定したポートから周期的にデータを入力し、その入力したデータが指定 したデータを一致した場合、イベントを発生します。 この関数を実行することによりバックグラウンドでデータの入力を行いま す。 ■書式 (C言語用) HANDLE hDrv; HANDLE hOK; WORD DMegOK; DWORD dwRet; dwRet = DioPtnStart(hDrv, hOK, DMegOK); (Visual Basic用) Dim hDrv As Long Dim hOK As Long Dim DmegOK As Integer Dim dwRet As Long dwRet = DioPtnStart(hDrv, hOK, DMegOK) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 hOK : データ一致イベントメッセージを受け取る側のウインドウ のハンドルを指定してください。 DMegOK : データ一致イベントメッセージで使用する識別メッセージ 番号(ユーザー指定の識別メッセージ番号)を指定してくだ さい。また、メッセージを使用しない場合は0を指定して ください。 指定可能な範囲 : DMegOK = 0h, 400h ≦ DMegOK ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は実行後すぐに戻り値を返します。また、入力動作終了の確 認は、動作終了メッセージまたはDioStsにて行います。 ② この関数は1度実行すると、その処理が終了するまでは再実行できませ ん。 ③ 本関数、関数DioPtnSetおよびDioPtnStsから構成するプロセスコントロ ール機能関数の使用方法については、ヘルプのQ&A“プロセスコント ロール機能関数の使用方法”をご参照ください。 API-PAC(W32)RM/DIO 89 第2章 関数のリファレンス ■設定例 例) プロセスコントロールの実行を行う場合 ●C言語用 HANDLE hDrv; HANDLE hOK; WORD wMegOK; DWORD dwRet; wMegOK = 0x470; dwRet = DioPtnStart(hDrv, hOK, wMegOK); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim dwRet As Long MsgOK.Message = &H470 dwRet = DioPtnStart(hDrv, MsgOK.hWnd, MsgOK.Message) ErrChk(dwRet) ' エラーチェック関数 90 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioPtnSts ■使用可能ボード デジタル入力可能ボード ■機能 指定したポートからデータを周期的に入力し、その入力したデータが指定 した値と一致した場合、イベントを発生します。 この関数は、イベント発生時の一致データのパターン番号を取得します、 ■書式 (C言語用) HANDLE hDrv; DWORD PtnSts; DWORD dwRet; dwRet = DioPtnSts(hDrv, &PtnSts); (Visual Basic用) Dim hDrv As Long Dim PtnSts As Long Dim dwRet As Long dwRet = DioPtnSts(hDrv, PtnSts) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 PtnSts : 一致データのパターン番号を格納する変数のアドレスを指 定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 本関数、関数DioPtnSetおよびDioPtnStartから構成するプロセスコント ロール機能関数の使用方法については、ヘルプのQ&A“プロセスコン トロール機能関数の使用方法”をご参照ください。 ■設定例 例) イベント発生時の一致データのパターン番号を取得する場合 ポイント: パターン番号は、PtnStsにより確認します。 ●C言語用 HANDLE hDrv; DWORD PtnSts; DWORD dwRet; dwRet = DioPtnSts(hDrv, &PtnSts); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim PtnSts As Long Dim dwRet As Long dwRet = DioPtnSts(hDrv, PtnSts) ErrChk(dwRet) API-PAC(W32)RM/DIO ' エラーチェック関数 91 第2章 関数のリファレンス DioTrgSet ■使用可能ボード デジタル入力可能ボード ■機能 指定したビットからデータを周期的に入力し、その入力した各ビットデー タの状態により、イベントを発生します。また、イベントが入力された瞬 間の観測データを取得します。 この関数は上記の関数を実行するためのデータを設定します。 ■書式 (C言語用) HANDLE hDrv; DTRGSET lpDTrgSet; DWORD dwRet; dwRet = DioTrgSet(hDrv, &lpDTrgSet); (Visual Basic用) Dim hDrv As Long Dim lpDTrgSet As DTRGSET Dim dwRet As Long dwRet = DioTrgSet(hDrv, lpDTrgSet) ■引数 ■補足 92 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDTrgSet : データの設定状態を格納するDTRGSET構造体のアドレス を指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 本関数、関数DioTrgStartおよびDioTrgStsから構成するトリガ監視機能 関数の使用方法については、ヘルプのQ&A“トリガ監視機能関数の使 用方法”をご参照ください。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの論理ビット0, 2から、100[ms]周期でトリガ監視入力を行い、ト リガが入力された場合に論理ビット0, 1および2からその瞬間のデータの入力を行 う場合 ポイント: 入力ビット = 論理ビット0 ∼ 2 トリガビット = 論理ビット0, 2 トリガの種類 = トリガ番号 0 : 論理ビット 0 : UP トリガ番号 1 : 論理ビット 2 : DOWN データ入力周期 = 100[ms] ●C言語用 HANDLE hDrv; DTRGSET lpDTrgSet; WORD InpBitNo[3]; BYTE InpBuf[3]; WORD TrgBitNo[2]; BYTE TrgKind[2]; DWORD dwRet; InpBitNo[0] = 0; /* 観測データ 論理ビット 0 */ InpBitNo[1] = 1; /* 観測データ 論理ビット 1 */ InpBitNo[2] = 2; /* 観測データ 論理ビット 2 */ LpDTrgSet.InpBitNo = &InpBitNo[0]; /* InpBitNoの先頭アドレスを指定 */ LpDTrgSet.BitNum = 3; /* 観測データビット数を指定 */ LpDTrgSet.Buf = &InpBuf[0]; /* InpBufの先頭アドレスを指定 */ TrgBitNo[0] = 0; /* トリガデータ 論理ビット 0 */ TrgBitNo[1] = 2; /* トリガデータ 論理ビット 2 */ LpDTrgSet.TrgBitNo = &TrgBitNo[0]; /* TrgBitNoの先頭アドレスを指定 */ LpDTrgSet.TrgBitNum = 2; /* トリガデータビット数を指定 */ TrgKind[0] = 2; /* トリガ番号0のトリガ種類を指定 */ TrgKind[1] = 3; /* トリガ番号1のトリガ種類を指定 */ LpDTrgSet.TrgKind = &TrgKind[0]; /* TrgKindの先頭アドレスを指定 */ lpDTrgSet.Tim = 10; /* データ入力周期を指定 */ dwRet = DioTrgSet(hDrv, &lpDTrgSet); ErrChk(dwRet); /* エラーチェック関数 */ API-PAC(W32)RM/DIO 93 第2章 関数のリファレンス ●Visual Basic用 Dim hDrv As Long Dim lpDTrgSet As DPTNSET Dim InpBitNo(2) As Integer Dim InpBuf(2) As Byte Dim TrgBitNo(1) As Integer Dim TrgKind(1) As Byte Dim dwRet As Long InpBitNo(0) = 0 ' 観測データ 論理ビット 0 InpBitNo(1) = 1 ' 観測データ 論理ビット 1 InpBitNo(2) = 2 ' 観測データ 論理ビット 2 LpDTrgSet.InpBitNo = LpWord(InpBitNo(0)) ' InpBitNoの先頭アドレスを指定 LpDTrgSet.BitNum = 3 ' 観測データビット数を指定 LpDTrgSet.Buf = LpByte(InpBuf(0)) ' InpBufの先頭アドレスを指定 TrgBitNo(0) = 0 ' トリガデータ 論理ビット 0 TrgBitNo(1) = 2 ' トリガデータ 論理ビット 2 LpDTrgSet.TrgBitNo = LpWord(TrgBitNo(0)) ' TrgBitNoの先頭アドレスを指定 LpDTrgSet.TrgBitNum = 2 ' トリガデータビット数を指定 TrgKind(0) = 2 ' トリガ番号0のトリガ種類を指定 TrgKind(1) = 3 ' トリガ番号1のトリガ種類を指定 LpDTrgSet.TrgKind = LpByte(TrgKind(0)) ' TrgKindの先頭アドレスを指定 lpDTrgSet.Tim = 10 ' データ入力周期を指定 dwRet = DioTrgSet(hDrv, lpDTrgSet) ErrChk(dwRet) ' エラーチェック関数 94 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DTRGSET構造体 ■書式 (C言語用) typedef struct tagDTRGSET{ LPWORD InpBitNo; WORD BitNum; LPBYTE Buf; LPWORD TrgBitNo; WORD TrgBitNum; LPBYTE TrgKind; WORD Tim; }DTRGSET; (Visual Basic用) Type DTRGSET InpBitNo As Long BitNum As Integer Buf As Long TrgBitNo As Long TrgBitNum As Integer TrgKind As Long Tim As Integer End Type ■メンバ InpBitNo : 観測信号データの入力を行う信号の入力を行う論理ビット 番号が格納されている配列の先頭アドレスを指定してくだ さい。 複数ビットの場合、配列に格納されている順番にデジタル 入力を行います。 指定可能な範囲 : 0 ≦ InpBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 BitNum : 観測信号データの入力を行うビット数を指定してください。 指定可能な範囲 : 0 ≦ BitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 Buf : 観測信号データを格納するバッファのアドレスを指定して ください。 TrgBitNo : トリガ信号の設定を行う論理ビット番号が格納されている 配列の先頭アドレスを指定してください。 複数データの場合、配列に格納されている順番がトリガ番 号になります。 指定可能な範囲 : 0 ≦ TrgBitNo ≦ 論理ビットの最大値 - 1 設定範囲外である場合、戻り値610hを返します。 API-PAC(W32)RM/DIO 95 第2章 関数のリファレンス TrgBitNum : トリガ信号の設定を行うビット数を指定してください。 指定可能な範囲 : 1 ≦ TrgBitNum ≦ 論理ビットの最大値 設定範囲外である場合、戻り値611hを返します。 TrgKind : トリガ信号の種類の設定が格納されている配列の先頭アド レスを指定してください。 指定可能な範囲 : 0 ≦ TrgKind ≦ 3 設定範囲外である場合、戻り値638hを返します。 Tim : データを入力する読み取り周期を指定してください。 指定可能な範囲 : 1 ≦ Tim ≦ FFFFh 実際の時間間隔 [ms] = 10[ms] × Tim(読み取り周期) 設定範囲外である場合、戻り値60Ahを返します。 ■補足 ① “InpBitNo”、“TrgBitNo”および“Buf”で指定するアドレスは、配列の先 頭のアドレスを指定してください。 ② “Buf”で指定する一致データのバッファサイズは、“BitNum”で指定した サイズとしてください。 ③ 観測信号データを格納するバッファはグローバル変数にしてください。 96 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioTrgStart ■使用可能ボード デジタル入力可能ボード ■機能 指定したビットからデータを周期的に入力し、その入力した各ビットデー タの状態により、イベントを発生します。また、イベントが入力された瞬 間の観測データを取得します。 この関数を実行することによりバックグラウンドでデータの入力を行いま す。 ■書式 (C言語用) HANDLE hDrv; HANDLE hOK; WORD DMegOK; DWORD dwRet; dwRet = DioTrgStart(hDrv, hOK, DMegOK); (Visual Basic用) Dim hDrv As Long Dim hOK As Long Dim DmegOK As Integer Dim dwRet As Long dwRet = DioTrgStart(hDrv, hOK, DMegOK) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 hOK : トリガ発生イベントメッセージを受け取る側のウインドウ のハンドルを指定してください。 DMegOK : トリガ発生イベントメッセージで使用する識別メッセージ 番号(ユーザー指定の識別メッセージ番号)を指定してくだ さい。また、メッセージを使用しない場合は0を指定して ください。 指定可能な範囲 : DMegOK = 0h, 400h ≦ DMegOK ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は実行後すぐに戻り値を返します。また、入力動作終了の確 認は、動作終了メッセージまたはDioStsにて行います。 ② この関数は1度実行すると、その処理が終了するまでは再実行できませ ん。 ③ 本関数、関数DioTrgSetおよびDioTrgStsから構成するトリガ監視機能関 数の使用方法については、ヘルプのQ&A“トリガ監視機能関数の使用 方法”をご参照ください。 API-PAC(W32)RM/DIO 97 第2章 関数のリファレンス ■設定例 例) トリガ監視の実行を行う場合 ●C言語用 HANDLE hDrv; HANDLE hOK; WORD wMegOK; DWORD dwRet; wMegOK = 0x470; dwRet = DioTrgStart(hDrv, hOK, wMegOK); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim dwRet As Long MsgOK.Message = &H470 dwRet = DioTrgStart(hDrv, MsgOK.hWnd, MsgOK.Message) ErrChk(dwRet) ' エラーチェック関数 98 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioTrgSts ■使用可能ボード デジタル入力可能ボード ■機能 指定したビットからデータを周期的に入力し、その入力した各ビットデー タの状態により、イベントを発生します。また、イベントが入力された瞬 間の観測データを取得します。 この関数は、イベント発生時の一致データのトリガ番号を取得します、 ■書式 (C言語用) HANDLE hDrv; DWORD TrgSts; DWORD dwRet; dwRet = DioTrgSts(hDrv, &TrgSts); (Visual Basic用) Dim hDrv As Long Dim TrgSts As Long Dim dwRe As Long dwRet = DioTrgSts(hDrv, TrgSts) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 TrgSts : 一致データのトリガ番号を格納する変数のアドレスを指定 してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 本関数、関数DioTrgSetおよびDioTrgStartから構成するトリガ監視機能 関数の使用方法については、ヘルプのQ&A“トリガ監視機能関数の使 用方法”をご参照ください。 API-PAC(W32)RM/DIO 99 第2章 関数のリファレンス ■設定例 例) イベント発生時のトリガ番号を取得する場合 ポイント: トリガ番号は、PtnStsにより確認します。 観測データは、lpDTrgSet.InpBufに格納されます。 ●C言語用 HANDLE hDrv; DWORD TrgSts; DWORD dwRet; dwRet = DioTrgSts(hDrv, &TrgSts); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim TrgSts As Long Dim dwRet As Long dwRet = DioTrgSts(hDrv, TrgSts) ErrChk(dwRet) 100 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioInpBCD ■使用可能ボード デジタル入力可能ボード ■機能 指定した連続するポートからデジタルデータの入力を行い、入力された2 進数データをBCDデータに変換して、そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; DIBCD lpDIBcd; DWORD dwRet; dwRet = DioInpBCD(hDrv, &lpDIBcd); (Visual Basic用) Dim hDrv As Long Dim lpDIBcd As DIBCD Dim dwRet As Long dwRet = DioInpBCD(hDrv, lpDIBcd) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDIBCD : BCDコードで入力するデータの設定状態を格納するDIBCD 構造体のアドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、デジタル入力機能に対応しているボード(PIボード,PIO ボード)のみ使用できます。デジタル出力機能のみに対応しているボー ド(POボード)でこの関数を実行した場合、戻り値604hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 101 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートから、デジタル入力を行い、入力されたデータをBCDデ ータに変換してバッファに格納する場合 ポイント: 論理ポート = 先頭ポート データ入力桁数 = 2 (1 ポート) ●C言語用 HANDLE hDrv; DIBCD lpDIBcd; DWORD InpData; DWORD dwRet; LpDIBcd.InpPortNo = 0; /* 論理ポート 0 */ LpDIBcd.Figure = 2; /* 桁数を指定 */ LpDIBcd.Value = &InpData; /* InpDataの先頭を指定 */ dwRet = DioInpBCD(hDrv, &lpDIBcd); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDIBcd As DIBCD Dim InpData As Long Dim dwRet As Long LpDIBcd.InpPortNo = 0 LpDIBcd.Figure = 2 LpDIBcd.Value = LpDWord(InpData) dwRet = DioInpBCD(hDrv, lpDIBcd) ErrChk(dwRet) 102 ' 論理ポート 0 ' 桁数を指定 ' InpDataの先頭を指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DIBCD構造体 ■書式 (C言語用) typedef struct tagDIBCD{ DWORD InpPortNo; WORD Figure; LPDWORD Value; }DIBCD; (Visual Basic用) Type DIBCD InpPortNo As Long Figure As Integer Value As Long End Type ■メンバ InpPortNo : 2進数データをBCDデータに変換してデジタル入力を行う 連続ポートの先頭(LSP)の論理ポート番号を指定してくだ さい。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 Figure : 2進数データをBCDデータに変換してデジタル入力を行う 桁数を指定してください。この時、指定する桁数の単位は 4bit(1/2ポート)が1桁になります。 指定可能な範囲 : 1 ≦ Figure ≦ 8 設定範囲外である場合、戻り値63Ahを返します。 Value ■補足 : 2進数データをBCDデータに変換されたデジタル入力デー タを格納する変数のアドレスを指定してください。 ① “Figure”で設定する値は、 (InpPortNo+Figure/2) ≦ 論理ポート数の最大値 の範囲内で指定してください。設定範囲外である場合、戻り値63Ahを 返します。 ② “Value”で入力された各桁の16進数データが“9”を超える場合、戻り値 63Bhを返します。 API-PAC(W32)RM/DIO 103 第2章 関数のリファレンス DioOutBCD ■使用可能ボード デジタル出力可能ボード ■機能 バッファに格納されたBCDデータを2進数に変換し、指定した連続するポ ートからデジタルデータを出力します。 ■書式 (C言語用) HANDLE hDrv; DOBCD lpDOBcd; DWORD dwRet; dwRet = DioOutBCD(hDrv, &lpDOBcd); (Visual Basic用) Dim hDrv As Long Dim lpDOBcd As DOBCD Dim dwRet As Long dwRet = DioOutBCD(hDrv, lpDOBcd) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDOBCD : BCDコードで出力するデータの設定状態を格納する DOBCD構造体のアドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、デジタル出力機能に対応しているボード(POボード、PIO ボード)のみ使用できます。デジタル出力機能のみに対応しているボー ド(POボード)でこの関数を実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 104 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートにBCDコードで56をデジタル出力する場合 ポイント: 論理ポート0 = 先頭ポート データ入力桁数 = 2 (1 ポート) 出力データ = 56 ●C言語用 HANDLE hDrv; DOBCD lpDOBcd; DWORD OutData; DWORD dwRet; LpDOBcd.OutPortNo = 0; /* 論理ポート 0 */ LpDOBcd.Figure = 2; /* 桁数を指定 */ OutData = 56; /* 出力データ */ LpDOBcd.Value = OutData; /* OutDataを指定 */ dwRet = DioOutBCD(hDrv, &lpDOBcd); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDOBcd As DOBCD Dim OutData As Long Dim dwRet As Long LpDOBcd.OutPortNo = 0 LpDOBcd.Figure = 2 OutData = 56 LpDOBcd.Value = OutData dwRet = DioOutBCD(hDrv, lpDOBcd) ErrChk(dwRet) API-PAC(W32)RM/DIO ' 論理ポート 0 ' 桁数を指定 ' 出力データ ' OutDataを指定 ' エラーチェック関数 105 第2章 関数のリファレンス DOBCD構造体 ■書式 (C言語用) typedef struct tagDOBCD{ DWORD OutPortNo; WORD Figure; DWORD Value; }DOBCD; (Visual Basic用) Type DOBCD OutPortNo As Long Figure As Integer Value As Long End Type ■メンバ OutPortNo : BCDデータを2進数データに変換してデジタル出力を行う 連続ポートの先頭(LSP)の論理ポート番号を指定してくだ さい。 指定可能な範囲 : 0 ≦ OutPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 Figure : BCDデータを2進数データに変換してデジタル出力を行う 桁数を指定してください。この時、指定する桁数の単位は 4bit(1/2ポート)が1桁になります。 指定可能な範囲 : 1 ≦ Figure ≦ 8 設定範囲外である場合、戻り値63Ahを返します。 Value : デジタル出力を行うBCDデータを指定してください。 指定可能な範囲 : 1 ≦ Value ≦ 99999999 設定範囲外である場合、戻り値63Bhを返します。 ■補足 106 ① “Figure”で設定する値は、 (OutPortNo+Figure/2) ≦ 論理ポート数の最大値 の範囲内で指定してください。設定範囲外である場合、戻り値63Bhを 返します。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioNInpBCD ■使用可能ボード デジタル入力可能ボード ■機能 指定した連続するポートからデジタルデータの入力を行い、入力された2 進数データを論理反転します。そしてその2進数データをBCDデータに変 換して、そのデータをバッファに格納します。 ■書式 (C言語用) HANDLE hDrv; DIBCD lpDIBcd; DWORD dwRet; dwRet = DioNInpBCD(hDrv, &lpDIBcd); (Visual Basic用) Dim hDrv As Long Dim lpDIBcd As DIBCD Dim dwRet As Long dwRet = DioNInpBCD(hDrv, lpDIBcd) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDIBCD : BCDコードで入力するデータの設定状態を格納するDIBCD 構造体のアドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、デジタル入力機能に対応しているボード(PIボード、PIO ボード)のみ使用できます。デジタル出力機能のみに対応しているボー ド(POボード)でこの関数を実行した場合、戻り値604hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 107 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートから、デジタル入力を行います。そして入力されたデー タを論理反転し、BCDデータに変換してバッファに格納する場合 ポイント: 論理ポート0 = 先頭ポート データ入力桁数 = 2 ( 1 ポート ) ●C言語用 HANDLE hDrv; DIBCD lpDIBcd; DWORD InpData; DWORD dwRet; LpDIBcd.InpPortNo = 0; /* 論理ポート 0 */ LpDIBcd.Figure = 2; /* 桁数を指定 */ LpDIBcd.Value = &InpData; /* InpDataの先頭を指定 */ dwRet = DioNInpBCD(hDrv, &lpDIBcd); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDIBcd As DIBCD Dim InpData As Long Dim dwRet As Long LpDIBcd.InpPortNo = 0 LpDIBcd.Figure = 2 LpDIBcd.Value = LpDWord(InpData) dwRet = DioNInpBCD(hDrv, lpDIBcd) ErrChk(dwRet) 108 ' 論理ポート 0 ' 桁数を指定 ' InpDataの先頭を指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DIBCD構造体 ■書式 (C言語用) typedef struct tagDIBCD{ DWORD InpPortNo; WORD Figure; LPDWORD Value; }DIBCD; (Visual Basic用) Type DIBCD InpPortNo As Long Figure As Integer Value As Long End Type ■メンバ InpPortNo : 2進数データをBCDデータに変換してデジタル入力を行う 連続ポートの先頭(LSP)の論理ポート番号を指定してくだ さい。 指定可能な範囲 : 0 ≦ InpPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 Figure : 2進数データをBCDデータに変換してデジタル入力を行う 桁数を指定してください。この時、指定する桁数の単位は 4bit(1/2ポート)が1桁になります。 指定可能な範囲 : 1 ≦ Figure ≦ 8 設定範囲外である場合、戻り値63Ahを返します。 Value ■補足 : 2進数データをBCDデータに変換されたデジタル入力デー タを格納する変数のアドレスを指定してください。 ① “Figure”で設定する値は、 (InpPortNo+Figure/2) ≦ 論理ポート数の最大値 の範囲内で指定してください。設定範囲外である場合、戻り値63Ahを 返します。 ② “Value”で入力された各桁の16進数データが“9”を超える場合、戻り値 63Bhを返します。 API-PAC(W32)RM/DIO 109 第2章 関数のリファレンス DioNOutBCD ■使用可能ボード デジタル出力可能ボード ■機能 バッファに格納されたBCDデータを2進数に変換し、その2進数データを論 理反転します。そして指定した連続するポートからデジタルデータを出力 します。 ■書式 (C言語用) HANDLE hDrv; DOBCD lpDOBcd; DWORD dwRet; dwRet = DioNOutBCD(hDrv, &lpDOBcd); (Visual Basic用) Dim hDrv As Long Dim lpDOBcd As DOBCD Dim dwRet As Long dwRet = DioNOutBCD(hDrv, lpDOBcd) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 lpDOBCD : BCDコードで出力するデータの設定状態を格納する DOBCD構造体のアドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 110 ① この関数は、デジタル出力機能に対応しているボード(POボード,PIO ボード)のみ使用できます。デジタル出力機能のみに対応しているボー ド(POボード)でこの関数を実行した場合、戻り値605hを返します。 ② プログラマブルボードを使用する場合は、DioOpen, Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 同一グループ内のボードは複数枚で使用することができます。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したボードの0ポートにBCDコードで56をデジタル出力する場合(出力される データは論理反転を行ったデータです。) ポイント: 論理ポート0 = 先頭ポート データ入力桁数 = 2 (1ポート) 出力データ = 56 ●C言語用 HANDLE hDrv; DOBCD lpDOBcd; DWORD OutData; DWORD dwRet; LpDOBcd.OutPortNo = 0; /* 論理ポート 0 */ LpDOBcd.Figure = 2; /* 桁数を指定 */ OutData = 56; /* 出力データ */ LpDOBcd.Value = OutData; /* OutDataを指定 */ dwRet = DioNOutBCD(hDrv, &lpDOBcd); ErrChk(dwRet); * エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim lpDOBcd As DOBCD Dim OutData As Long Dim dwRet As Long LpDOBcd.OutPortNo = 0 LpDOBcd.Figure = 2 OutData = 56 LpDOBcd.Value = OutData dwRet = DioNOutBCD(hDrv, lpDOBcd) ErrChk(dwRet) API-PAC(W32)RM/DIO ' 論理ポート 0 ' 桁数を指定 ' 出力データ ' OutDataを指定 ' エラーチェック関数 111 第2章 関数のリファレンス DOBCD構造体 ■書式 (C言語用) typedef struct tagDOBCD{ DWORD OutPortNo; WORD Figure; DWORD Value; }DOBCD; (Visual Basic用) Type DOBCD OutPortNo As Long Figure As Integer Value As Long End Type ■メンバ OutPortNo : BCDデータを2進数データに変換してデジタル出力を行う 連続ポートの先頭(LSP)の論理ポート番号を指定してくだ さい。 指定可能な範囲 : 0 ≦ OutPortNo ≦ 論理ポートの最大値 - 1 設定範囲外である場合、戻り値606hを返します。 Figure : BCDデータを2進数データに変換してデジタル出力を行う 桁数を指定してください。この時、指定する桁数の単位は 4bit(1/2ポート)が1桁になります。 指定可能な範囲 : 1 ≦ Figure ≦ 8 設定範囲外である場合、戻り値63Ahを返します。 Value : デジタル出力を行うBCDデータを指定してください。 指定可能な範囲 : 1 ≦ Value ≦ 99999999 設定範囲外である場合、戻り値63Bhを返します。 ■補足 112 ① “Figure”で設定する値は、 (OutPortNo+Figure/2) ≦ 論理ポート数の最大値 の範囲内で指定してください。設定範囲外である場合、戻り値63Bhを 返します。 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioEvent ■使用可能ボード デジタル入力可能ボード ■機能 指定したデバイスの第一枚目の割り込みを利用して、バックグラウンドか らアプリケーション側に割り込みイベントメッセージ信号を発生します。 ■書式 (C言語用) HANDLE hDrv; WORD SigLog; WORD SigCh; HANDLE hWnd; WORD DMsgNo; DWORD dwRet; dwRet = DioEvent(hDrv, SigLog, SigCh, hWnd, DMsgNo); (Visual Basic用) Dim hDrv As Long Dim SigLog As Integer Dim SigCh As Integer Dim hWnd As Long Dim DmsgNo As Integer Dim dwRet As Long dwRet = DioEvent(hDrv, SigLog, SigCh, hWnd, DMsgNo) API-PAC(W32)RM/DIO 113 第2章 関数のリファレンス ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 SigLog : 割り込み入力信号の論理フラグを指定してください。 このパラメータは、PCIバス対応ボード(PIO-48D(PCI)は除 く)、CompactPCIバス対応ボードおよびEシリーズボードを 使用している場合に限り有効です。それ以外のボードをご 使用になる場合は、0を指定してください。 指定可能な範囲 : 0 ≦ SigLog ≦ 1 0 : 入力信号の立ち上がり 1 : 入力信号の立ち下がり 設定範囲外である場合、戻り値622hを返します。 SigCh : 割り込み信号端子の入力を禁止するチャネルに“1”を指定 してください。 このパラメータは、PCIバス対応ボード、CompactPCIバス 対応ボード、Eシリーズボード、PIO-96W(PC), PIO-120D(PC) もしくはPIO-24W(PM)ボードを使用している場合に限り有 効です。それ以外のボードをご使用になる場合は、0を指 定してください。 指定可能な範囲 : Eシリーズボード : 0 ≦ SigCh ≦ 3 0 : 100から入力 1 : 101から入力 2 : 102から入力 3 : 103から入力 CompactPCIバス対応ボード : 0 ≦ SigCh ≦ Fh PCIバス対応ボード (PIO-48D(PCI)、PI-128L(PCI)、PIO-64/64L(PCI)は除く) : 0 ≦ SigCh ≦ Fh PIO-32/32L(PCI)H、PI-64L(PCI)H、 PIO-16/16L(PCI)H、 PI-32L(PCI)H、PIO-16/16RY(PCI) 0∼7ビット : I00∼I07 8∼15ビット : I10∼I17 PIO-48D(PCI) : 0 ≦ SigCh ≦ FFFFh High Byte : MSB LSB 1PB7 1PB6 1PB5 1PB4 1PB3 1PB2 1PB1 1PB0 Low Byte : MSB LSB 1PA7 1PA6 1PA5 1PA4 1PA3 1PA2 1PA1 1PA0 114 API-PAC(W32)RM/DIO 第2章 関数のリファレンス PIO-64/64L(PCI)、PI-128L(PCI) : 0 ≦ SigCh ≦ FFFFh High Byte : MSB I17 LSB I16 I15 I14 I13 I12 I11 I05 I04 I03 I02 I01 I10 Low Byte : MSB I07 LSB I06 I00 PIO-96W(PC) : 0 ≦ SigCh ≦ FFh MSB LSB CN4 CN4 CN3 CN3 CN2 CN2 CN1 CN1 PC4 PC7 PC4 PC7 PC4 PC7 PC4 PC7 PIO-120D(PC) : 0 ≦ SigCh ≦ 3FFh High Byte : Low Byte : PIO-96W(98)K : 0 ≦ SigCh ≦ 3FFh PIO-24W(PM) : 0 ≦ SigCh ≦ 3 PIO-32D(PM)、PIO-16/16L(PM) : 0 ≦ SigCh ≦ FFFFh High Byte : MSB I17 LSB I16 I15 I14 I13 I12 I11 I05 I04 I03 I02 I01 I10 Low Byte : MSB I07 LSB I06 I00 設定範囲外である場合、戻り値623hを返します。 hWnd API-PAC(W32)RM/DIO : 割り込みイベントメッセージを受け取る側のウインドウの ハンドルを指定してください。 115 第2章 関数のリファレンス DMsgNo : 割り込みイベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 指定可能な範囲 : DMsgNo = 0h, 400h ≦ DMsgNo ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、実行した後すぐに戻り、割り込み信号がただちに有効に なります。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 割り込み信号が対象となるボードは、グループ内の1枚目に設定されて いるボードです。このボードが割り込み機能に対応していないボード の場合、戻り値625hを返します。 ④ 割り込み信号として使用するボードの入力端子は、デフォルトでは“0 : 入力端子1”に設定されています。入力端子は、使用するボードにより 異なります。詳細については、ボード添付の解説書を参照してください。 ⑤ 入出力固定点数ボードおよびプログラマブルボードを使用し、かつ DioSFilterを実行している場合は、ヘルプのQ&A“割り込み信号の入力 方法”をご参照の上、ご使用ください。 ⑥ 複数のプログラムから同一ボードの割り込みイベントメッセージを受 け取る場合、SigLog, SigChの値が両方のプログラムで同一になるよう に設定してください。 ⑦ この関数は新バージョンの関数DioEventExと併用することはできません。 ⑧ ISA/Cバスボードで割り込みを2点以上お使いになる場合はDioEventEx 関数をお使いください。 116 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■設定例 例) 指定したグループの第1枚目のハードウェア割り込み機能を利用して、バックグラ ンドからアプリケーション側に割り込みイベント信号の発生を行う場合 ●C言語用 HANDLE hDrv; HANDLE hWnd; WORD DMsgNo; WORD SigLog; WORD SigCh; DWORD dwRet; DMsgNo = 0x470; SigLog = 0; /* 0を指定 */ SigCh = 0; /* 入力端子を指定 */ dwRet = DioEvent(hDrv, SigLog, SigCh, hWnd, DMsgNo); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim SigLog As Integer Dim SigCh As Integer Dim dwRet As Long MsgOK.Message = &H470 SigLog = 0 ' 0を指定 SigCh = 0 ' 入力端子を指定 dwRet = DioEvent(hDrv, SigLog, SigCh, MsgOK.hWnd, MsgOK.Message) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 117 第2章 関数のリファレンス DioIntEnable ■使用可能ボード デジタル入力可能ボード ■機能 指定したグループの割り込み信号の入力を一時的に禁止(または禁止を解 除)します。 ■書式 (C言語用) HANDLE hDrv; WORD IntMask; DWORD dwRet; dwRet = DioIntEnable(hDrv, IntMask) (Visual Basic用) Dim hDrv As Long Dim IntMask As Integer Dim dwRet As Long dwRet = DioIntEnable(hDrv, IntMask) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 IntMask : 割り込み信号の禁止/許可を指定してください。 指定可能な範囲 : 0 ≦ IntMask ≦ 1 0 : 割り込み信号の許可 1 : 割り込み信号の禁止 設定範囲外である場合、戻り値624hを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、DioEventを実行してから実行してください。 ■設定例 例) 指定したデバイスのハードウェア割り込み信号の入力を一時的に禁止する場合 ●C言語用 HANDLE hDrv; WORD IntMask; DWORD dwRet; IntMask = 1; /* 有効/無効を指定 */ dwRet = DioIntEnable(hDrv, IntMask); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim IntMask As Integer Dim dwRet As Long IntMask = 1 ' 有効/無効を指定 dwRet = DioIntEnable(hDrv, IntMask) ErrChk(dwRet) ' エラーチェック関数 118 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioIntSence ■使用可能ボード デジタル入力可能ボード ■機能 指定したグループの第一枚目の割り込みコントロールポートのステータス を取得します。 ■書式 (C言語用) HANDLE hDrv; WORD IntSence; DWORD dwRet; dwRet = DioIntSence(hDrv, &IntSence); (Visual Basic用) Dim hDrv As Long Dim IntSence As Integer Dim dwRet As Long dwRet = DioIntSence(hDrv, IntSence) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 IntSence : 割り込みコントロールポートのステータスビット情報が取 得されます。 ステータス : 0 : 割り込みが発生していないことを示します。 1 : 割り込みが発生したことを示します。 CompactPCIバス対応ボード PCIバス対応ボード (PIO-48D(PCI)、PI-128L(PCI)、PIO-64/64L(PCI)は除く) : API-PAC(W32)RM/DIO 119 第2章 関数のリファレンス PIO-32/32L(PCI)H、PI-64L(PCI)H、PIO-16/16L(PCI)H、 PI-32L(PCI)H、PIO-16/16RY(PCI) : 0∼7ビット:I00∼I07 8∼15ビット:I10∼I17 PIO-48D(PCI) : High Byte : MSB LSB 1PB7 1PB6 1PB5 1PB4 1PB3 1PB2 1PB1 1PB0 Low Byte : MSB LSB 1PA7 1PA6 1PA5 1PA4 1PA3 1PA2 1PA1 1PA0 PIO-64/64L(PCI)、PI-128L(PCI) : 0 ≦ SigCh ≦ FFFFh High Byte : MSB I17 LSB I16 I15 I14 I13 I12 I11 I05 I04 I03 I02 I01 I10 Low Byte : MSB I07 LSB I06 I00 PIO-96W(PC) : MSB LSB CN4 CN4 CN3 CN3 CN2 CN2 CN1 CN1 PC4 PC7 PC4 PC7 PC4 PC7 PC4 PC7 PIO-120D(PC) : High Byte : Low Byte : PIO-96W(98)K : PIO-24W(PM) : 120 API-PAC(W32)RM/DIO 第2章 関数のリファレンス PIO-32D(PM)、PIO-16/16L(PM) : High Byte : MSB I17 LSB I16 I15 I14 I13 I12 I11 I05 I04 I03 I02 I01 I10 Low Byte : MSB I07 LSB I06 I00 設定範囲外である場合、戻り値623hを返します dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、PCIバス対応ボード、CompactPCIバス対応ボード、 PIO-24W(PM)またはPIO-96W(98)Kボードに限り使用可能です。 ② この関数は、DioEventを実行してから実行してください。ただし、 PIO-16/16L(PCI), PIO-16/16T(PCI), PIO-32/32B(PCI)H, PIO-32/32L(PCI), PIO-32/32T(PCI), PI-64L(PCI) , PIO-32/32L(CPCI), PI-64L(CPCI)をご使用 になる場合は、DioEventの実行に関わらず、本関数を使用することが 出来ます。 ③ この関数の実行により、前回の割り込みコントロールポートのステー タスビットは0クリアされます。 ■設定例 例) 割り込みコントロールポートのステータスを取得する場合 ポイント:割り込みコントロールポートのステータスは、IntSenceにより確認しま す。 ●C言語用 HANDLE hDrv; DWORD dwRet; WORD Intsence; dwRet = DioIntSence(hDrv, &IntSence); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim dwRet As Long Dim IntSence As Integer dwRet = DioIntSence(hDrv, IntSence) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 121 第2章 関数のリファレンス DioEventEx ■使用可能ボード デジタル入力可能ボード ■機能 指定したデバイスの第1枚目の割り込みを利用して、バックグラウンドか らアプリケーション側に割り込みイベントメッセージ信号を発生します。 (拡張版) 割り込みとして使用可能な各チャネルごとに別のメッセージを送出します。 ■書式 (C言語用) HANDLE hDrv; WORD SigLog; WORD SigCh; HANDLE hWnd; WORD DMsgNo; DWORD dwRet; dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, DMsgNo); (Visual Basic用) Dim hDrv As Long Dim SigLog As Integer Dim SigCh As Integer Dim hWnd As Long Dim DMsgNo As Integer Dim dwRet As Long dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, DMsgNo) 122 API-PAC(W32)RM/DIO 第2章 関数のリファレンス ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 SigLog : 割り込み入力信号の論理フラグを指定してください。 このパラメータは、PCIバス対応ボード(PIO-48D(PCI)を除 く)、CompactPCIバス対応ボードおよびEシリーズボードを 使用している場合に限り有効です。それ以外のボードをご 使用になる場合は、0を指定してください。 指定可能な範囲 : 0 ≦ SigLog ≦ 1 0:入力信号の立ち上がり 1:入力信号の立ち下がり 設定範囲外である場合、戻り値622hを返します。 SigCh : 割り込み信号端子の入力を行うチャネルを指定してくださ い。 このパラメータは、PCIバス対応ボード、CompactPCIバス 対応ボード、Eシリーズボード、PIO-96W(PC)、PIO-120D(PC) もしくはPIO-24W(PM)ボードを使用している場合には、以 下に示すチャネル番号を指定してください。このパラメー タの意味は旧関数DioEventのSigChとは異なりますのでご 注意ください。 指定可能な範囲 : 入出力点数固定ボード : 0 ≦ SigCh ≦ 3 1 1 2 3 : : : : IRQ 2ndIRQ 3ndIRQ 4thIRQ Eシリーズボード : 0 ≦ SigCh ≦ 3h 0 1 2 3 : : : : I00 I01 I02 I03 から入力 から入力 から入力 から入力 CompactPCIバス対応ボード : 0 ≦ SigCh ≦ 3 PCIバス対応ボード (PIO-48D(PCI)、PI-128L(PCI)、PIO-64/64L(PCI)を除く): 0 ≦ SigCh ≦ 3h 0 1 2 3 : : : : I00 I01 I02 I03 から入力 から入力 から入力 から入力 PIO-64/64L(PCI)、PI-128L(PCI): 0 ≦ SigCh ≦ Fh 0∼7 : I00∼I07から入力 8∼15 : I10∼I17から入力 API-PAC(W32)RM/DIO 123 第2章 関数のリファレンス PIO-32/32L(PCI)H、PI-64L(PCI)H、PI-32L(PCI)H 0 ≦ SigCh ≦ 31 0∼7 : I00∼I07から入力 8∼15 : I10∼I17から入力 16∼23 : I20∼I27から入力 24∼31 : I30∼I37から入力 PIO-16/16L(PCI)H、PIO-16/16RY(PCI)、 0 ≦ SigCh ≦ 15 0∼7 : I00∼I07から入力 8∼15 : I10∼I17から入力 PIO-48D(PCI) : 0 ≦ SigCh ≦ 47 : 1PA0 から入力 : 7 : 1PA7 から入力 8 : 1PB0 から入力 : 15 : 1PB7 から入力 16 : 1PC0 から入力 : 23 : 1PC7 から入力 以降 24∼31 : 2PA0∼7 32∼39 : 2PB0∼7 40∼47 : 2PC0∼7 PIO-96W(PC) : 0 ≦ SigCh ≦ 8 0 : CN1 PC7 から入力 1 : CN1 PC4 から入力 2 : CN2 PC7 から入力 3 : CN2 PC4 から入力 4 : CN3 PC7 から入力 5 : CN3 PC4 から入力 6 : CN4 PC7 から入力 7 : CN4 PC4 から入力 PIO-120D(PC) : 0 ≦ SigCh ≦ 9 0 : CN1 PC0 から入力 1 : CN1 PC3 から入力 2 : CN2 PC0 から入力 3 : CN2 PC3 から入力 4 : CN3 PC0 から入力 5 : CN3 PC3 から入力 6 : CN4 PC0 から入力 7 : CN4 PC3 から入力 8 : CN5 PC0 から入力 9 : CN5 PC3 から入力 0 124 API-PAC(W32)RM/DIO 第2章 関数のリファレンス PIO-24W(PM) : 0 ≦ SigCh ≦ 1 0 : CN1 PC0 から入力 1 : CN1 PC3 から入力 PIO-32D(PM) : 0 ≦ SigCh 0∼7 8∼15 16∼23 24∼31 ≦ 31 : I00∼I07 : I10∼I17 : I20∼I27 : I30∼I37 PIO-16/16L(PM) : 0 ≦ SigCh ≦ 15 0∼7 : I00∼I07 8∼15 : I10∼I17 hWnd : DMsgNo : 設定範囲外である場合、戻り値623hを返します。 割り込みイベントメッセージを受け取る側のウィンドウの ハンドルを指定してください。 割り込みイベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。また、メッセージを使用しない場合は0を指定してく ださい。 指定可能な範囲 : DMsgNo = 0h, 400h ≦ DMsgNo ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet ■補足 : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、実行した後すぐに戻り、割り込み信号がただちに有効に なります。 ② プログラマブルボードを使用する場合は、DioOpen、Dio8255Modeを実 行してからこの関数を使用するようにしてください。 ③ 割り込み信号が対象となるボードは、グループ内の1枚目に設定されて いるボードです。このボードが割り込み機能に対応していないボード の場合、戻り値625hを返します。 ④ 割り込み信号として使用するボードの入力端子は、デフォルトでは "0:入力端子1"に設定されています。入力端子は、使用するボードにより 異なります。詳細については、ボード添付の解説書を参照してください。 ⑤ 入出力固定点数ボードおよびプログラマブルボードを使用し、かつ DioSFilterを実行している場合は、ヘルプのQ&A"割り込み信号の入力 方法"をご参照の上、ご使用ください。 ⑥ 複数のプログラムから同一ボードの割り込みイベントメッセージを受 け取る場合、同一チャネルに対するSigLogの設定値が同じになるよう にしてください。 ⑦ この関数は、旧バージョンの関数DioEventと併用することはできませ ん。 API-PAC(W32)RM/DIO 125 第2章 関数のリファレンス ■設定例 例) 指定したグループの第1枚目のハードウェア割り込み機能を利用して、0チャネル と1チャネルの割り込みイベント信号の発生を行う場合 ●C言語用 HANDLE hDrv; HANDLE hWnd; WORD DMsgNo; WORD SigLog; WORD SigCh; DWORD dwRet; DMsgNo = 0x470; SigLog = 0; /* 0を指定 */ SigCh = 0; /* 入力端子を指定 */ dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, DMsgNo); ErrChk(dwRet); /* エラーチェック関数 */ DMsgNo = 0x471; SigLog = 0; /* 0を指定 */ SigCh = 1; /* 入力端子を指定 */ dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, DMsgNo); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv Dim SigLog Dim SigCh Dim dwRet As Long As Integer As Integer As Long MsgOK0.Message = &H470 SigLog = 0 ' 0を指定 SigCh = 0 ' 入力端子を指定 dwRet = DioEventEx(hDrv, SigLog, SigCh, MsgOK0.hWnd, MsgOK0.Message) ErrChk(dwRet) ' エラーチェック関数 MsgOK1.Message = &H471 SigLog = 0 ' 0を指定 SigCh = 1 ' 入力端子を指定 dwRet = DioEventEx(hDrv, SigLog, SigCh, MsgOK1.hWnd, MsgOK1.Message) ErrChk(dwRet) ' エラーチェック関数 126 API-PAC(W32)RM/DIO 第2章 関数のリファレンス DioIntEnableEx ■使用可能ボード デジタル入力可能ボード ■機能 指定したチャネルの割り込み信号の入力を一時的に禁止(または禁止を解 除)します。(拡張版) ■書式 (C言語用) HANDLE hDrv; WORD SigCh; WORD IntMask; DWORD dwRet; dwRet = DioIntEnableEx(hDrv, SigCh, IntMask) (Visual Basic用) Dim hDrv As Long Dim SigCh As Integer Dim IntMask As Integer Dim dwRet As Long dwRet = DioIntEnableEx(hDrv, SigCh, IntMask) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 SigCh : DioEventExで指定したチャネル番号を指定してください。 IntMask : 割り込み信号の禁止/許可を指定してください。 指定可能な範囲 : 0 ≦ IntMask ≦ 1 0:割り込み信号の許可 1:割り込み信号の禁止 dwRet : 設定範囲外である場合、戻り値624hを返します。 ■補足 終了情報(戻り値) 正常終了 :0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、DioEventExを実行してから実行してください。 API-PAC(W32)RM/DIO 127 第2章 関数のリファレンス ■設定例 例) 指定したチャネルのハードウェア割り込み信号の入力を一時的に禁止する場合 ●C言語用 HANDLE hDrv; WORD SigCh; WORD IntMask; DWORD dwRet; SigCh = 0; /* 入力端子を指定 */ IntMask = 1; /* 有効/無効を指定 */ dwRet = DioIntEnableEx(hDrv, SigCh, IntMask); /* エラーチェック関数 */ ErrChk(dwRet); ●Visual Basic用 Dim hDrv Dim SigCh Dim IntMask Dim dwRet As Long As Integer As Integer As Long SigCh = 0 ' 入力端子を指定 IntMask = 1 ' 有効/無効を指定 dwRet = DioIntEnableEx(hDrv, SigCh, IntMask) ErrChk(dwRet) 128 ' エラーチェック関数 API-PAC(W32)RM/DIO 第2章 関数のリファレンス LpByte ■機能 Visual Basicで符号なしバイト(8ビット)変数のアドレスを取得します。 ■書式 (C言語用) 使用しません。 (Visual Basic用) Dim Data As Byte Dim Param As Long Param = LpByte(Data) ■引数 ■補足 Data : 符号なしバイト変数を指定してください。 Param : 引数 Data のアドレスを取得します。 ① Visual Basicで配列の先頭アドレスを取得する場合に使用します。 LpWord ■機能 Visual Basicで符号なしワード(16ビット)変数のアドレスを取得します。 ■書式 (C言語用) 使用しません。 (Visual Basic用) Dim Data As Integer Dim Param As Long Param = LpWord(Data) ■引数 ■補足 Data : 符号なしワード変数を指定してください。 Param : 引数 Data のアドレスを取得します。 ① Visual Basicで配列の先頭アドレスを取得する場合に使用します。 LpDWord ■機能 Visual Basicで符号なしダブルワード(32ビット)変数のポインタを取得しま す。 ■書式 (C言語用) 使用しません。 (Visual Basic用) Dim Data As Long Dim Param As Long Param = LpDWord(Data) ■引数 ■補足 Data : 符号なしダブルワード変数を指定してください。 Param : 引数 Data のアドレスを取得します。 ① Visual Basicで配列の先頭アドレスを取得する場合に使用します。 API-PAC(W32)RM/DIO 129 第2章 関数のリファレンス 戻り値一覧 戻り値が "0" のときは関数は正常に実行されています。戻り値が "0" 以外のときはエラーが 発生したことを示し、関数の処理は中断されます。 API-TOOL 共通リターンコード コード メッセージ 000h 正常終了 001h ドライバ番号の設定エラー 初期化処理で設定されたドライバ番号が設定範囲外の場合 設定範囲 : 0 ≦ DrvNo ≦ 3 002h ドライバオープンエラー 初期化処理で設定されたドライバがオープンできない場合 003h グループ番号の設定エラー 初期化処理で設定されたグループ番号が設定範囲外である場合 設定範囲 : 1 ≦ GrpNo ≦ 4 004h 初期化処理の再実行エラー 同一グループ番号の初期化処理を終了処理前に再実行した場合 005h スレッドオープンエラー スレッドを作成できない場合 00Ch メッセージ値の設定エラー 設定したメッセージ値が設定範囲外である場合 設定範囲 : WM_USER = 0h , 400h ≦ WM_USER ≦ 7FFFh 010h PCIバス対応ボードまたはCompactPCIバス対応ボードのBoardIDの誤設定エ ラー 設定したPCIバス対応ボードまたはCompactPCIバス対応ボードのBoardIDが CONFIG.EXEで設定したBoardIDと異なる場合 011h PCIバス対応ボードまたはCompactPCIバス対応ボードのBoardID重複 エラー 設定したPCIバス対応ボードまたはCompactPCIバス対応ボードのBoardIDが 重複している場合 130 API-PAC(W32)RM/DIO 第2章 関数のリファレンス API-DIO リターンコード コード メッセージ 600h 予備 601h 予備 602h 予備 603h 予備 604h デジタル入力機能の実行エラー デジタル入力機能を持たない論理デバイスに対して、デジタル入力関数を 実行した場合。 605h デジタル出力機能の実行エラー デジタル出力機能を持たない論理デバイスに対して、デジタル出力関数を 実行した場合。 606h デジタル入出力ポート番号の設定エラー 設定された論理ポート番号が設定範囲外である場合 設定範囲 : 0 ≦ PortNo ≦ 論理ポート数の最大値 - 1 607h デジタル入出力ポート数の設定エラー 設定されたポート数が設定範囲外である場合 設定範囲 : 1 ≦ PortNum ≦ 論理ポート数の最大値 608h デジタル入出力の実行中エラー バックグラウンドで、DioInpBack, DioBitInpBack, DioOutBack, DioBitOutBack, DioPtnStartおよびDioTrgStartが実行中であるとき、 デジタル入出力関数を実行した場合 609h デジタル入出力のデータ入出力回数の設定エラー データ入出力回数が設定範囲外である場合 設定範囲 : 1 ≦ DataNum ≦FFFFh 60Ah デジタル入出力のデータ入出力周期の設定エラー データ入出力周期が設定範囲外である場合 60Bh ストップ機能の実行エラー バックグラウンドで、DioInpBack, DioBitInpBack, DioOutBack, DioBitOutBack, DioPtnStartおよびDioTrgStartが未実行である場合に、 DioStopを実行した場合 610h デジタル入出力ビット番号の設定エラー 設定された論理ビット番号が設定範囲外である場合 設定範囲 : 0 ≦ BitNo ≦ 論理ビット数の最大値 - 1 API-PAC(W32)RM/DIO 131 第2章 関数のリファレンス 611h デジタル入出力ビット数の設定エラー 設定された論理ビット数が設定範囲外である場合 設定範囲 : 1 ≦ BitNum ≦ 論理ビット数の最大値 612h デジタルビット入力機能の実行エラー デジタルビット入力機能を持たない論理デバイスに対して、デジタルビッ ト入力関数を実行した場合。 613h デジタルビット出力機能の実行エラー デジタルビット出力機能を持たない論理デバイスに対して、デジタルビッ ト出力関数を実行した場合。 620h 割り込みレベルの設定エラー 設定した割り込みレベルが設定範囲外である場合 設定範囲 : 3 ∼ 7, 9 ∼ 12, 14, 15 621h 予備 622h 割り込み入力信号の論理フラグの設定エラー 割り込み入力信号の論理フラグが設定範囲外である場合 設定範囲 : 0 ≦ SigLog ≦ 1 623h 割り込み入力信号の入力端子の設定エラー 割り込み入力信号の入力端子が設定範囲外である場合 設定範囲 : 0 ≦ SigCh ≦ 3FFh 624h 割り込み入力信号の有効/無効の設定エラー 割り込み入力信号の有効/無効が設定範囲外である場合 設定範囲 : 0 ≦ IntMask ≦ 1 625h DioIntEnableの実行エラー DioEventを実行せずに、DioIntEnableを実行した場合 626h 予備 627h 予備 628h 関数の重複実行エラー DioEventを重複して実行した場合 629h 割り込み関数の実行エラー デジタル入力機能を持たないボードに対してDioEventを実行した場合 630h プログラマブルボードのチップ番号の設定エラー Dio8255Modeで設定したチップ番号が設定範囲外である場合 設定範囲 : 0 ≦ CNx ≦ (論理デバイス内の)ボードのチップ数 - 1 631h プログラマブルボードの機能の実行エラー プログラマブルボードの機能を持たない論理デバイスに対して Dio8255Modeを実行した場合 632h プログラマブルボードのチップ単位のポート番号の設定エラー Dio8255Modeで設定したチップ単位のポート番号が設定範囲外である場合 設定範囲 : 0 ≦ PortNo ≦ 2 132 API-PAC(W32)RM/DIO 第2章 関数のリファレンス 633h Eシリーズボード、PCIバス対応ボードまたはCompactPCIバス対応ボード の未実装エラー ・PCIバス対応ボードまたはCompactPCIバス対応ボードが未実装で ある場合 ・Eシリーズボードが未実装である場合またはJP2の設定が2-3である 場合。 ・詳細はヘルプのQ&A“入出力ができない”をご参照ください。 634h デジタルフィルタの時定数の設定エラー デジタルフィルタの時定数が設定範囲外である場合 設定範囲 : Eシリーズボード、PCIバス対応ボードおよびCompactPCIバス対応ボード 0 ≦ TimCode ≦ 20 入出力点数固定ボードおよびプログラマブルボード 0, 12 ≦ TimCode ≦ 20 635h プロセスコントロール機能関数の入力ポート番号の設定エラー プロセスコントロール機能関数の入力ポート番号が設定範囲外である場合 設定範囲 : 1 ≦ PortNum ≦ 4 636h プロセスコントロール機能関数のパターン個数の設定エラー プロセスコントロール機能関数のパターン個数が設定範囲外である場合 設定範囲 : 1 ≦ StsBufNum ≦ FFFFFFFFh 637h プロセスコントロール機能関数の実行順序エラー DioPtnSetを実行せずにDioPtnStartを実行した場合 DioPtnStartを実行せずにDioPtnStsを実行した場合 638h トリガ監視機能関数のトリガ種類の設定エラー トリガ監視機能関数のトリガ種類が設定範囲外である場合 設定範囲 : 0 ≦ TrgKind ≦ 3 639h トリガ監視機能関数の実行順序エラー DioTrgSetを実行せずにDioTrgStartを実行した場合 DioTrgStartを実行せずにDioTrgStsを実行した場合 63Ah BCDデータの桁数設定エラー BCDデータに変換してデジタル入出力を行うときの桁数が設定範囲外であ る場合 設定範囲 : 1 ≦ Figure ≦ 8 : (PortNo+Figure/2) ≦ 論理ポート数の最大値 63Bh BCDデータのデータ設定エラー BCDデータに変換してデジタル出力を行うときのデータの値が設定範囲外 である場合 設定範囲 : 1 ≦ Value ≦ 99999999 入力された1桁の16進数データが設定範囲外である場合 設定範囲 : 0 ≦ 1桁の16進数データ ≦ 9 63Ch デバイスドライバ中で必要なメモリ領域を確保できなかった場合 642h パラメータエラー API-PAC(W32)RM/DIO 133 第2章 関数のリファレンス 134 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 第3章 PIO-32DM(PCI)を使用する場合 プログラミング・動作テストを始める前に 本ドライバでPIO-32DM(PCI)を使用する場合は、API-TOOLコンフィグレーションプログラム での登録が必要です。詳しくは、API-PAC(W32)の解説書を参照してください。(※1) Windows XP/2000、Windows Me/98/95で使用する場合は、ボードを挿入して再起動した時点で 出てくる新しいハードウェアの追加のウィザードにしたがって、ボードをOSに登録する必要 があります。詳しくは、ヘルプファイル(HWINST.HLP)を参照してください。 本ドライバは、DLLとデバイスドライバ(VXD/SYS)ファイルで提供されています。 作成されたアプリケーションを他の環境で使用する場合、以下のファイルをコピーしてください。 ここに記述されていない他の依存ファイルについての詳細は、ヘルプを参照してください。 ※1) PIO-32DM(PCI)は、1グループごとに1枚しかボードを登録できません。 ◆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¥APIDIO05.VXD ◆Windows XP/2000/NT※2 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¥APIDIO05.SYS 作成するアプリケーションからDLLの関数を呼び出すには、以下の手順が必要です。 ■VisualC++の場合 ① サンプルプログラムに含まれているヘッダファイル(APIDIODM.H)をインクルードしてく ださい。 ② サンプルプログラムに含まれているLIBファイル(APIDIO.LIB)をプロジェクトに追加して ください。 ■VisualBasicの場合 ① サンプルプログラムに含まれている標準モジュール(APIDIODM.BAS)をプロジェクトに追 加してください。 ※2) Windows XPおよび2000でVB4.0を使用することはできません。当社では、動作保証してお りません。Windows XPおよび2000では、MFCライブラリのスタティックリンクでのみ動作確 認をしております。 API-PAC(W32)RM/DIO 135 第3章 PIO-32DM(PCI)を使用する場合 使用手順 PIO-32DM(PCI)を使用する場合には、以下の手順で操作してください。各関数の詳細について は、関数リファレンスを参照してください。 初期化 モード設定 サンプリング / ジェネレーティング条件設定 ( ※ ) リセット バッファ設定 スタート ストップ 終了処理 ※注 ) ここでサンプリングとは、ボードからメモリへデータを 入力することを表し、ジェネレーティングとは、メモリ からボードへデータを出力することを表します。 図3.1 136 使用手順 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ■初期化 本ボードを使用する場合は、初期化処理、入出力のモード設定が必要です。 初期化処理(DioOpen、DioOpenEx)で使用するボードを初期化し、デバイスハンドルを取得し ます。以降のボードに対する操作は、ここで取得したデバイスハンドルを使用して行います。 ■モード設定 デバイスハンドルを取得すると、次に入出力の方向を決めるためのモード設定 (DioDmSetDirection)を行います。入出力方向は、32点入力、32点出力、16点入力16点出力の中 から選びます。 次に、スタンドアロン/マスタ/スレーブ設定を行います。 1枚のみ使用する場合、または各ボードを独立して使用する場合には、スタンドアロンに設定 します(DioDmSetStandAlone)。 複数枚を同期させて使用する場合は、そのうちの1枚を同期信号を出力するボード(マスタ)と して設定し(DioDmSetSetMasterCfg)、それ以外を同期信号を受け取るボード(スレーブ)として 設定します(DioDmSetSlaveCfg)。 複数枚のボードを同期させて使用する場合、同期制御コネクタ(SCコネクタ)を使用するのが便 利です。 詳しくは、「複数枚のボードを同時に使用する場合」、「同期制御コネクタ」を参照してくだ さい。 ■連続入出力の手順 バスマスタ転送機能を用いて、サンプリング(入力)/ジェネレーティング(出力)する場合の設定 手順を説明します。 ・サンプリング/ジェネレーティング条件の設定 初期化とモード設定が完了したら、サンプリング/ジェネレーティング条件を設定します。 サンプリング/ジェネレーティング条件には、入出力を開始するための条件(ソフトウェアスタ ート、外部スタート等)を設定するスタート条件設定(DioDmSetStartTrg)、入出力を行うタイミ ング(内部クロック、外部クロック等)を設定するクロック条件設定(DioDmSetClockTrg)、入出 力を完了するための条件(ソフトウェアストップ、指定個数停止など)を設定する、ストップ条 件設定(DioDmSetStopTrg)の3種類があります。 また、各設定に対して、それを補足する条件設定関数(例:個数指定停止時の個数設定など)が あります。 これらのサンプリング/ジェネレーティング条件設定は、常に同じ条件でデータを入出力する 場合には、初期化後に一度行っておけば、それ以降は同じ条件で動作が行われます。データ転 送ごとに異なる動作条件で転送する場合には、変更すべき設定のみを、転送開始する前に設定 してください。 API-PAC(W32)RM/DIO 137 第3章 PIO-32DM(PCI)を使用する場合 サンプリング/ジェネレーティングのパターンは、以下の表の中から選択できます。 表3.1 サンプリング/ ジェネレーティングのパターン 条件 スタート条件 クロック条件 ストップ条件 種類 シンボル ソフトウェアスタート DIODM_START_SOFT 外部スタート立上り DIODM_START_EXT_RISE 外部スタート立下り DIODM_START_EXT_FALL パターン一致(入力のみ) DIODM_START_PATTERN SCコネクタEXTSIG1 DIODM_START_EXTSIG_1 SCコネクタEXTSIG2 DIODM_START_EXTSIG_2 SCコネクタEXTSIG3 DIODM_START_EXTSIG_3 内部クロック DIODM_CLK_CLOCK 外部クロック DIODM_CLK_EXT_TRG ハンドシェイク DIODM_CLK_HANDSHAKE SCコネクタEXTSIG1 DIODM_CLK_EXTSIG_1 SCコネクタEXTSIG2 DIODM_CLK_EXTSIG_2 SCコネクタEXTSIG3 DIODM_CLK_EXTSIG_3 ソフトウェアストップ DIODM_STOP_SOFT 外部ストップ立上り DIODM_STOP_EXT_RISE 外部ストップ立下り DIODM_STOP_EXT_FALL 指定個数停止 DIODM_STOP_NUM_1 SCコネクタEXTSIG1 DIODM_STOP_EXTSIG_1 SCコネクタEXTSIG1 DIODM_STOP_EXTSIG_2 SCコネクタEXTSIG1 DIODM_STOP_EXTSIG_3 ・リセット リセット関数によって、前回転送時のカウンタ値やFIFO内容をリセットする必要があります (DioDmReset)。 ・ バ ッ フ ァ の 設 定( サンプリング : 入 力) バスマスタ転送は、ボードに転送先のメモリアドレスを設定しておき、転送をスタートすると ボードからそのメモリアドレスへデータの転送を行います。 したがって、転送開始前に入力値を受け取るバッファ領域を、ボードに設定しておかなければ なりません(DioDmSetBuff)。 設定したバッファ領域は、物理的に他のアドレスに移動しないようにロックされます。ロック された領域は、転送完了によってアンロックされます。アンロックされた領域に対する転送は 危険ですので、バッファの設定は転送を行うごとに必ず行なわなければなりません。 バッファ領域をヒープやスタックなどに取得した場合、この領域は転送が完了するまで、開放 されないようにしなければなりません。転送完了までにバッファ領域が開放された場合、その 領域は他の処理に使用されます。 他の処理に使用されている領域にデータ転送が行われると、プログラムが例外を発生してしま う可能性があります。 プログラムの安全性を重視する場合は、バスマスタ転送に使用する領域を、グローバルな領域 にすることをお勧めします。 138 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 PIO-32DM(PCI)では、最大64MByte分のバッファ領域を、ボードに設定することが可能です。 また、転送時の動作として、バッファ内にデータを全部転送した時点で転送を完了する1回転 送と、同じバッファ領域に対して無限回数繰り返してデータを転送する無限転送を用意してい ます。 ・ バ ッ フ ァ の 設 定( ジェネレーティング: 出 力) バスマスタ転送は、ハードウェアに転送元のメモリアドレスを設定しておき、ジェネレーティ ングを実行する前にそのメモリアドレスからボード内のFIFOにデータの転送を行っておきま す。 出力を行う場合は、出力データを格納したバッファ領域を、ハードウェアに設定しておかなけ ればなりません(DioDmSetBuff)。 設定したバッファ領域は、物理的に他のアドレスに移動しないようにロックされます。ロック された領域は、転送完了によってアンロックされます。バッファの設定は転送を行うごとに必 ず行わなければなりません。 バッファ領域をヒープやスタックなどに取得した場合、この領域は転送が完了するまで、開放 されないようにしなければなりません。転送完了までにバッファ領域が開放された場合、その 領域は他の処理に使用され、出力したいデータ以外のデータが書き込まれます。そのままの状 態で転送が行われると、予期せぬデータを出力してしまう可能性があります。 プログラムの安全性を重視する場合は、バスマスタ転送に使用する領域を、グローバルな領域 にすることをお勧めします。 PIO-32DM(PCI)では、最大64MByte分のバッファ領域を、ハードウェアに設定することが可能 です。 また、転送時の動作として、バッファ内のデータを全部転送した時点で転送を完了する1回転 送と、同じバッファ領域に対して無限回数繰り返してデータを転送する無限転送を用意してい ます。 同一データを指定回数だけ繰返して転送したい場合、その回数分のサイズのバッファを用意し て、1回転送を使用してください。 ・スタート サンプリング/ジェネレーティング条件を設定し、バッファを設定したら、動作をスタートし ます(DioDmStart)。 動作をスタートすると、スタート条件が満たされた時点でサンプリング/ジェネレーティング が開始され、ストップ条件が満たされた時点でサンプリング/ジェネレーティングが終了しま す。ソフトウェアスタートにした場合、DioDmStart関数を呼び出したタイミングで、サンプリ ング/ジェネレーティングが開始されます。 入力データは、一旦ボード内のFIFOに蓄えられ、バスが空いたタイミングを利用して、アプ リケーション中のメモリに転送されます。 出力データは、直ちにボード内のFIFOに送られ、クロック条件が成立した時点で外部に出力 されます。 ・ストップ/ 転送完了 ストップ条件が満たされると、サンプリング/ジェネレーティングが終了します。アプリケー ションから動作の終了を捕らえるには、ステータスを監視する方法(DioDmGetStatus)と、メッ セージによって終了を確認する方法(DioDmSetStopEvent)の2つが用意されています。動作途 中で、転送数を確認して(DioDmGetCount)、処理を行うこともできます。サンプリング/ジェネ レーティングが終了すると、ロックされていたバッファ領域がアンロックされます。 API-PAC(W32)RM/DIO 139 第3章 PIO-32DM(PCI)を使用する場合 ■汎用入出力 バスマスタ転送を行っていない間は、通常のPIOボードとして、直接のデータ入力 (DioDmInpDWord)、直接データを指定しての出力(DioDmOutDWord)ができます。 ■割り込み バスマスタ転送を行っていない間は、通常のPIOボードと同様に、4点の割り込みが使用でき ます(DioEvent, DioIntSence, DioIntEnable, DioEventEx, DioIntEnableEx)。 割り込みとして使用可能なビットは、DIOA00∼DIOA03までのビットです。バスマスタ転送中 は、これらPIOの割り込みはマスクされます。 ■複数枚のボードを同時に使用する場合 複数枚のボードを同時に使用する場合について説明します。 例えば2枚のボードを全く別々の条件で使用する場合、サンプリングにまつわる各設定はボー ドごとに行い、別々にスタートを行います。 この場合、モード設定時にスタンドアロン設定にしてご使用ください。 それとは別に、チャネル数を増やす目的等により複数枚のボードでスタート、クロック、スト ップを同期させて使用する場合、外部クロックなどを共通で使用する方法もありますが、そう いった特別な外部配線を必要としない方法として、同期制御コネクタ(SCコネクタ)があります。 同期制御コネクタには、EXTSIG1∼EXTSIG3までの同期信号線が用意されており、これらを スタート、クロック、ストップ条件に割り当てることによって、マスタからの信号に同期させ てスレーブを動作させることができます。 DioDmSetSetMasterCfg関数を使用すれば、ボードをマスタに設定して、EXTSIG1∼EXTSIG3ま での同期信号線に対してどのような信号を出力するかを定義できます。DioDmSetSlaveCfg関数 を使用すれば、ボードをスレーブに設定して、受け取ったEXTSIG1∼EXTSIG3までの同期信 号を使用するかどうかを設定できます。EXTSIG1∼EXTSIG3までの信号を実際のスタート、 クロック、ストップに割り当てるのは、スタート条件設定関数(DioDmSetStartTrg)、クロック 条件設定関数(DioDmSetClockTrg)、ストップ条件設定関数(DioDmSetStopTrg)の役目です。 同期制御コネクタについての詳細は、第3章「同期制御コネクタ」をご参照ください。 以下に、EXTSIG1∼EXTSIG3までの信号線に出力可能な信号の種類を示します。 140 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 表3.2 サンプリング/ ジェネレーティング 種類 条件 パターン入力 パターン出力 シンボル ソフトウェアスタート DIODM_EXT_START_SOFT_IN ソフトウェアストップ DIODM_EXT_STOP_SOFT_IN 内部クロック DIODM_EXT_CLOCK_IN 外部クロック DIODM_EXT_EXT_TRG_IN 外部スタートトリガ立上り DIODM_EXT_START_EXT_RISE_IN 外部スタートトリガ立下り DIODM_EXT_START_EXT_FALL_IN パターン一致 DIODM_EXT_START_PATTERN_IN 外部ストップトリガ立上り DIODM_EXT_STOP_EXT_RISE_IN 外部ストップトリガ立下り DIODM_EXT_STOP_EXT_FALL_IN クロックエラー DIODM_EXT_CLOCK_ERROR_IN ハンドシェイク DIODM_EXT_HANDSHAKE_IN ソフトウェアスタート DIODM_EXT_START_SOFT_OUT ソフトウェアストップ DIODM_EXT_STOP_SOFT_OUT 内部クロック DIODM_EXT_CLOCK_OUT 外部クロック DIODM_EXT_EXT_TRG_OUT 外部スタートトリガ立上り DIODM_EXT_START_EXT_RISE_OUT 外部スタートトリガ立下り DIODM_EXT_START_EXT_FALL_OUT 外部ストップトリガ立上り DIODM_EXT_STOP_EXT_RISE_OUT 外部ストップトリガ立下り DIODM_EXT_STOP_EXT_FALL_OUT クロックエラー DIODM_EXT_CLOCK_ERROR_OUT ハンドシェイク DIODM_EXT_HANDSHAKE_OUT ■終了処理 ボードの使用を終了するときは、終了処理(DioClose)を実行しなければなりません。終了処理 では、取得していたデバイスハンドルを開放し、バスマスタ転送中であれば転送を中止し、ロ ックされていたメモリ領域をアンロックします。 API-PAC(W32)RM/DIO 141 第3章 PIO-32DM(PCI)を使用する場合 関数のリファレンス ◆関数一覧 サポートしている関数は以下のとおりです。 関数名 機能 ■共通部 DioOpen 初期化処理 DioOpenEx 初期化処理(デバイス名) DioClose 終了処理 ■モード設定関数 DioDmSetDirection 入出力方向設定 DioDmSetStandAlone スタンドアロン設定 DioDmSetSetMasterCfg マスタ設定 DioDmSetSlaveCfg スレーブ設定 ■サンプリング/ジェネレーティング条件設定関数 DioDmSetStartTrg スタート条件設定 DioDmSetStartPattern パターン一致条件設定 DioDmSetClockTrg クロック条件設定 DioDmSetInternalClock 内部クロック設定 DioDmSetStopTrg ストップ条件設定 DioDmSetStopNum 個数停止設定 ■リセット関数 DioDmReset FIFO内容リセット ■バッファ設定関数 DioDmSetBuff バッファ設定 ■スタート/ストップ関数 DioDmStart サンプリング/ジェネレーティングスタート DioDmStop サンプリング/ジェネレーティングストップ ■ステータス関数 DioDmGetStatus ステータス取得 DioDmGetCount カウント数取得 ■メッセージ通知関数 DioDmSetStopEvent 転送完了イベント通知 DioDmSetCountEvent 転送個数イベント通知 ■汎用入出力関数 DioDmInpDWord 汎用入力 DioDmOutDWord 汎用出力 ■割り込み関数 142 DioEvent 割り込みイベントの設定 DioIntSence 割り込みコントロールポートのステータスの取得 DioIntEnable 割り込みイベント信号入力の禁止/許可の設定 DioEventEx 割り込みイベントの設定(拡張版) DioIntEnableEx 割り込みイベント信号入力の禁止/許可の設定 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 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 : 使用するグループのデバイスハンドルを取得します。 他のDioDmXxxx関数を実行する時には、このデバイスハン ドルを指定します。 DrvNo : オープンするドライバ番号を指定してください。 指定可能な範囲 : DrvNo=5 設定範囲外である場合、001hを返します。 GrpNo : 使用するグループ番号を指定してください。 指定可能な範囲 : 1 ≦ GrpNo ≦ 16 設定範囲外である場合、戻り値003hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 1度初期化処理(DioOpen)を行った後に、再度初期化処理(DioOpen)を行 う場合は、1度終了処理(DioClose)を行ってから初期化処理(DioOpen)を 実行するようにしてください。 ② プログラムの終了には、終了処理(DioClose)を実行してください。終了 処理(DioClose)を実行せずにプログラムを終了した場合、その後のプロ グラムが正常に動作しないことがあります。 ③ この関数を実行すると、ボードの初期化を行います。 ④ 1つのグループ(ボード)に対して1プロセスしかアクセスできません。 API-PAC(W32)RM/DIO 143 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) API-TOOLコンフィグレーションプログラムでグループ番号1に設定されたボード を使用開始する場合 ●C言語用 HANDLE hDrv; WORD GrpNo, DrvNo; DWORD dwRet; DrvNo = 5; GrpNo = 1; dwRet = DioOpen(&hDrv, DrvNp, GrpNo); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim DrvNo As Integer Dim GrpNo As Integer Dim dwRet As Long DrvNo = 5 GrpNo = 1 dwRet = DioOpen(hDrv, DrvNo, GrpNo) ErrChk(dwRet) ' エラーチェック関数 144 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioOpenEx ■機能 使用するボード用のデバイスドライバをオープンし、ドライバの各関数を 使用可能にします。(デバイス名) ■書式 (C言語用) HANDLE hDrv; char *DeviceName; DWORD dwRet; dwRet = DioOpenEx(DeviceName, &hDrv); (Visual Basic用) Dim hDrv As Long Dim DeviceName As String Dim dwRet As Long dwRet = DioOpenEx(DeviceName, hDrv) ■引数 hDrv ■補足 : 使用するグループのデバイスハンドルを取得します。 他のDioXxxx関数を実行する時には、このデバイスハンド ルを指定します。 DeviceName : オープンするデバイス名 を指定します。デバイス名 は API-TOOLコンフィグレーションプログラムで設定します。 dwRet 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) : ① プログラムの終了には、終了処理(DioClose)を実行してください。終了 処理(DioClose)を実行せずにプログラムを終了した場合、その後のプロ グラムが正常に動作しないことがあります。 ② 1つのグループ(ボード)に対して1プロセスしかアクセスすることが できません。 ③ DioOpenExは1つのプログラム中で複数回実行できます。プログラム 終了時には、DioOpenExを実行した回数だけDioCloseを実行する必要 があります。 ■設定例 例) 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) ErrChk(dwRet) API-PAC(W32)RM/DIO ' エラーチェック関数 145 第3章 PIO-32DM(PCI)を使用する場合 DioClose ■機能 指定したデバイスの終了処理を行います。 ■書式 (C言語用) HANDLE hDrv; DWORD dwRet; dwRet = DioClose(hDrv); (Visual Basic用) Dim hDrv As Long Dim dwRet As Long dwRet = DioClose(hDrv) ■引数 ■補足 hDrv : 終了するデバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 終了処理実行後は、指定グループに対して、(DioOpen以外の)ドライバ の各関数は実行できません。 ■設定例 例) 使用可能(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) ErrChk(dwRet) 146 ' エラーチェック関数 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetDirection ■機能 指定したデバイスの入出力方向を設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Directoin; DWORD dwRet; dwRet = DioDmSetDirection(hDrv, Direction); (Visual Basic用) Dim hDrv As Long Dim Direction As Long Dim dwRet As Long dwRet = DioDmSetDirection(hDrv, Direction) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Direction : 入出力方向を指定してください。 PI_32 : 32点入力 PO_32 : 32点出力 PIO_1616 : 16点入力、16点出力 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① デフォルトは、PI-32です。 ② アプリケーションの動作を一定にするために、この関数は必ず使用し てください。 ■設定例 例) 指定したデバイスを32点入力にする場合 ●C言語用 HANDLE hDrv; DWORD Directoin; DWORD dwRet; Direction = PI_32; dwRet = DioDmSetDirection(hDrv, Direction); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim Direction As Long Dim dwRet As Long Direction = PI_32; dwRet = DioDmSetDirection(hDrv, Direction) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 147 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetStandAlone ■機能 指定したデバイスをスタンドアロンに設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD dwRet; dwRet = DioDmSetStandAlone(hDrv); (Visual Basic用) Dim hDrv As Long Dim dwRet As Long dwRet = DioDmSetStandAlone(hDrv) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① スタンドアロン/マスタ/スレーブのうち、デフォルトはスタンドアロ ンです。 ② アプリケーションの動作を一定にするために、スタンドアロン/マスタ /スレーブ設定のうち1つを必ず実行してください。 ■設定例 例) 指定したデバイスをスタンドアロンにする場合 ●C言語用 HANDLE hDrv; DWORD dwRet; dwRet = DioDmSetStandAlone(hDrv); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long im dwRet As Long dwRet = DioDmSetStandAlone(hDrv) ErrChk(dwRet) 148 ' エラーチェック関数 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetSetMasterCfg ■機能 指定したデバイスをマスタに設定します。また、同期信号として出力する 内容を設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD ExtSig1; DWORD ExtSig2; DWORD ExtSig3; DWORD MasterHalt; DWORD SlaveHalt; DWORD dwRet; dwRet = DioDmSetSetMasterCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt); (Visual Basic用) Dim hDrv As Long Dim ExtSig1 As Long Dim ExtSig2 As Long Dim ExtSig3 As Long Dim MasterHalt As Long Dim SlaveHalt As Long Dim dwRet As Long dwRet = DioDmSetSetMasterCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt) ■引数 hDrv : ExtSig1 : ExtSig2 : ExtSig3 : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 ExtSig1からExtSig3までの信号線に出力する信号を指定し てください。 0 : 未使用 DIODM_EXT_START_SOFT_IN : ソフトウェアスタート(パターン入力) DIODM_EXT_STOP_SOFT_IN : ソフトウェアストップ(パターン入力) DIODM_EXT_CLOCK_IN : 内部クロック(パターン入力) DIODM_EXT_EXT_TRG_IN : 外部クロック(パターン入力) DIODM_EXT_START_EXT_RISE_IN : 外部スタートトリガ立上り (パターン入力) DIODM_EXT_START_EXT_FALL_IN : 外部スタートトリガ立下り (パターン入力) DIODM_EXT_START_PATTERN_IN : パターン一致(パターン入力) API-PAC(W32)RM/DIO 149 第3章 PIO-32DM(PCI)を使用する場合 DIODM_EXT_STOP_EXT_RISE_IN : 外部スタートトリガ立上り (パターン入力) DIODM_EXT_STOP_EXT_FALL_IN : 外部スタートトリガ立下り (パターン入力) DIODM_EXT_CLOCK_ERROR_IN : クロックエラー(パターン入力) DIODM_EXT_HANDSHAKE_IN : ハンドシェイク(パターン入力) DIODM_EXT_START_SOFT_OUT : ソフトウェアスタート(パターン出力) DIODM_EXT_STOP_SOFT_OUT : ソフトウェアストップ(パターン出力) DIODM_EXT_CLOCK_OUT : 内部クロック(パターン出力) DIODM_EXT_EXT_TRG_OUT : 外部クロック(パターン出力) DIODM_EXT_START_EXT_RISE_OUT : 外部スタートトリガ立上り (パターン出力) DIODM_EXT_START_EXT_FALL_OUT : 外部スタートトリガ立下り (パターン出力) DIODM_EXT_STOP_EXT_RISE_OUT : 外部スタートトリガ立上り (パターン出力) DIODM_EXT_STOP_EXT_FALL_OUT : 外部スタートトリガ立下り (パターン出力) DIODM_EXT_CLOCK_ERROR_OUT : クロックエラー(パターン出力) DIODM_EXT_HANDSHAKE_OUT : ハンドシェイク(パターン出力) ■補足 MasterHalt : 1 : 固定(有効) SlaveHalt : 1 : 固定(有効) dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① スタンドアロン/マスタ/スレーブのうち、デフォルトはスタンドアロ ンです。 ② アプリケーションの動作を一定にするために、スタンドアロン/マスタ /スレーブ設定のうち1つを必ず実行してください。 ③ マスタとは、同期制御コネクタ(SCコネクタ)を使用して複数枚のボー ドを同期して動作させる場合の同期信号を出力する側のボードを指し ます。詳しくは、用語説明の同期制御コネクタ(SCコネクタについて) を参照ください。 150 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 指定したデバイスをマスタに設定する場合。 ExtSig2をスタート信号、ExtSig1をクロック、ExtSig3をストップ信号として、各条 件を入力のソフトウェアスタート、内部クロック、ソフトウェアストップに設定 します。 ●C言語用 HANDLE hDrv; DWORD ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt; DWORD dwRet; ExtSig1 = DIODM_EXT_CLOCK_IN; ExtSig2 = DIODM_EXT_START_SOFT_IN; ExtSig3 = DIODM_EXT_STOP_SOFT_IN; MasterHalt = 1; SlaveHalt = 1; dwRet = DioDmSetSetMasterCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim Dim Dim Dim dwRet hDrv As Long ExtSig1 As Long ExtSig2 As Long ExtSig3 As Long MasterHalt SlaveHalt As Long As Long As Long ExtSig1 = DIODM_EXT_CLOCK_IN ExtSig2 = DIODM_EXT_START_SOFT_IN ExtSig3 = DIODM_EXT_STOP_SOFT_IN MasterHalt = 1 SlaveHalt = 1 dwRet = DioDmSetSetMasterCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 151 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetSlaveCfg ■機能 指定したデバイスをスレーブに設定します。また、同期制御信号を使用す るかどうかを設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD ExtSig1; DWORD ExtSig2; DWORD ExtSig3; DWORD MasterHalt; DWORD SlaveHalt; DWORD dwRet; dwRet = DioDmSetSlaveCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt); (Visual Basic用) Dim hDrv As Long Dim ExtSig1 As Long Dim ExtSig3 As Long Dim MasterHalt As Long Dim SlaveHalt As Long Dim dwRet As Long dwRet = DioDmSetSlaveCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt) ■引数 hDrv : ExtSig1 : ExtSig2 : ExtSig3 : MasterHalt : ■補足 デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 同期信号線を有効にするかどうかを指定してください。 0 : 無効 1 : 有効 1 : 固定(有効) : 固定(有効) SlaveHalt : 1 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① スタンドアロン/マスタ/スレーブのうち、デフォルトはスタンドアロ ンです。 ② アプリケーションの動作を一定にするために、スタンドアロン/マスタ /スレーブ設定のうち1つを必ず実行してください。 ③ スレーブとは、同期制御コネクタ(SCコネクタ)を使用して複数枚のボ ードを同期して動作させる場合の同期信号を受ける側のボードを指し ます。詳しくは、用語説明の同期制御コネクタ(SCコネクタについて) を参照ください。 152 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 指定したデバイスをスレーブにする場合 ExtSig1、ExtSig2、ExtSig3のすべてを使用可能に設定します。 ●C言語用 HANDLE hDrv; DWORD ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt; DWORD dwRet; ExtSig1 = 1; ExtSig2 = 1; ExtSig3 = 1; MasterHalt = 1; SlaveHalt = 1; dwRet = DioDmSetSlaveCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim Dim Dim Dim dwRet hDrv As Long ExtSig1 As Long ExtSig2 As Long ExtSig3 As Long MasterHalt SlaveHalt As Long As Long As Long ExtSig1 = 1 ExtSig2 = 1 ExtSig3 = 1 MasterHalt = 1 SlaveHalt = 1 dwRet = DioDmSetSlaveCfg(hDrv, ExtSig1, ExtSig2, ExtSig3, MasterHalt, SlaveHalt) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 153 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetStartTrg ■機能 サンプリング、ジェネレーティングのスタート条件を設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD Start; DWORD dwRet; dwRet = DioDmSetStartTrg(hDrv, Dir, Start); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim Start As Long Dim dwRet As Long dwRet = DioDmSetStartTrg(hDrv, Dir, Start) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を設定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Start : スタート条件を設定してください。 DIODM_START_SOFT : ソフトウェアスタート DIODM_START_EXT_RISE : 外部トリガ立ち上がり DIODM_START_EXT_FALL : 外部トリガ立ち下り DIODM_START_PATTERN : パターン一致(入力のみ) DIODM_START_EXTSIG_1 : SCコネクタEXTSIG1 DIODM_START_EXTSIG_2 : SCコネクタEXTSIG2 DIODM_START_EXTSIG_3 : SCコネクタEXTSIG3 EXTSIG1∼EXTSIG3はスレーブ時のみ有効です。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① デフォルトはソフトウェアスタートです。 ② アプリケーションの動作を一定にするために、スタート条件は必ず設 定してください。 ③ スタート条件にパターン一致を指定した場合、DioDmSetStartPattern関 数で比較パターンを設定してください。 154 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 入力をソフトウェアスタートに設定する場合 ●C言語用 HANDLE hDrv; DWORD Dir; DWORD Start; DWORD dwRet; Dir = DIODM_DIR_IN; Start = DIODM_START_SOFT; dwRet = DioDmSetStartTrg(hDrv, Dir, Start); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv Dim Dir Dim Start Dim dwRet As Long As Long As Long As Long Dir = DIODM_DIR_IN Start = DIODM_START_SOFT dwRet = DioDmSetStartTrg(hDrv, Dir, Start) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 155 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetStartPattern ■機能 スタート条件のパターン一致条件を設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Ptn; DWORD Mask; DWORD dwRet; dwRet = DioDmSetStartPattern(hDrv, Ptn, Mask); (Visual Basic用) Dim hDrv As Long Dim Ptn As Long Dim Mask As Long Dim dwRet As Long dwRet = DioDmSetStartPattern(hDrv, Ptn, Mask) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Ptn : 比較するビットパターンを設定します。 Mask : パターンに対する有効ビットをマスク指定します。 (無効 : Bit=0, 有効 : Bit=1) dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① DioDmSetStartTrg関数でスタート条件にDIODM_START_PATTERNを 指定した場合に有効になります。 ② この関数は、入力時のみ有効です。 ■設定例 例) 0から7ビットが55hであるときをスタート条件に設定する場合 ●C言語用 HANDLE hDrv; DWORD Ptn; DWORD Mask; DWORD dwRet; Ptn = 0x00000055; Mask = 0x000000ff; dwRet = DioDmSetStartPattern(hDrv, Ptn, Mask); ErrChk(dwRet); 156 /* エラーチェック関数 */ API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ●Visual Basic用 Dim hDrv As Long Dim Ptn As Long Dim Mask As Long Dim dwRet As Long Ptn = &H55 Mask = &HFF dwRet = DioDmSetStartPattern(hDrv, Ptn, Mask) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 157 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetClockTrg ■機能 サンプリング/ジェネレーティングのクロック条件を設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD Clock; DWORD dwRet; dwRet = DioDmSetClockTrg(hDrv, Dir, Clock); (Visual Basic用) Dim hDrv Dim Dir Dim Clock Dim dwRet As Long As Long As Long As Long dwRet = DioDmSetClockTrg(hDrv, Dir, Clock) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を設定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Clock : クロック条件を設定してください。 DIODM_CLK_CLOCK : 内部クロック(タイマー) DIODM_CLK_EXT_TRG : 外部トリガ DIODM_CLK_HANDSHAKE : ハンドシェーク DIODM_CLK_EXTSIG_1 : SCコネクタEXTSIG1 DIODM_CLK_EXTSIG_2 : SCコネクタEXTSIG2 DIODM_CLK_EXTSIG_3 : SCコネクタEXTSIG3 EXTSIG1∼EXTSIG3はスレーブ時のみ有効です。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① デフォルトは内部クロックです。 ② アプリケーションの動作を一定にするために、クロック条件は必ず設 定してください。 ■設定例 例) 入力クロック条件を内部クロックに設定する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD Dir; DWORD Clock; Dir = DIODM_DIR_IN; Clock = DIODM_CLK_CLOCK; dwRet = DioDmSetClockTrg(hDrv, Dir, Clock); ErrChk(dwRet); /* エラーチェック関数 */ 158 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ●Visual Basic用 Dim hDrv Dim Dir Dim Clock Dim dwRet As Long As Long As Long As Long Dir = DIODM_DIR_IN; Clock = DIODM_CLK_CLOCK; dwRet = DioDmSetClockTrg(hDrv, Dir, Clock) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 159 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetInternalClock ■機能 内部クロック使用時のクロック値の設定を行います。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD Clock; DWORD Unit; DWORD dwRet; dwRet = DioDmSetInternalClock(hDrv, Dir, Clock, Unit); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim Clock As Long Dim Unit As Long Dim dwRet As Long dwRet = DioDmSetInternalClock(hDrv, Dir, Clock, Unit) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を設定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Clock : クロック値を指定してください。 クロック値はクロック値単位との組み合わせで以下の範囲 で設定できます。 設定可能範囲: 50ns≦Clock≦107sec(25ns単位) DWORD Unit; クロック値単位 DIODM_TIM_UNIT_S DIODM_TIM_UNIT_MS DIODM_TIM_UNIT_US DIODM_TIM_UNIT_NS dwRet ■補足 : : : : : 1秒単位 1ms単位 1μs単位 1ns単位 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① デフォルトは1μsです。 ② アプリケーションの動作を一定にするために、クロック値は必ず設定 してください。 ③ ns単位で設定した場合の25ns単位に対する端数は、以下の式によって、 決定されます。 SetClock = (Clock/25) 160 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 入力時のクロックを1MHz(1μs)に設定する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD Dir; DWORD Clock; DWORD Unit; Dir = DIODM_DIR_IN; Clock = 1; Unit = DIODM_TIM_UNIT_US; dwRet = DioDmSetInternalClock(hDrv, Dir, Clock, Unit); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim Dim hDrv Dir Clock Unit dwRet As Long As Long As Long As Long As Long Dir = DIODM_DIR_IN Clock = 1 Unit = DIODM_TIM_UNIT_US dwRet = DioDmSetInternalClock(hDrv, Dir, Clock, Unit) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 161 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetStopTrg ■機能 サンプリング/ジェネレーティングのストップ条件設定を行います。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD Stop; DWORD dwRet; dwRet = DioDmSetStopTrg(hDrv, Dir, Stop); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim Stop As Long Dim dwRet As Long dwRet = DioDmSetStopTrg(hDrv, Dir, Stop) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を設定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Stop : ストップ条件を設定してください。 DIODM_STOP_SOFT : ソフトウェアストップ DIODM_STOP_EXT_RISE : 外部トリガ立ち上がり DIODM_STOP_EXT_FALL : 外部トリガ立ち下り DIODM_STOP_NUM : 指定個数で転送完了 DIODM_STOP_EXTSIG_1 : SCコネクタEXTSIG1 DIODM_STOP_EXTSIG_2 : SCコネクタEXTSIG2 DIODM_STOP_EXTSIG_3 : SCコネクタEXTSIG3 EXTSIG1∼EXTSIG3はスレーブ時のみ有効です。 dwRet : 終了情報(戻り値) 正常終了 : エラー終了 : 0 0以外(詳細は「戻り値一覧」参照) ① デフォルトはソフトウェアストップです。 ② アプリケーションの動作を一定にするために、ストップ条件は必ず設 定してください。 ③ ソフトウェアストップ(DioDmStop)は、どのストップ条件を設定した場 合でも有効です。 162 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 入力のストップ条件をソフトウェアストップにする場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD Dir; DWORD Stop; Dir = DIODM_DIR_IN; Stop = DIODM_STOP_SOFT; dwRet = DioDmSetStopTrg(hDrv, Dir, Stop); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim hDrv Dir Stop dwRet As Long As Long As Long As Long Dir = DIODM_DIR_IN Stop = DIODM_STOP_SOFT dwRet = DioDmSetStopTrg(hDrv, Dir, Stop) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 163 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetStopNum ■機能 ストップ条件として、停止個数を設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD StopNum; DWORD dwRet; dwRet = DioDmSetStopNum(hDrv, Dir, StopNum); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim StopNum As Long Dim dwRet As Long dwRet = DioDmSetStopNum(hDrv, Dir, StopNum) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を設定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 StopNum : 停止個数を指定してください。 設定範囲:1 ≦ StopNum ≦ 16777215(24Bit) dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① デフォルトは1000です。 ② ストップ条件として個数停止を指定した場合は必ず設定してください。 ■設定例 例) 個数停止条件を10000個にする場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD Dir; DWORD StopNum; Dir = DIODM_DIR_IN; StopNum = 10000; dwRet = DioDmSetStopNum(hDrv, Dir, StopNum); ErrChk(dwRet); /* エラーチェック関数 */ 164 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ●Visual Basic用 Dim hDrv As Long Dim Dir As Long Dim StopNum As Long Dim dwRet As Long Dir = DIODM_DIR_IN StopNum = 10000 dwRet = DioDmSetStopNum(hDrv, Dir, StopNum) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 165 第3章 PIO-32DM(PCI)を使用する場合 DioDmReset ■機能 FIFOのリセットを行います。 ■書式 (C言語用) HANDLE hDrv; DWORD Reset; DWORD dwRet; dwRet = DioDmReset(hDrv, Reset); (Visual Basic用) Dim hDrv As Long Dim Reset As Long Dim dwRet As Long dwRet = DioDmReset(hDrv, Reset) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Reset : リセットする内容を指定してください。 リセット内容は以下のビットの論理和で指定してください。 DIODM_RESET_FIFO_IN :入力のFIFOをリセットします。 DIODM_RESET_FIFO_OUT :出力のFIFOをリセットします。 dwRet : 終了情報(戻り値) 正常終了 : エラー終了 : 0 0以外(詳細は「戻り値一覧」参照) ① バスマスタ転送を行った後の状態として、ボード内のFIFOにデータが 残る場合があります。 FIFOにデータが残っていると、予定したデータが入出力できない可能 性がありますので、転送開始前にはFIFOをリセットしてください。 ■設定例 例)入力FIFOのリセットを行う場合 ●C言語用 HANDLE hDrv; DWORD Reset; DWORD dwRet; Reset = DIODM_RESET_FIFO_IN; dwRet = DioDmReset(hDrv, Reset); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim Reset As Long Dim dwRet As Long Reset = DIODM_RESET_FIFO_IN dwRet = DioDmReset(hDrv, Reset) ErrChk(dwRet) 166 ' エラーチェック関数 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetBuff ■機能 サンプリング/ジェネレーティングに使用するデータバッファの設定を行 います。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD *Buff; DWORD Len; DWORD IsRing; DWORD dwRet; dwRet = DioDmSetBuff(hDrv, Dir, Buff, Len, IsRing); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim Buff As Long Dim Len As Long Dim IsRing As Long Dim dwRet As Long dwRet = DioDmSetBuff(hDrv, Dir, Buff, Len, IsRing) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を指定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Buff : バッファの先頭アドレスを指定してください。 Len : データ個数を指定してください。 設定可能範囲:(データ個数×データ単位≦64MByte) IsRing : バッファを繰り返して使用するかどうかを設定してくださ い。 DIODM_WRITE_ONCE : 1回転送 DIODM_WRITE_RING : 無限回転送 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① バッファ設定は、転送開始前に毎回必ず実行してください。 ② IsRingの指定(1回転送、無限回転送)の指定については、「一般的な転 送形式について」を参照してください。 ③ バッファサイズは、最大64Mbyteまで設定できます。ただし、バッフ ァ領域の物理アドレス空間へのマッピングの状態によっては、64Mbyte の領域を設定できない場合があります。 API-PAC(W32)RM/DIO 167 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 32点入力の場合のバッファ指定 ●C言語用 HANDLE hDrv; DWORD Dir; DWORD Buff[1000]; DWORD Len; DWORD IsRing; DWORD dwRet; Dir = DIODM_DIR_IN; Len = 1000; IsRing = DIODM_WRITE_ONCE; dwRet = DioDmSetBuff(hDrv, Dir, (void *)&Buff[0], Len, IsRing); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim Dim Dim hDrv Dir Buff(1000) Len IsRing dwRet As Long As Long As Long As Long As Long As Long Dir = DIODM_DIR_IN Len = 1000 IsRing = DIODM_WRITE_ONCE dwRet = DioDmSetBuff(hDrv, Dir, Buff(0), Len, IsRing) ErrChk(dwRet) ' エラーチェック関数 168 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmStart ■機能 サンプリング/ジェネレーティングを開始します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD dwRet; dwRet = DioDmStart(hDrv, Dir); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim dwRet As Long dwRet = DioDmStart(hDrv, Dir) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を以下の論理和で指定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数により、スタート条件がソフトウェアスタートの場合は、た だちに転送され、他の条件の場合はスタート条件が成立した時点で転 送がスタートします。 ② 転送スタートは、入力と出力を同時に指定できます。 ■設定例 例) 入力を開始にする場合 ●C言語用 HANDLE hDrv; DWORD Dir; DWORD dwRet; Dir = DIODM_DIR_IN; wRet = DioDmStart(hDrv, Dir); ErrChk(dwRet); ●Visual Basic用 Dim Dim Dim hDrv Dir dwRet As Long As Long As Long Dir = DIODM_DIR_IN dwRet = DioDmStart(hDrv, Dir) ErrChk(dwRet) API-PAC(W32)RM/DIO /* エラーチェック関数 */ ' エラーチェック関数 169 第3章 PIO-32DM(PCI)を使用する場合 DioDmStop ■機能 サンプリング/ジェネレーティングを停止します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD dwRet; dwRet = DioDmStop(hDrv, Dir); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim dwRet As Long dwRet = DioDmStop(hDrv, Dir) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を以下の論理和で指定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ■補足 ① この関数により、ストップ条件が成立していなくても、強制的に転送をストップ します(ソフトウェアストップ)。 ② 転送ストップは、入力と出力を同時に指定できます。 ■設定例 例) 入力を停止する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD Dir; Dir = DIODM_DIR_IN; dwRet = DioDmStop(hDrv, Dir); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim dwRet As Long Dir = DIODM_DIR_IN dwRet = DioDmStop(hDrv, Dir) ErrChk(dwRet) 170 ' エラーチェック関数 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmGetStatus ■機能 転送ステータスの取得を行います。 ■書式 (C言語用) HANDLE hDrv; DWORD Status; DWORD Err; DWORD dwRet; dwRet = DioDmGetStatus(hDrv, Dir, &Status, &Err); (Visual Basic用) Dim hDrv As Long Dim Status As Long Dim Err As Long Dim dwRet As Long dwRet = DioDmGetStatus(hDrv, Dir, Status, Err) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を指定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Status : ステータス情報(ステータス、警告)を返します。 ステータスの詳細については、ステータス一覧を参照くだ さい。 Err : エラー情報を返します。 エラー情報の詳細については、エラー一覧を参照ください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 各ステータス、エラーは、入力/出力ごと、ボードごとに存在します。 ② 転送完了後は、必ずステータスをチェックするようにしてください。 ■設定例 例) 入力時のステータスをチェックする場合 ●C言語用 HANDLE hDrv; DWORD Dir; DWORD Status; DWORD Err; DWORD dwRet; Dir = DIODM_DIR_IN; dwRet = DioDmGetStatus(hDrv, Dir, &Status, &Err); ErrChk(dwRet); /* エラーチェック関数 */ API-PAC(W32)RM/DIO 171 第3章 PIO-32DM(PCI)を使用する場合 ●Visual Basic用 Dim Dim Dim Dim Dim hDrv Dir Status Err dwRet As Long As Long As Long As Long As Long Dir = DIODM_DIR_IN dwRet = DioDmGetStatus(hDrv, Dir, Status, Err) ErrChk(dwRet) ' エラーチェック関数 172 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmGetCount ■機能 転送カウント数を取得します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD Count; DWORD Carry; DWORD dwRet; dwRet = DioDmGetCount(hDrv, Dir, &Count, &Carry); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim Count As Long Dim Carry As Long Dim dwRet As Long dwRet = DioDmGetCount(hDrv, Dir, Count, Carry) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を指定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 Count : カウント数を格納する変数のアドレスを指定してください。 Carry : キャリーカウントを格納する変数のアドレスを指定してく ださい。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① CountとCarryを合わせると、64ビットのカウント数を返します。 ② Count、Carryともにunsignedのため、VisualBasicの場合、Longの最大値 までが正確なカウント数になります。 ■設定例 例) 入力のカウント数を取得する場合 ●C言語用 HANDLE hDrv; DWORD dwRet; DWORD Dir; DWORD Count; DWORD Carry; Dir = DIODM_DIR_IN; dwRet = DioDmGetCount(hDrv, Dir, &Count, &Carry); ErrChk(dwRet); /* エラーチェック関数 */ API-PAC(W32)RM/DIO 173 第3章 PIO-32DM(PCI)を使用する場合 ●Visual Basic用 Dim Dim Dim Dim Dim hDrv Dir Count Carry dwRet As Long As Long As Long As Long As Long Dir = DIODM_DIR_IN dwRet = DioDmGetCount(hDrv, Dir, Count, Carry) ErrChk(dwRet) ' エラーチェック関数 174 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetStopEvent ■機能 転送完了のメッセージを通知するように設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; HANDLE hWnd; DWORD dwMsg; DWORD dwRet; dwRet = DioDmSetStopEvent(hDrv, Dir, hWnd, dwMsg); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim hWnd As Long Dim dwMsg As Long Dim dwRet As Long dwRet = DioDmSetStopEvent(hDrv, Dir, hWnd, dwMsg) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を指定してください。 DIODM_DIR_IN : 入力 DIODM_DIR_OUT : 出力 hWnd : 転送完了メッセージを受け取るのウィンドウのハンドルを 指定してください。 dwMsg : 転送完了メッセージで使用する識別メッセージ番号(ユー ザー指定の識別メッセージ番号)を指定してください。 指定可能な範囲 : 400h ≦ dwMsg ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数を使用すると、サンプリング/ジェネレーティングの完了時に ウィンドウメッセージで完了を通知させることができます。 ② メッセージの受け取り方については、VCではメッセージ番号に対応し たハンドラルーチンをメッセージマップに記述することで、処理が可 能になります。VBでは、MESSAGEECHOのOCXでハンドラを記述し ます。 詳しくは、サンプルプログラムのソースコードを参照してください。 API-PAC(W32)RM/DIO 175 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 入力の転送完了を470Hのメッセージで通知する場合 ●C言語用 HANDLE hDrv; DWORD Dir; HANDLE hWnd; DWORD dwMsg; DWORD dwRet; Dir = DIODM_DIR_IN; dwMsg = 0x470; dwRet = DioDmSetStopEvent(hDrv, Dir, hWnd, dwMsg); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim hDrv Dir dwRet As Long As Long As Long Dir = DIODM_DIR_IN MsgEcho1.Message = &H470 dwRet = DioDmSetStopEvent(hDrv, Dir, MsgEcho1.hWnd, MsgEcho1.Message) ErrChk(dwRet) ' エラーチェック関数 176 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmSetCountEvent ■機能 指定個数転送完了のメッセージを通知するように設定します。 ■書式 (C言語用) HANDLE hDrv; DWORD Dir; DWORD Count; HANDLE hWnd; DWORD dwMsg; DWORD dwRet; dwRet = DioDmSetCountEvent(hDrv, Dir, Count, hWnd, dwMsg); (Visual Basic用) Dim hDrv As Long Dim Dir As Long Dim Count As Long Dim hWnd As Long Dim dwMsg As Long Dim dwRet As Long dwRet = DioDmSetCountEvent(hDrv, Dir, Count, hWnd, dwMsg) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 Dir : 転送方向を指定してください。 DIODM_DIR_IN :入力 DIODM_DIR_OUT :出力 Count : データ転送個数を何個ごとにメッセージを通知するかを設 定してください。 設定可能範囲: 1≦Count≦16777215(24Bit) hWnd : 転送完了メッセージを受け取るのウィンドウのハンドルを 指定してください。 dwMsg : 転送完了メッセージで使用する識別メッセージ番号(ユー ザー指定の識別メッセージ番号)を指定してください。 指定可能な範囲 : 400h ≦ dwMsg ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数を使用すると、サンプリング/ジェネレーティングの途中にウィ ンドウメッセージで指定個数の転送完了を通知させることができます。 ② メッセージの受け取り方については、VCではメッセージ番号に対応し たハンドラルーチンをメッセージマップに記述することで、処理が可 能になります。VBでは、MESSAGEECHOのOCXでハンドラを記述し ます。 詳しくは、サンプルプログラムのソースコードを参照してください。 ③ 入出力の周期に対して、Countで指定する個数が小さすぎた場合、速度 的に速すぎてメッセージを通知できない場合があります。 API-PAC(W32)RM/DIO 177 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 入力値1000個ごとにを470Hのメッセージで通知する場合 ●C言語用 HANDLE hDrv; DWORD Dir; DWORD Count; HANDLE hWnd; DWORD dwMsg; DWORD dwRet; Dir = DIODM_DIR_IN Count = 1000; dwMsg = 0x470 dwRet = DioDmSetCountEvent(hDrv, Dir, Count, hWnd, dwMsg); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim hDrv Dir Count dwRet As Long As Long As Long As Long Dir = DIODM_DIR_IN Count = 1000 MsgEcho1.Message = &H470 dwRet = DioDmSetCountEvent(hDrv, Dir, MsgEcho1.hWnd, MsgEcho1.Message) ErrChk(dwRet) ' エラーチェック関数 178 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioDmInpDWord ■機能 汎用入力機能を実行します。 ■書式 (C言語用) HANDLE hDrv; WORD wPort; DWORD dwData; DWORD dwRet; dwRet = DioDmInpDWord(hDrv, wPort, &dwData); (Visual Basic用) Dim hDrv As Long Dim wPort As Integer Dim dwData As Long Dim dwRet As Long dwRet = DioDmInpDWord(hDrv, wPort, dwData) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 wPort : 0を指定してください。(拡張用) dwData : データを格納する変数のアドレスを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 汎用入力機能は、バスマスタ転送を行っていないときに限り実行でき ます。 ■設定例 例) 汎用入力を行う場合 ●C言語用 HANDLE hDrv; DWORD dwData; DWORD dwRet; dwRet = DioDmInpDWord(hDrv, 0, &dwData); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim hDrv dwData dwRet As Long As Long As Long dwRet = DioDmInpDWord(hDrv, 0, dwData) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 179 第3章 PIO-32DM(PCI)を使用する場合 DioDmOutDWord ■機能 汎用出力機能を実行します。 ■書式 (C言語用) HANDLE hDrv; WORD wPort; DWORD dwData; DWORD dwRet; dwRet = DioDmOutDWord(hDrv, wPort, dwData); (Visual Basic用) Dim hDrv As Long Dim wPort As Integer Dim dwData As Long Dim dwRet As Long dwRet = DioDmOutDWord(hDrv, wPort, dwData) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 wPort : 0を指定してください。(拡張用) dwData : 出力するデータを指定してください。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① 汎用出力機能は、バスマスタ転送を行っていないときに限り実行でき ます。 ■設定例 例) 汎用出力を行い、12345678hを出力する場合 ●C言語用 HANDLE hDrv; DWORD dwData; DWORD dwRet; dwData = 0x12345678; dwRet = DioDmOutDWord(hDrv, 0, dwData); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim hDrv dwData dwRet As Long As Long As Long dwData = &H12345678 dwRet = DioDmOutDWord(hDrv, 0, dwData) ErrChk(dwRet) ' エラーチェック関数 180 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioEvent ■機能 指定したボードの割り込みを利用して、バックグラウンドからアプリケー ション側に割り込みイベントメッセージを発生します。 ■書式 (C言語用) HANDLE hDrv; WORD SigLog; WORD SigCh; HANDLE hWnd; WORD MsgNo; DWORD dwRet; dwRet = DioEvent(hDrv, SigLog, SigCh, hWnd, DMsgNo); (Visual Basic用) Dim hDrv As Long Dim SigLog As Integer Dim SigCh As Integer Dim hWnd As Long Dim MsgNo As Integer Dim dwRet As Long dwRet = DioEvent(hDrv, SigLog, SigCh, hWnd, DMsgNo) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 SigLog : 0固定です。 設定範囲外である場合、戻り値622hを返します。 SigCh : 割り込み信号端子の入力を禁止するチャネルに"1"を指定 してください。 指定可能な範囲 : 0 ≦ SigCh ≦ Fh 設定範囲外である場合、戻り値623hを返します。 MSB LSB 0 ■補足 0 0 0 DIOA03 DIOA02 DIOA01 DIOA00 hWnd : 割り込みイベントメッセージを受け取るウィンドウのハン ドルを指定してください。 MsgNo : 割り込みイベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。 指定可能な範囲 : 400h ≦ MsgNo ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、実行した後すぐに戻り、割り込み信号がただちに有効に なります。 ② バスマスタ転送機能が実行されている間は、割り込みはマスクされま す。 ③ この関数は新バージョンの関数DioEventExと併用することはできませ ん。 API-PAC(W32)RM/DIO 181 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 指定したボードのハードウェア割り込み機能を利用して、バックグランドからア プリケーション側に割り込みイベント信号の発生を行う場合 ●C言語用 HANDLE hDrv; HANDLE hWnd; WORD DMsgNo; WORD SigLog; WORD SigCh; DWORD dwRet; DMsgNo = 0x470; SigLog = 0; /* 0を指定 */ SigCh = 0; /* マスクを指定 */ dwRet = DioEvent(hDrv, SigLog, SigCh, hWnd, DMsgNo); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim hDrv As Long Dim SigLog As Integer Dim SigCh As Integer Dim dwRet As Long MsgEcho1.Message = &H470 SigLog = 0 ' 0を指定 SigCh = 0 ' マスクを指定 dwRet = DioEvent(hDrv, SigLog, SigCh, MsgEcho1.hWnd, MsgEcho1.Message) ErrChk(dwRet) ' エラーチェック関数 182 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioIntSence ■機能 指定したボードの割り込みコントロールポートのステータスを取得します。 ■書式 (C言語用) HANDLE hDrv; WORD IntSence; DWORD dwRet; dwRet = DioIntSence(hDrv, &IntSence); (Visual Basic用) Dim hDrv As Long Dim IntSence As Integer Dim dwRet As Long dwRet = DioIntSence(hDrv, IntSence) ■引数 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 IntSence : 割り込みコントロールポートのステータスビット情報が取 得されます。 ステータス : 0 : 割り込みが発生していないことを 示します。 1 : 割り込みが発生したことを示しま す。 MSB LSB 0 dwRet ■補足 0 : 0 0 DIOA03 DIOA02 DIOA01 DIOA00 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、DioEventを実行してから実行してください。 ② この関数の実行により、前回の割り込みコントロールポートのステー タスビットは0クリアされます。 ■設定例 例) 割り込みコントロールポートのステータスを取得する場合 ポイント:割り込みコントロールポートのステータスは、IntSenceにより確認します。 ●C言語用 HANDLE hDrv; DWORD dwRet; dwRet = DioIntSence(hDrv, &IntSence); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim hDrv dwRet As Long As Long dwRet = DioIntSence(hDrv, IntSence) ErrChk(dwRet) ' エラーチェック関数 API-PAC(W32)RM/DIO 183 第3章 PIO-32DM(PCI)を使用する場合 DioIntEnable ■機能 指定したボードの割り込み信号の入力を一時的に禁止(または禁止を解除) します。 ■書式 (C言語用) HANDLE hDrv; WORD IntMask; DWORD dwRet; dwRet = DioIntEnable(hDrv, IntMask) (Visual Basic用) Dim hDrv As Long Dim IntMask As Integer Dim dwRet As Long dwRet = DioIntEnable(hDrv, IntMask) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 IntMask : 割り込み信号の禁止/許可を指定してください。 指定可能な範囲 : 0 ≦ IntMask ≦ 1 0 : 割り込み信号の許可 1 : 割り込み信号の禁止 設定範囲外である場合、戻り値624hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、DioEventを実行してから実行してください。 ■設定例 例) 指定したデバイスのハードウェア割り込み信号の入力を一時的に禁止する場合 ●C言語用 HANDLE hDrv; WORD IntMask; DWORD dwRet; IntMask = 1; dwRet = DioIntEnable(hDrv, IntMask); ErrChk(dwRet); ●Visual Basic用 Dim Dim Dim hDrv IntMask dwRet /* エラーチェック関数 */ As Long As Integer As Long IntMask = 1 dwRet = DioIntEnable(hDrv, IntMask) ErrChk(dwRet) 184 /* 有効/無効を指定 */ ' 有効/無効を指定 ' エラーチェック関数 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioEventEx ■機能 指定したボードの割り込みを利用して、バックグラウンドからアプリケー ション側に割り込みメッセージを発生します。(拡張版) 割り込みとして使用可能な各チャネルごとに別のメッセージを送出します。 ■書式 (C言語用) HANDLE hDrv; WORD SigLog; WORD SigCh; HANDLE hWnd; WORD MsgNo; DWORD dwRet; dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, MsgNo); (Visual Basic用) Dim hDrv As Long Dim SigLog As Integer Dim SigCh As Integer Dim hWnd As Long Dim MsgNo As Integer Dim dwRet As Long dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, MsgNo) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 SigLog : 0固定です。 SigCh : 割り込み信号端子の入力を行うチャネルを指定してくださ い。 指定可能な範囲 : 0 ≦ SigCh ≦ 3 0 : DIOA00 から入力 1 : DIOA01 から入力 2 : DIOA02 から入力 3 : DIOA03 から入力 設定範囲外である場合、戻り値623hを返します。 hWnd : 割り込みメッセージを受け取るウィンドウのハンドルを指 定してください。 MsgNo : 割り込みイベントメッセージで使用する識別メッセージ番 号(ユーザー指定の識別メッセージ番号)を指定してくださ い。 指定可能な範囲 : 400h ≦ DMsgNo ≦ 7FFFh 設定範囲外である場合、戻り値00Chを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、実行した後すぐに戻り、割り込み信号がただちに有効に なります。 ② この関数は、旧バージョンの関数DioEvent と併用することはできませ ん。 API-PAC(W32)RM/DIO 185 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 指定したグループの第1枚目のハードウェア割り込み機能を利用して、0チャネル と1チャネルの割り込みイベント信号の発生を行う場合 ●C言語用 HANDLE hDrv; HANDLE hWnd; WORD DMsgNo; WORD SigLog; WORD SigCh; DWORD dwRet; DMsgNo = 0x470; SigLog = 0; /* 0を指定 */ SigCh = 0; /* 入力端子を指定 */ dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, DMsgNo); ErrChk(dwRet); /* エラーチェック関数 */ DMsgNo = 0x471; SigLog = 0; /* 0を指定 */ SigCh = 1; /* 入力端子を指定 */ dwRet = DioEventEx(hDrv, SigLog, SigCh, hWnd, DMsgNo); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim hDrv SigLog SigCh dwRet As Long As Integer As Integer As Long MsgEcho1.Message = &H470 SigLog = 0 ' 0を指定 SigCh = 0 ' 入力端子を指定 dwRet = DioEventEx(hDrv, SigLog, SigCh, MsgEcho1.hWnd, sgEcho1.Message) ErrChk(dwRet) ' エラーチェック関数 MsgEcho2.Message = &H471 SigLog = 0 ' 0を指定 SigCh = 1 ' 入力端子を指定 dwRet = DioEventEx(hDrv, SigLog, SigCh, MsgEcho2.hWnd, MsgEcho2.Message) ErrChk(dwRet) ' エラーチェック関数 186 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 DioIntEnableEx ■機能 指定したグループの割り込み信号の入力を一時的に禁止(または禁止を解 除)します。(拡張版) ■書式 (C言語用) HANDLE hDrv; WORD SigCh; WORD IntMask; DWORD dwRet; dwRet = DioIntEnableEx(hDrv, SigCh, IntMask) (Visual Basic用) Dim hDrv As Long Dim SigCh As Integer Dim IntMask As Integer Dim dwRet As Long dwRet = DioIntEnableEx(hDrv, SigCh, IntMask) ■引数 ■補足 hDrv : デバイスハンドルを指定してください。 このデバイスハンドルはDioOpenで取得します。 SigCh : DioEventEx で指定したチャネル番号を指定してください。 IntMask : 割り込み信号の禁止/許可を指定してください。 指定可能な範囲 : 0 ≦ IntMask ≦ 1 0 : 割り込み信号の許可 1 : 割り込み信号の禁止 設定範囲外である場合、戻り値624hを返します。 dwRet : 終了情報(戻り値) 正常終了 : 0 エラー終了 : 0以外(詳細は「戻り値一覧」参照) ① この関数は、DioEventExを実行してから実行してください。 ② この関数は、旧バージョンの関数DioEventに対しては効果がありませ ん。 API-PAC(W32)RM/DIO 187 第3章 PIO-32DM(PCI)を使用する場合 ■設定例 例) 指定したデバイスのハードウェア割り込み信号の入力を一時的に禁止する場合 ●C言語用 HANDLE hDrv; WORD SigCh; WORD IntMask; DWORD dwRet; SigCh = 0; /* 入力端子を指定 */ IntMask = 1; /* 有効/無効を指定 */ dwRet = DioIntEnableEx(hDrv, SigCh, IntMask); ErrChk(dwRet); /* エラーチェック関数 */ ●Visual Basic用 Dim Dim Dim Dim hDrv SigCh IntMask dwRet As Long} As Integer As Integer As Long SigCh = 0 '入力端子を指定 IntMask = 1 ' 有効/無効を指定 dwRet = DioIntEnableEx(hDrv, SigCh, IntMask) ErrChk(dwRet) ' エラーチェック関数 188 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 一般的な転送形式について ここでは、入力転送(サンプリング)を行う上での代表的なパターンにおけるバッファと関数の 使用方法について説明します。 ■パターン1:有限データ数、データをサンプリング後に取得 1回転送を行い、データをサンプリング終了後に取得する場合です。 処理 この場合、バッファサイズは欲しいデータ数のサイズ以上用意する必要があります。 バッファの繰り返し指定は、DIODM_WRITE_ONCEを指定します。データ入力個数が決まっ ている場合には、ストップ条件をDIODM_STOP_NUMに指定して、DioDmSetStopNum関数で 指定個数で転送を完了するようにしてください。 転送を開始した後は、完了メッセージを待つか、またはステータス取得関数でステータスビッ トDIODM_STATUS_BMSTOPが立つまで、SleepなどのWin32APIでウェイトを入れながらルー プで待ちます。 ■パターン2:有限データ数、データをサンプリングしながら取得 1回転送を行い、データをサンプリング中に取得して、使用する場合です。 処理 処理 処理 この場合、バッファサイズは欲しいデータ数のサイズ以上用意する必要があります。 バッファの繰り返し指定は、DIODM_WRITE_ONCEを指定します。データ入力個数が決まっ ている場合には、ストップ条件をDIODM_STOP_NUMに指定して、DioDmSetStopNum関数で 指定個数で転送を完了するようにしてください。 転送中は、転送個数取得関数(DioDmGetCount)でデータの入っている位置を確かめながら、処 理を行います。 途中でステータス関数でのチェックを行って、エラーなどで終了していないかを確認しながら 処理を行ってください。システムに負荷を掛けないためには、ループ中でSleepなどのWin32API でウェイトを入れてください。 API-PAC(W32)RM/DIO 189 第3章 PIO-32DM(PCI)を使用する場合 ■パターン3:無限データ数、全てのデータを取得 無限転送を行い、一定個数データを取得したら、ファイルにデータを格納するなどの処理を行 う場合です。 処理 処理 処理 転送個数の確認は、指定個数転送完了メッセージを使用するか、システムタイマ等で転送個数 取得関数を使用して行います。アプリケーションはリードポインタからライトポインタまで処 理の処理をシステムタイマまたはイベントメッセージにより周期的に行います。 この場合注意しなければならないのは、どこまでデータを処理したのかを示すリードポインタ と、バッファのどこまでデータが書かれているかを示すライトポインタをユーザープログラム で管理しなければならない点です。 リードポインタ/ライトポインタは、バッファサイズまで転送すると、折り返して0に戻るカウ ンタです。 しかし、APIで取得するカウント数は、32ビットのカウンタですので、バッファサイズで折り 返して0にはなりません。 単純には、リードポインタ(ライトポインタ)= カウンタ値をバッファサイズで割った余りにな りますが、32ビットカウンタがオーバーフローしてしまった場合を考慮すると、32ビットカウ ンタの最大値÷バッファサイズの余りをオーバーフローするごとに加算しつつ計算する必要が あるので、上記の式は成り立たなくなります。 このことからリードポインタとライトポインタの管理が難しくなります。 この問題を解決するには、バッファサイズを2進数で0001111111のような数にすることです。 例として、バッファサイズを16進数の0x03ffにした場合、カウンタ値(32ビット)からリードポ インタまたはライトポインタを求めるには、リードポインタ(ライトポインタ)= カウンタ値と 0x03ffの論理積で求めることができます。カウンタ値の0x03ffと論理積をとった部分について は、0から0x03ffで回転するカウンタになるためです。 無限データサンプリングの場合は、バッファサイズをこのような数値にして、リードポインタ とライトポインタの管理を行いながら処理を行うことをお勧めします。 ■パターン4:無限データ数、ライトポインタを取得して、任意の箇所から任意のデータ数を 取得無限転送を行い、ある任意の条件が成立したら任意の箇所から任意のデータ数を取得する という場合です。 この場合も、リードポインタとライトポインタの管理が必要になります。リードポインタ、ラ イトポインタを簡単に計算するには、パターン3で説明したバッファサイズを採用することを お勧めします。 190 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 ステータス一覧 ステータス取得関数(DioDmGetStatus)で取得されるステータスの説明をします。 ステータスは、以下に示す値の論理和で表されます。 表3.3 ステータス一覧 シンボル DIODM_STATUS_BMSTOP 値 入出力 00000001h 入力/出力 種類 情報 内容 バスマスタ転送が完了したことを示します。 DIODM_STATUS_PIOSTART 00000002h 入力/出力 情報 PIO入出力がスタートしたことを示します。 DIODM_STATUS_PIOSTOP 00000004h 入力/出力 情報 DIODM_STATUS_TRGIN 00000008h 入力/出力 情報 DIODM_STATUS_OVERRUN 00000010h 入力/出力 警告 PIO入出力がストップしたことを示します。 外部スタートで、スタート信号が入ったことを示し ます。 外部スタートで、スタート信号が2回以上入ったこ とを示します。転送は問題なく続けられます。外部 接続信号の仕様上問題がなければ無視してくださ い。 エラー一覧 ステータス取得関数(DioDmGetStatus)で取得されるエラーの説明をします。 エラーは、以下に示す値の論理和で表されます。 表3.4 エラー一覧 シンボル 値 入出力 種類 DIODM_STATUS_FIFOEMPTY 00000001h 出力のみ エラー DIODM_STATUS_FIFOFULL 00000002h 入力のみ エラー DIODM_STATUS_SGOVERIN 00000004h 入力のみ エラー DIODM_STATUS_TRGERR 00000008h 入力/出力 エラー DIODM_STATUS_CLKERR 00000010h 入力/出力 エラー API-PAC(W32)RM/DIO 内容 出力でFIFOが空になったことを示します。主原因 は、システム負荷が高く、バスマスタ転送が間に合 わないためです。転送レートを下げる、システム負 荷を軽くするなどの対策が必要です。 入力でFIFOが一杯になったことを示します。主原 因は、システム負荷が高く、バスマスタ転送が間に 合わないためです。転送レートを下げる、システム 負荷を軽くするなどの対策が必要です。 バッファがオーバーフローしたことを示します。転 送しようとしたデータ数がバッファサイズを超えて います。バッファサイズを大きくしてください。 外部スタートで、スタート信号とストップ信号が同 時に入ったことを示します。このステータスが立っ た場合、転送は行われません。外部スタート信号と 外部ストップ信号の入り方を確認してください。 外部クロックで、データ入出力中に次のクロックが 入ったことを示します。ボードの動作速度上、この ステータスが立つことはまずありません。もしこの ステータスが立った場合、外部クロックを下げるこ とを検討してください。 191 第3章 PIO-32DM(PCI)を使用する場合 戻り値一覧(PIO-32DM(PCI)) 戻り値が"0"の場合、関数は正常に実行されています。戻り値が"0"以外の場合は、エラーが発 生したことを示し、関数の処理は中断されます。この関数一覧にない戻り値については、第2 章の「戻り値一覧」を参照してください。 コード メッセージ 650h 未実装エラー 実行した関数が実装されていないことを示します。 PIO-32DM(PCI)以外でDioDmXX関数を実行した場合です。 651h パラメータエラー 関数パラメータのいずれかが、指定可能な範囲を超えています。 パラメータの値を確認してください。 652h バッファが大きすぎて設定できない場合 バッファが大きすぎてボードに設定できません。 バッファサイズを小さくしてください。 653h アダプタ取得エラー Windows 2000/NTでのエラーです。 他にバスマスター転送を行うボードを使用されている場合、そのボードを 外して実行してみてください。 654h 実行手順エラー 関数の実行手順が間違っています。 サンプルを参考にして、実行手順を書き直してください。 655h メモリをロックできない場合 メモリをロックできません。 実装メモリを増やすか、バッファサイズを小さくして実行してください。 656h メモリをアンロックできない場合 メモリをアンロックできません。 確保したバッファサイズと指定サイズが間違っていないか、メモリを動的 に取得している場合、開放のタイミングを間違えていないかを確認してく ださい。 192 API-PAC(W32)RM/DIO 第3章 PIO-32DM(PCI)を使用する場合 同期制御コネクタ(SCコネクタについて) 同期制御コネクタ(SCコネクタ)は、複数枚のボード(同種、異種)のスタート信号、クロック信 号、ストップ信号などを共通で使用して、ボードの動作を同期させるための簡単な方法を提供 します。 ボードのチャネル数を増やしたい場合や、たとえばデジタルI/OとアナログI/Oを同じタイミン グで実行したい場合などに使用します。 同期制御コネクタには、EXTSIG1∼EXTSIG3までの同期信号線が用意されています。これら の信号を出力するボードをマスタと呼び、受け取る側のボードをスレーブと呼びます。1つの 同期させるボード群において、マスタは1台のみで、他はスレーブに設定します。 EXTSIG1∼EXTSIG3までの同期信号線をスタート、クロック、ストップ条件に割り当てるこ とによって、マスタからの信号に同期させてスレーブを動作させることができます。 マスタ側では、同期信号線に対してどのような信号を割り当てるかを設定します。この信号に は、例えばボードの内部クロックや、外部スタートなどがあります。同期信号線に出せる信号 の種類の詳細については、DioDmSetSetMasterCfg関数の仕様を参照してください。 スレーブ側では、同期信号線の入力を有効にするかどうかと、スタート、クロック、ストップ のサンプリング条件に対して、EXTSIG1∼EXTSIG3までの同期信号線のどれを使用するかを 設定します。スレーブのサンプリング条件には、同期信号線以外の信号も使用できます。例え ば、スタート信号とストップ信号のみ同期制御コネクタの信号を使用し、クロックにはマスタ とは別の内部クロックを使用することができます。 同期制御コネクタは、ボード上のCN2,CN3のコネクタです。 結線については、ボードに添付のコネクタをご使用ください。 API-PAC(W32)RM/DIO 193 第3章 PIO-32DM(PCI)を使用する場合 194 API-PAC(W32)RM/DIO 第4章 用語説明 第4章 用語説明 8225モード モード0 モード1 モード2 基本的な入出力ポートとして機能 コントロール信号、ステータス信号による制御を伴う入出力ポートとして機能 双方向データを伴う入出力ポートとして機能 各機能を使用するためには、LSIi8255のコントロールワードを設定する必要が あります。 また、ボードによりサポートモードが異なる場合があります。 詳細については、ボード添付の解説書を参照してください。 BCD(Binary Coded Decimal) 2進化10進数のコードです。 このコードは4ビットの16進数を1桁として、10進数で表現したものです。 CompactPCIバス対応ボード PI-64L(CPCI), PO-64L(CPCI), PIO-32/32L(CPCI) ErrChk(dwRet); ErrChk (DWORD dwRet) { if (dwRet == 0) { /* 正常終了 */ } else { /* エラー処理 */ } } ErrChk(dwRet) Sub ErrChk (dwRet As Long) If dwRet = 0 Then ' 正常終了 Else ' エラー処理 End If End Sub API-PAC(W32)RM/DIO 195 第4章 用語説明 Eシリーズボード( オプションモード) ボード上のジャンパ(JP2)により、動作モードを切り替えることが可能です。 オプション機能を使用するときは、ボート上のジャンパ(JP2)設定を1-2に変更 してください。 なお、ボード上のジャンパ(JP2)設定を2-3にした場合には、入出力点数固定ボ ードとなります。 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) <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 <PCカード> PIO-32D(PM)、PIO-16/16L(PM) Eシリーズボード( ノーマルモード) ボード上のジャンパ(JP2)により、動作モードを切り替えることが可能です。 ノーマルモードを使用するときは、ボード上のジャンパ(JP2)設定を2-3に変更 してください。 <ISAバスボード> PI-64L(PC)、PI-64T(PC)、PO-64L(PC)、PO-64T(PC)、PIO-32/32L(PC)、 PIO-32/32RL(PC)、PIO-32/32L(PC) <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-32E-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 LSP(Least Significant Port) 最下位ポートです。 196 API-PAC(W32)RM/DIO 第4章 用語説明 PCIバス対応ボード PIO-32/32L(PCI)H、PI-64L(PCI)H、PO-64L(PCI)H、PIO-16/16L(PCI)H、 PI-32L(PCI)H、PO-32L(PCI)H、PIO-16/16B(PCI)H、PI-32B(PCI)H、PO-32B(PCI)H、 PIO-16/16RY(PCI)、PI-64L(PCI)、PO-64L(PCI)、PI-32L(PCI)、PI-32B(PCI)、 PO-32L(PCI)、PO-32B(PCI)、PIO-16/16L(PCI)、PIO-16/16B(PCI)、PIO-16/16T(PCI)、 PIO-16/16TB(PCI)、PIO-32/32B(PCI)、 PIO-32/32B(PCI)H、PIO-32/32L(PCI)、PIO-32/32T(PCI)、PIO-32/32F(PCI)、 RRY-16C(PCI)、RRY-32(PCI)、PIO-48D(PCI)、PIO-32DM(PCI)、PI-128L(PCI)、 PO-128L(PCI)、PIO-64/64L(PCI)、 PIO-16/16L(LPCI)H、PIO-16/16B(LPCI)H、PIO-16/16T(LPCI)H オプション機能 このオプション機能を使用できるボードとしては、Eシリーズボード、PCIバ ス対応ボードおよびCompactPCIバス対応ボードがあります。 Eシリーズボードは、ボード上のジャンパ(JP2)により、動作モードを切り替え ることが可能です。本ドライバでは、オプション機能が使用可能である、オプ ションモードを使用することを前提にしています。この時のボード上のジャン パ(JP2)設定は、1-2となります。 本ドライバがサポートしているオプション機能を次に示します。 ・デジタル入力のフィルタ機能(DioSFilter) 入力されたデータに対してフィルタをかけます。 <CompactPCIバス対応ボード> PIO-32/32L(CPCI)、PI-64L(CPCI)、PO-64L(CPCI) <PCIバス対応ボード> PIO-32/32L(PCI)H、PI-64L(PCI)H、PIO-16/16L(PCI)H、PI-128L(PCI)、 PIO-64/64L(PCI)、PI-32L(PCI)H、PIO-16/16B(PCI)H、PI-32B(PCI)H、 PIO-16/16RY(PCI)、PIO-16/16L(PCI)、PIO-16/16B(PCI)、PIO-16/16T(PCI)、 PIO-16/16TB(PCI)、PIO-32/32B(PCI)、PIO-32/32B(PCI)H、PIO-32/32L(PCI)、 PIO-32/32T(PCI)、PIO-32/32F(PCI)、PI-64L(PCI)、PI-32L(PCI)、PI-32B(PCI)、 PIO-16/16L(LPCI)H、PIO-16/16B(LPCI)H、PIO-16/16T(LPCI)H <Eシリーズボード> 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-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 API-PAC(W32)RM/DIO 197 第4章 用語説明 外部クロック PIO-32DM(PCI)の転送条件の一つで、外部からのクロック信号の立下りに同期 してデータを入力または出力する場合を示します。 外部ストップ PIO-32DM(PCI)の転送ストップ条件の一つで、外部信号の立上りまたは立下り でストップする場合を示します。 外部スタート PIO-32DM(PCI)の転送スタート条件の一つで、外部信号の立上りまたは立下り でスタートする場合を示します。 グループ API-TOOLコンフィグレーションプログラムで使用するボードを設定した論理 デバイスをグループと言います。 グループには、各関数をデバイスドライバが使用する場合に必要なボードのハ ードウェア環境情報(I/Oアドレス、割り込みレベル)が設定されています。 本ドライバの仕様により、1グループで設定できるボード数は最大4枚です。ま た、1デバイスドライバで管理できるグループ数は最大16グループまでサポー トできます。 グループの設定内容を変更する場合は、API-TOOLコンフィグレーションプロ グラムを再実行する必要があります。 グループ番号 API-TOOLコンフィグレーションプログラムで、使用するボードを設定したグ ループの番号を示します。 サンプリング/ ジェネレーティング 本書では、外部からからメモリへデータを入力する場合をサンプリング、メモ リから外部へデータを出力する場合をジェネレーティングと呼びます。 実ビット ボード1枚がサポートしている実際のビット数を示します。 実ポート ボード1枚がサポートしている実際のポート数(先頭I/Oアドレス+0 ∼ n)を示 します。 198 API-PAC(W32)RM/DIO 第4章 用語説明 時定数 フィルタ機能関数を使用する場合、入力データにフィルタをかけるための時定 数を設定しなければなりません。 本ドライバのフィルタ機能関数はデジタルフィルタにて実現しています。 オプション機能を持つボードでは、ボード上の機能を利用して逐次入力データ にフィルタをかけます。詳細についてはボードの解説書をご覧ください。 オプション機能を持たないボードでは、ドライバ内のデジタルフィルタのアル ゴリズムを利用します。したがって、入力関数の実行時および割り込みの入力 時に入力データに対してフィルタをかけます。 また、フィルタの時定数の設定値は次のようになっています。Timcode = 0と したとき、フィルタは無効になります。 ISAバス、Cバスボード、PIO-32/32L(PCI)H、PI-64L(PCI)H、PIO-16/16L(PCI)H、 PI-32L(PCI)H、PIO-16/16RY(PCI)H、PIO-32D(PM)、PIO-16/16L(PM)、PI-128L(PCI)、 PIO-64/64L(PCI)の場合 TimCode デジタルフィルタの時間 TimCode デジタルフィルタの時間 1 0.25 [μs] 11 256 [μs] 2 0.50 [μs] 12 512 [μs] 3 1.0 [μs] 13 1.024 [ms] 4 2.0 [μs] 14 2.048 [ms] 5 4.0 [μs] 15 4.096 [ms] 6 8.0 [μs] 16 8.192 [ms] 7 16 [μs] 17 16.384 [ms] 6 32 [μs] 18 32.768 [ms] 9 64 [μs] 19 65.536 [ms] 10 128 [μs] 20 131.072 [ms] PCIバスボード(PIO-48D(PCI)、PIO-32/32L(PCI)H、PI-64L(PCI)H、PIO16/16L(PCI)H、PI-32L(PCI)H、PIO-16/16RY(PCI)H、PI-128L(PCI)、PIO-64/64L(PCI) を除く)の場合 TimCode デジタルフィルタの時間 TimCode デジタルフィルタの時間 1 0.125 [μs] 11 128 [μs] 2 0.25 [μs] 12 256 [μs] 3 0.50 [μs] 13 512 [μs] 4 1.0 [μs] 14 1.024 [ms] 5 2.0 [μs] 15 2.048 [ms] 6 4.0 [μs] 16 4.096 [ms] 7 8.0 [μs] 17 8.192 [ms] 6 16 [μs] 18 16.384 [ms] 9 32 [μs] 19 32.768 [ms] 10 64 [μs] 20 65.536 [ms] スタンドアロン 複数枚のボードを同期させて使用する場合のマスタ/スレーブに対して、同期 信号線を使用しないで単独で使用するボードをスタンドアロンと呼びます。 スレーブ 複数枚のボードを同期制御コネクタ(SCコネクタ)を使用して同期させて使用す る場合に、同期信号線にから信号を入力して動作するボードをスレーブと呼び ます。 API-PAC(W32)RM/DIO 199 第4章 用語説明 チ ッ プ番号 プログラマブルボードに搭載されている、プログラム可能な入出力専用 LSI(i8255相当品)チップの番号を示します。Low/Highで分かれているチップは、 Low = 0, High = 1 と指定してください。 (例) グループ 1 : ボード番号 ボード チップ番号 1 2 PIO-48W(PC) PIO-96W(PC) 0∼1 (Low = 0 , High = 1) 2∼5 グループ 2 : ボード番号 ボード チップ番号 1 2 PIO-48W(PC) PIO-48W(PC) 0∼1 (Low = 0 , High = 1) 2∼3 デバイス名 ドライバ番号、グループ番号で表わされる論理デバイスに対して付けられる名 前をデバイス名と言います。デバイス名はAPI-TOOLコンフィグレーションプ ログラムで設定し、DioOpenEx関数で指定します。 ドライバ番号 本ドライバでは、入出力点数固定ボードをサポートするドライバ、プログラマ ブルボード、PCIバス対応ボード、CompactPCIバス対応ボードおよびEシリー ズボード、デモボード、バスマスタボードをサポートするドライバをそれぞれ 用意し、番号を付けて明示しています。 ドライバ番号 ドライバ名 サポートするボード 0 ApiDio00.*** 入出力点数固定ボード 1 ApiDio01.*** プログラマブルボード 2 ApiDio02.*** PCIバス対応ボード、 3 ApiDio03.*** Eシリーズボード 4 5 ApiDio04.*** ApiDio05.*** デモボード バスマスタボード Eシリーズボード(ノーマルボード) CompactPCIバス対応ボード (オプションモード) *** : 200 Windows 95ではVXDです。 Windows NTではSYSです。 API-PAC(W32)RM/DIO 第4章 用語説明 トリガ トリガ監視機能関数を使用する場合、入力データに対してトリガをかけるため のトリガの設定を行わなければなりません。 トリガとは、入力データがある時点から次の時点に変化したときの要因を表し ます。 本ドライバでは以下のように設定しています。 Level Trigger High Low : : 0 1 Edge Trigger Up Down : : 2 3 内部クロック PIO-32DM(PCI)の転送条件の一つで、ボード内のクロックに同期してデータを 入力または出力する場合を示します。 入出力点数固定ボード <ISAバスボード> 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)、 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)、 RRY-32(PC)、PRY-32(PC) <98(C)バスボード> 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、RRY-16(98)、WRY-16(98)、SSR-16(98)、RRY-32(98)、PRY-32(98)、 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) 入力端子 割り込み信号として使用するボードの入力信号を示します。 割り込みレベルと入力信号は、あらかじめボード上のジャンパで一対一に設定 されている必要があります。詳細については、ボード添付の解説書を参照して ください。 API-PAC(W32)RM/DIO 201 第4章 用語説明 バスマスタ転送 バスマスタ転送とは、PCIバスボードの機能で、DMAのようにCPUを介さずに ボードから直接ユーザーのメモリに対して直接入出力を行う機能です。PIO32DM(PCI)は、このバスマスタ転送機能を搭載しており、ボード内のタイマー などを使用した、正確で高速な入出力を行うことができます。バスマスタ転送 は、CPUがバスを使用していない時間を利用して、ボードとパソコン本体のメ モリ間での転送を行います。システムの負荷が高くなり、PIO-32DM(PCI)ボー ドがバスを獲得できない場合、転送エラーが発生することがあります。 パターン プロセスコントロール機能関数を使用する場合、各プロセスに対応するパター ンの設定を行わなければなりません。 パターンは各プロセスに対応する信号の列を表します。そして、入力データが 指定したパターンに一致した場合に、イベントを発生します。 プログラマブルボード <PCIバスボード> PIO-48D(PCI) <PCカード> PIO-24W(PM) <ISAバスボード> PIO-48W(PC)、PIO-48D(PC)、PIO-48C(PC)、PIO-96W(PC)、PIO-144W(PC), PIO-120D(PC), <98(C)バスボード> PIO-48W(98)、PIO-48W(98)B-01、PIO-48W(98)B-02、PIO-96W(98)K マスタ 複数枚のボードを同期制御コネクタ(SCコネクタ)を使用して同期させて使用す る場合に、同期信号線に対して信号を出力するボードをマスタと呼びます。 メモリのロック、アンロック ユーザー空間のメモリは、システムメモリの使用領域が一杯になってくると、 ハードディスク上に待避されることがあります。 本書では、このメモリの待避を行なわないようにすることを、メモリのロック と呼び、その逆をメモリのアンロックと呼びます。 リードバック オプション機能を持つボードでは、ボードにデジタルデータを出力すると、そ のデータはラッチ(保持)されます。したがって、パソコンのメモリ上からデジ タル出力データを消去した場合でも、再度ボードから出力データを入力するこ とができます。 また、オプション機能を持たないボードでは、パソコンのメモリ内にデータが ラッチされますので、DioOpenおよびDioCloseの間では何度でも出力データを 読み出すことが出来ます。 202 API-PAC(W32)RM/DIO 第4章 用語説明 論理ビット 同一グループ内に、ボードが複数枚設定されている場合、全てのボードの入力 なら入力、出力なら出力のビットを全て並べて0から順に番号を付けたものを 論理ビットと言います。 論理ビットは入力と出力それぞれに0から番号を付けます。 (例) ドライバ番号が0, 2, 3の場合 グループ 1 : ボード番号 ボード 実ビット 1 PIO-32/32L(PC) 0∼31 入力論理ビット 出力論理ビット 0∼31 0∼31 2 3 PI-64L(PC) PO-64L(PC) 0∼63 0∼63 32∼95 -------- -------32∼95 ボード番号 ボード 実ビット 1 2 PIO-32/32L(PC) PIO-32/32L(PC) 0∼31 0∼31 グループ 2 : 入力論理ビット 出力論理ビット 0∼31 32∼63 0∼31 32∼63 プログラマブルボードの場合、入出力とは無関係にABCポートの順で0から付 けた番号になります。 ドライバ番号が1の場合 グループ 1 : ボード番号 ボード チップ番号 1 2 PIO-48W(PC) PIO-48W(PC) 0∼1 2∼3 チップ番号0 : A 入力, B 出力, C 出力 チップ番号1 : A 出力, B 入力, C 入力 チップ番号2 : チップ番号3 : A 入力, B 出力, C 出力 A 出力, B 入力, C 入力 チップ番号 入力論理ビット 出力論理ビット 0 0∼7 (A) 8∼15 (B), 16∼23 (C) 1 32∼39 (B), 40∼47 (C) 2 3 48∼55 (A) 80∼87 (B), 88∼95 (C) API-PAC(W32)RM/DIO 24∼31 (A) 56∼63 (B), 64∼71 (C) 72∼79 (A) 203 第4章 用語説明 グループ 2 : ボード番号 ボード チップ番号 1 2 PIO-48W(PC) PIO-48W(PC) 0∼1 0∼3 チップ番号0 : A 出力, B 入力, C 入力 チップ番号1 : A 入力, B 出力, C 出力 チップ番号2 : チップ番号3 : A 出力, B 入力, C 入力 A 入力, B 出力, C 出力 チップ番号 入力論理ビット 出力論理ビット 0 8∼15 (B), 16∼23 (C) 1 24∼31 (A) 32∼39 (B), 40∼47 (C) 0∼7 (A) 2 3 56∼63 (B), 64∼71 (C) 72∼79 (A) 48∼55 (A) 80∼87 (B), 88∼95 (C) 論理ポート 同一グループ内に、ボードが複数枚設定されている場合、全てのボードの入力 なら入力、出力なら出力のポートを全て並べて0から順に番号を付けたものを 論理ポートと言います。 論理ポートは入力と出力それぞれ別に0から番号を付けます。 (例) ドライバ番号が0, 2, 3の場合 グループ 1 : ボード番号 ボード 実ポート 1 PIO-16/16L(PC)H 0∼1 入力論理ポート 出力論理ポート 0∼1 0∼1 2 3 PI-32L(PC)H PO-32L(PC)H 0∼3 0∼3 2∼5 ------ -----2∼5 ボード番号 ボード 実ポート 1 2 PIO-16/16L(PC)H PIO-16/16L(PC)H 0∼1 0∼1 グループ 2 : 入力論理ポート 出力論理ポート 0∼1 2∼3 0∼1 2∼3 プログラマブルボードの場合、入出力とは無関係にABCポートの順で0から付 けた番号になります。 ドライバ番号が1の場合 204 API-PAC(W32)RM/DIO 第4章 用語説明 グループ 1 : ボード番号 ボード チップ番号 1 2 PIO-48W(PC) PIO-48W(PC) 0∼1 2∼3 チップ番号0 : A 入力, B 出力, C 出力 チップ番号1 : A 出力, B 入力, C 入力 チップ番号2 : チップ番号3 : A 入力, B 出力, C 出力 A 出力, B 入力, C 入力 チップ番号 入力論理ビット 出力論理ビット 0 0 (A) 1 (B), 2 (C) 1 4 (B), 5 (C) 3 (A) 2 3 6 (A) 10 (B), 11 (C) 7 (B), 8 (C) 9 (A) グループ 2 : ボード番号 ボード チップ番号 1 2 PIO-48W(PC) PIO-48W(PC) 0∼1 0∼3 チップ番号0 : A 出力, B 入力, C 入力 チップ番号1 : A 入力, B 出力, C 出力 チップ番号2 : チップ番号3 : A 出力, B 入力, C 入力 A 入力, B 出力, C 出力 チップ番号 入力論理ビット 出力論理ビット 0 1 (B), 2 (C) 0 (A) 1 3 (A) 4 (B), 5 (C) 2 3 7 (B), 8 (C) 9 (A) 6 (A) 10 (B) , 11 (C) 割り込み グループにつき4レベルの割り込みが使用できます。ただし、グループ内の1枚 目に設定されているボードの割り込み信号をその対象とします。 実際に使用できる割り込みレベルは、使用するボードの仕様や動作環境に依存 します。詳細については、ボード添付の解説書を参照してください。 割り込みレベル パソコンの割り込み要求レベルの中から4点の割り込みレベルを使用します。 ただし、実際に使用できる割り込み要求レベルは、パソコンや他のボード等が 使用していない割り込み要求レベルです。 設定可能な割り込みレベルは、IRQ 3 ∼ 7, 9 ∼ 12, 14, 15です。 また、ボード上の割り込み信号の設定方法の詳細については、使用ボードの解 説書を参照してください。 API-PAC(W32)RM/DIO 205 API-PAC(W32)RM/DIO 解説書 発行 株式会社コンテック 日本語 英語 中国語 大阪市西淀川区姫里3-9-31 http://www.contec.co.jp/ http://www.contec.com/ http://www.contec.com.cn/ 2003年10月改訂 〒555-0025 本製品および本書は著作権法によって保護されていますので無断で複写、複製、転載、改変す ることは禁じられています。 [06051998] [10232003_rev11] 分類番号 コード番号 A-41-922 LZF8311