タイマーの使用法.

解決


まつ  2003-07-07 13:40:31  No: 78546  IP: [192.*.*.*]

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

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 14:04:54  No: 78547  IP: [192.*.*.*]

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

編集 削除
Say  2003-07-07 14:05:57  No: 78548  IP: [192.*.*.*]

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-08 20:00:12  No: 78549  IP: [192.*.*.*]

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

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

編集 削除