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になっている物もあり注意。

                            TOP