ExcelでのポートのI/O
vega 2003.04.22 改定
2003.12.19 改定
ExcelのVBAでポートの操作します。Excelさえあれば、開発環境は特に必要ありません。
当方の環境は、Win98SEとOffice97です。(PC/AT互換機)
WinXPでも動きました(COMポートでの動作確認)。(GIVEIO.SYSを併用しました)
実際に回路などに接続する場合は十分理解した上で、自己責任でお願いします。
最悪パソコン故障のリスクがあります。
正確な時間のパルス巾の出力や、パルス巾の正確な測定は出来ません。
不定期にWindowsの割りこみが入る為です。
下記に簡単なサンプルソフトを紹介します。
(1) シリアルポート
シリアルポートの制御線を操作します
2本の出力、3本の入力操作をします。少し本数が少ないですが。
D−SUB9でのピン番号は
出力
RTS(7ピン) クロスケーブルは(8ピン)
DTR(4ピン) クロスケーブルは(6ピン)
入力
CTS(8ピン) クロスケーブルは(7ピン)
DSR(6ピン) クロスケーブルは(4ピン)
DCD(1ピン) 私のクロスケーブルは、結線なし。
2秒間隔で、ポートのI/Oを行います。
出力は、2本のポートを同時にON/OFFしますから、テスターで計ると約±10V変化します。
RS232Cのドライバーを通しますから(インバーター)、OFFの処理で約+10V、ON処理で約−10Vになります。
入力は、3本の入力をします。
インバーターの為、約+10VでOFF、約−10VでONと判定できます。
OVは、ケーブル上ではLOW扱いなので、プログラム上ではONと判定されます。
入力と出力を接続すれば、入力ポートの変化が分かります。
例えば、8ピンと7ピンを接続すると、下記フォームのCTSが2秒間隔でON/OFFが変化します。
直接マイコン等には接続できないので注意が必要です。
普通は、RS232C用のドライバー/レシーバー用のICを介して接続し、0V/5Vに変換します。
これらのICはインバーターなので、パソコンのソフト処理(ON処理で5V、OFF処理で0V)と一致します。
comex.lzh
ポートのI/Oは、Windowsのdllを使用してます。
参考 (APIの使用方など)
CQ出版社 TRY!PC 1997.11月号 p114〜p128 COMポート制御用APIの紹介
(2) パラレルポートのI/O
上記に加えて、パラレルポートのI/Oを追加しました。
11本の出力、5本の入力です。
安全の為データの双方向の制御はせず、データは出力固定です。
双方向の制御は、ソフトとハードとの関係で十分な知識と経験がないと、ポートが簡単に
破壊されるそうで、初心者は止めた方が賢明です。
ポートをI/OするDLL(io32c.dll)は、雑誌の真似をして作り直したものです。システムフォルダに
コピーして使用して下さい。普通のVBでも使用できます。必要な方は、自由に使ってください。
双方向のサポートが動作する条件になります。双方向をサポートしたものは、ポートアドレスが連続
になります。双方向をサポートしない場合は、ポートアドレスが連続でないので、プログラムの修正が
必要になります。
安易に使用しないで下さい。暴走、パソコン故障のリスクがあります。
パラレルポートはCOMポートに比較して、非常に壊れやすいと聞きます。
2秒間隔で、ポートのI/Oを行います。
出力は、0V/5Vと変化します。アースとのショート等で一瞬にして簡単にポートが故障するそうですから
十分注意して下さい。
電子回路との接続では、保護用抵抗を介して接続します。
入力と出力を接続すれば、入力ポートの変化が表示されるので分かります。
pport.lzh 2003.4.13 V03
(V02 2003/4/11 から自動起動に変更)
WindowsXPやWindows2000では、動かないと思います。
パラレルポートアドレスが選択できます。正しく選択して下さい。
アドレスを設定した後に、I/O開始ボタンをクリックします。
I/Oを開始した後では、アドレスの変更は無視されます。
ここにない場合は、ソースを直す必要があります。
@ IO32C.DLLの使用方法(1バイトデータのI/O)
まず先頭で使い方を定義をします。 %は、2バイト整数の意味。
Private Declare Function inportb% Lib
"io32c.DLL" (ByVal Port%)
Private Declare Sub outportb Lib
"io32c.DLL" (ByVal Port%, ByVal DAT%)
データの属性は2バイトですが、有効なデータは、下位1バイト分です。
(A)
ポートへの出力は、ポートアドレスとデータを指定します。
Port=&H378 (ポートアドレス)
PD = &HFF
(出力データ)
outportb Port, PD
(B) ポートからの入力は、ポートアドレスを指定します。
Port=&H378 (ポートアドレス)
PD1 = inportb(Port + 1)
パラレルポートのピンと信号名
信号が反転しているものがあります。
(3) パラレルポートのみ
(2)は、一緒になってソースがわかりずらいので、パラレルポートのみにしました。
io32c.dllは、(2)のを使います。
pporto.lzh 2003.4.13 V03 (V02から自動起動に変更)
純粋VBがいい人はこちらです(ソースも)。 上の焼き直しです。( VB6 ) io32c.dll は(2)を使用します。
port_vb.lzh
VC++がいい人はこちらです(ソースも)。 機能は上と同じ。(VC++ Ver.6)
ポートのI/O関数(InpB、OutBなど)は、uWincom.h に出にしてあります。バイトのI/O以外は、実績がありません。
pport.lzh 40kb
参考資料
トランジスタ技術 1996年12月号 P265〜P275 パラレルポートの制御
トランジスタ技術 2000年 1月号 P239〜P240 PCインターフェイスの資料
トランジスタ技術 2000年 3月号 P187 パラレルインターフェイス・アタプタの作成
VBで8本出力、8本入力
トランジスタ技術 2002年 12月号 P179 パラレルイI/O
JAVAで16本出力、8本入力
(回路も、ロジックもシンプルで、VBやVBAでも制御可能)
資料
<表3・3> パラレル・ポートの信号 (トラ技 1996.12 P272)
アドレス | ビット | 信号名 |
Port | Dbit0〜7 | データの入出力 |
Port+1 | Dbit2 | 割り込みステータス |
Dbit3 | ERROR | |
Dbit4 | SLCT | |
Dbit5 | PE | |
Dbit6 | ACK | |
Dbit7 | BUSY | |
Port+2 | Dbit0 | STROBE(反転出力) |
Dbit1 | AUTO FD ET(反転出力) | |
Dbit2 | INIT | |
Dbit3 | SLCT IN(反転出力) | |
Dbit4 | 割り込み許可 0:不許可 1: 許可 |
|
Dbit5 | ポート方向 0:出力 1:入力 |
オーバーバーは表現せず。
(vega注) ポート方向(Port+2:Dbit5)を書きかると、Portのデータの方向が変わるので注意
ハードとソフトが合わないと、簡単にポートが壊れる場合あり。
反転出力は0でH、1でLが出る。
Port : データの入出力
Port+1: 入力のみ
Port+2: 出力と制御用
____________________________________________
<表8> PC/AT互換機のパラレルポートコネクタの各種動作モードと信号名
(トラ技 2001.1 P240)
(SPPのみ転記)
ピン番号 | SPP | ||||
1 | STROBE | ||||
2 | DO | ||||
3 | D1 | ||||
4 | D2 | ||||
5 | D3 | ||||
6 | D4 | ||||
7 | D5 | ||||
8 | D6 | ||||
9 | D7 | ||||
10 | ACK | ||||
11 | BUSY | ||||
12 | PE | ||||
13 | SELECT | ||||
14 | AUTO FD XT | ||||
15 | ERROR | ||||
16 | INIT | ||||
17 | SELECT IN | ||||
18〜25 | GND |
オーバーバーは表現せず。
<表6> セントロニクス・インターフェ−ス用コネクタの信号名 (トラ技 2001.01
P240)
(一部のみ転記)
ピン番号 | 信号名 | 信号方向(PC−プリンタ) | |
1 | STROBE | → | |
2 | DATA1 | → | |
3 | DATA2 | → | |
4 | DATA3 | → | |
5 | DATA4 | → | |
6 | DATA5 | → | |
7 | DATA6 | → | |
8 | DATA7 | → | |
9 | DATA8 | → | |
10 | ACKNLG | ← | |
11 | BUSY | ← | |
12 | PE | ← | |
13 | SLCT | ← | |
14 | (注) | ||
15 | |||
16 | 0V | ||
17 | GND | ||
18 | |||
19〜30 | GND | ||
31 | INIT | → | |
32 | ERROR | ← | |
33 | GND | ||
34〜36 |
オーバーバーは表現せず。
(vega注)PC/AT互換機の14ピンは ”AUTO
FD XT” に対応している。
信号方向は→ (トラ技 1996.12 p267より)
PC9821などは微妙に使い方が違う!!
手元の資料は、GNDになっている物もあり注意。