タイマでカウントをして,ある値になったら,イベントを発生させると
いうことを,繰り返したいのですが,下のようなプログラムだと
うごいてくれません.
何がいけないのでしょうか,誰か教えてください.
おねがいします,
Private Sub Command1_Click()
Sysdata = 1
Diadata = 0
Timer1.Interval = 10
Timer1.Enabled = True
Sysdrive:
cdata = 0
outb port, Sysdata
Do
If cdata >= 600 Then GoTo Diadrive
Loop
Diadrive:
cdata = 0
outb port, Diadata
Do
If cdata >= 900 Then GoTo Sysdrive
Loop
End Sub
Private Sub Timer1_Timer()
cdata = cdata + 1
End Sub
ループ内にDoEventsを置いてください。
N88BASICかQuick BASICあたりから
コピーして加工したようなコードですが・・・。
>outb port, Diadata
アセンブラあたりで作った自作API関数か何かですか?
そもそもVbでは(というよりWindowsでは)直接I/Oポートを
扱うことはできません。
>Do
> If cdata >= 900 Then GoTo Sysdrive
>Loop
Loop内でDoEventsしてやらないと、CPUを占有しつづけます。
・・・とかの問題以前に
●変数は宣言する
●Goto,Labelは極力使わない
ぐらいは守ったほうがいいような・・・。
cdataって、グローバルで宣言/定義してるんでしょうね?
nanashiさん,Sayさんありがとうございました.
DoEventsをいれたら,無事動きました.
もう1つ問題が発生してしまいました.
よろしければ,そちらもお願いします。
ツイート | ![]() |