VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2007/05/22(Tue) 14:40
投稿者ダンボ
Eメール
URL
タイトルRe^10: LED制御について

> ボタンを押すごとに(押しっぱなしでも)LED1→8へと一瞬で点き
> LED8→LED1に一瞬で戻って押しっぱなしだと永遠にループしてしまいます。

だからWait入れろって言ったのに(笑)
下記WaitルーチンはK.J.K.さんからの流用です。
注1.メインは無限ループなので停める手続きを考えておいた方が良い。
注2.No.9177 でなくてNo.9176 のほうのサンプルを下書きにしたようだがいいの?
注3.チャタリング対策していません。
 チャタリング?ハードウェアの方で実装すべきものでは?(とハード屋と喧嘩するソフト屋)

Option Explicit
Private Declare Function MsgWaitForMultipleObjects Lib "user32.dll" _
(Optional ByVal Count As Long = 0&, _
Optional ByVal HandlesPointer As Long = 0&, _
Optional ByVal WaitAll As Long = 0&, _
Optional ByVal Milliseconds As Long = 0&, _
Optional ByVal WakeMask As Long = &HFF&) As Long
Private Declare Function GetTickCount Lib "kernel32.dll" () As Long

Private Sub Wait(WaitTime As Long)
    Dim iStart As Long, iInterval As Long

    iStart = GetTickCount()
    iInterval = WaitTime
    Do
        If 0& = MsgWaitForMultipleObjects(, , , iInterval) _
            Then DoEvents
        iInterval = WaitTime - GetTickCount() + iStart
    Loop While (iInterval >= 0&)
End Sub

Private Sub Form_Load()
    Do
        Call CheckAndLight()
        Call Wait(10)
        DoEvents
    Loop
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -