
数ヶ月前からVBを始め、プログラムを組んでいる者です。
VB6.0を使用しています。
I/0ボードを用いてロボットの信号を受け取れるような環境を作りました。
『Do Until~Loop』処理で、信号を監視させているのですが、
プログラムを実行させるとCPU=100%になり、フリーズします。
『Do Until~Loop』処理の代わりになるような処理はないでしょうか?
以下に少し詳しく書き込んでおきますので、
よろしくお願いします。
信号Aは1(ON)と0(OFF)のどちらかの信号を常に出しています。
(タイミングは機械が制御しています)
信号Bも1(ON)と0(OFF)のどちらかの信号を常に出しています。
(タイミングはランダムです)
<目的>
信号Aが1のとき、信号Bの信号を受け取り、
信号Aが0のとき、信号Bの信号は受け取りません。
<アルゴリズム>
(1)信号Aが1になるまで『Do Until~Loop』処理を行う
待機させる
(2)信号Aが0になるまで『Do Until~Loop』処理を行う
その処理の中で、信号Bの信号を常に監視させる
No.1ベストアンサー
- 回答日時:
監視にDo-Loop構文を使っても構いませんがWindowsのメッセージループを止めない工夫をするようにしましょう
メッセージループとは ボタンのクリックやウィンドウの再描画などOSが処理している部分です
ループ中に DoEventsめっそどを適宜実行するようにしてみましょう
たとえば 10回ループを回ったら1回DoEventsを実行するようにするとか
dim nCnt as Integer
nCnt = 0
Do Until 終了条件
監視処理
nCnt = nCnt + 1
if nCnt > 10 then
DoEvents
nCnt = 0
end if
loop
といった具合です
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
ACCESS側からEXCELの書式を設定...
-
VBSで応答不要のメッセージボッ...
-
エクセルVBAでクリップボード内...
-
Excel VBA で処理中断(DoEvents...
-
メッセージボックスのボタン名変更
-
Application.ScreenUpdating=Fa...
-
c#でボタンのアクションが終わ...
-
VB Loopを一時停止し再開あるい...
-
「shift」ボタンが押された時。
-
エディットコントロールへの表示
-
【MFC】イベントの無効化について
-
VBA、UserFormを前面に出力して...
-
ASP.NETでのメッセージ画面を出...
-
Excel VBA 実行中に一瞬フリー...
-
VBA kernel32 の意味
-
PostMessageの連続送信
-
Stack around the variable 'xx...
-
「キャンセル」ボタン付きの処...
-
VB6でフォームをリロードしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
VBA kernel32 の意味
-
メッセージボックスのボタン名変更
-
ACCESS側からEXCELの書式を設定...
-
VBSで応答不要のメッセージボッ...
-
VBA、UserFormを前面に出力して...
-
【C#】 あるイベントから別イ...
-
Excel VBA で処理中断(DoEvents...
-
PostMessageの連続送信
-
ボタンが押された事を検知する...
-
Application.ScreenUpdating=Fa...
-
エクセルVBAでクリップボード内...
-
VB Loopを一時停止し再開あるい...
-
起動後直に実行するコードはど...
-
DirectX環境下での方向キー同時...
-
Excel VBA 実行中に一瞬フリー...
-
OSシャットダウン時の常駐アプ...
-
マウスのクリックを無視したい
-
エクセルVBAで
-
メッセージボックスの表示につ...
おすすめ情報