パラレルポートからの信号(on,offの時間)を測定して,モニタに出力したくて,下記のようなプログラムを組んだのですが,うまく測定してくれません,時間に比例した値がLabelに出てくれれば,あとで補正をすればよいと考えているのですが.
誰か教えてください。お願いします。
Option Explicit
Private Declare Function inpb% Lib "kio32.DLL" (ByVal port%)
Private Declare Function inpw% Lib "kio32.DLL" (ByVal port%)
Private Declare Sub outb Lib "kio32.DLL" (ByVal port%, ByVal data%)
Private Declare Sub outw Lib "kio32.DLL" (ByVal port%, ByVal data%)
Dim outdata%, outdate2%, indata%
Dim cdata1&, cdata2&
Dim port%, ch%
Dim i&, idat1%, idat2%
Private Sub Command1_Click()
outb port + 2, &H20
End Sub
Private Sub Command2_Click()
cdata1 = 0
Do
indata = inpb(port)
cdata1 = cdata1 + 1
DoEvents
Loop Until indata = 0
Label4 = cdata1
cdata2 = 0
Do
indata = inpb(port)
cdata2 = cdata2 + 1
DoEvents
Loop Until indata = 1
Label5 = cdata1 + cdata2
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
port = &H378
outdata = 0
outb port, outdata
End Sub
Private Declare Function inpb% Lib "kio32.DLL" (ByVal port%)
Private Declare Function inpw% Lib "kio32.DLL" (ByVal port%)
Functionなのに戻り値がありませんね。
なのに
indata = inpb(port)
では戻り値を求めています。
そのAPIは、どこかの HPで私も見たことがありますが、
私がためした時はイマイチうまくいきませんでした。
(とはいえ、ちょっとしか試していないので、自分の設定がミスってた可能性が大きいですけど)
接続している機器とかに問題がないかなども見てみる必要がありますね。
ポートアドレスが間違ってないかとか。
はじめまして、Y.Oといいます。
だいぶ遅レスですが同様に困っている人もいるかもしれないので解説します。
ココで使われているkio32.dllですが、
ユーザプログラムで直接ポートをいじれないWinNT,2000,XPでは動かないと思います。
その場合はMAKEIO.SYSを使ってください。
WinNT,2000,XPでポートがいじれるようになると思います。
(なおこのドライバはWinNTなどの隠しAPIを呼ぶという荒業を使用しています注意しましょう)
kio32.dllを使っているのなら読んでいると思うけど、
念のため参考までに
Kit工房 店長通信 11号
[続・エクセルやワードのVBAでパソコンのパラレルポートを使ってみよう]
http://webclub.kcom.ne.jp/mc/kitkoubo/tuusin11.html
ツイート | ![]() |