マンガでよめる痔のこと・薬のこと

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Then
PICOCX1.Outp PortB, 7, High
PICOCX1.Outp PortB, 4, High
End If
If KeyCode = 40 Then
PICOCX1.Outp PortB, 6, High
PICOCX1.Outp PortB, 5, High
End If
If KeyCode = 37 Then
PICOCX1.Outp PortB, 7, High
PICOCX1.Outp PortB, 5, High
End If
If KeyCode = 39 Then
PICOCX1.Outp PortB, 6, High
PICOCX1.Outp PortB, 4, High
End If
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Then
PICOCX1.Outp PortB, 7, Low
PICOCX1.Outp PortB, 4, Low
End If
If KeyCode = 40 Then
PICOCX1.Outp PortB, 6, Low
PICOCX1.Outp PortB, 5, Low
End If
If KeyCode = 37 Then
PICOCX1.Outp PortB, 7, Low
PICOCX1.Outp PortB, 5, Low
End If
If KeyCode = 39 Then
PICOCX1.Outp PortB, 6, Low
PICOCX1.Outp PortB, 4, Low
End If
End Sub
というプログラムですがこれがもしPICOCX1.Outp PortB, 4, Lowなどが実行できないとエラーとして返ってきてしまいます。このときエラー箇所をもう一度実行する方法はあるのでしょうか?
お願いします。こちらの環境はVB6.0です。

A 回答 (2件)

サブプロシージャを使用してこういうのはどうでしょうか?



【用意するサブプロシージャ】
Private Sub ExecOutp( PICOCX1 , param1 , param2 , param3 )
On Error Resume Next
'実行
PICOCX1.Outp param1 , param2 , param3
'エラーが発生していたら再起呼び出し
If Err.Number <> 0 Then Call ExecOutp( PICOCX1 , param1 , param2 , param3 )
End Sub

呼び出し側は
Call ExecOutp( PICOCX1 , PortB , 6 , Low )
こんな感じで呼び出します。
    • good
    • 0

単純に「on error goto」でエラー処理に飛ばして「resume」で戻って・・・ということではダメですか?




蛇足かもしれませんが・・・

このocxってマイコン制御用の奴ですよね?
一旦出力に失敗したものを再度出力しても、結局再びエラーになってしまいませんか?
ターゲットがPICマイコンならば、ポートの出力状態を読み込むことが出来るので、出力した内容とそれを読み込んだ内容を比較して、偽であった場合にリトライする、というような処理が必要だと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング