タイマーの使用法.

解決


まつ  2003-07-07 22:40:31  No: 78546

タイマでカウントをして,ある値になったら,イベントを発生させると
いうことを,繰り返したいのですが,下のようなプログラムだと
うごいてくれません.
何がいけないのでしょうか,誰か教えてください.
おねがいします,

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


nanashi  2003-07-07 23:04:54  No: 78547

ループ内にDoEventsを置いてください。


Say  2003-07-07 23:05:57  No: 78548

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って、グローバルで宣言/定義してるんでしょうね?


まつ  2003-07-09 05:00:12  No: 78549

nanashiさん,Sayさんありがとうございました.
DoEventsをいれたら,無事動きました.

もう1つ問題が発生してしまいました.
よろしければ,そちらもお願いします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加