...

API-PAC(W32)RM/DIO

by user

on
Category: Documents
1273

views

Report

Comments

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
Fly UP