さまざまな状況からバッファから特定の文字列を取得するために、PRACTICE Lauterbach スクリプトを作成しました。
バッファーを取得するさまざまな場所に 4 つのブレークポイントを配置します。
あたかも割り込みサービス ルーチンであるかのように、ブロックしない方法で情報を取得したかったのです。このために、次のように GLOBALON コマンドを使用しました。
GLOBALON PBREAK GOSUB BB_HIT_CALLBACK
そして、BB_HIT_CALLBACK 内に、4 つのブレークポイントのそれぞれにサービス ルーチンを挿入しました。
BB_HIT_CALLBACK:
IF (sYmbol.EXIST(BREAK_LABEL1))
(
IF (REGISTER(pc)==ADDRESS.offset(BREAK_LABEL1))
(
GOSUB ISR1
)
)
IF (sYmbol.EXIST(BREAK_LABEL2))
(
IF (REGISTER(pc)==ADDRESS.offset(BREAK_LABEL2))
(
GOSUB ISR1
)
)
IF (sYmbol.EXIST(BREAK_LABEL3))
(
IF (REGISTER(pc)==ADDRESS.offset(BREAK_LABEL3))
(
GOSUB ISR1
)
)
IF (sYmbol.EXIST(BREAK_LABEL4))
(
IF (REGISTER(pc)==ADDRESS.offset(BREAK_LABEL4))
(
GOSUB ISR1
)
)
RETURN
一方、通常の実行では、単純な無限ループを配置しました。
WHILE TRUE()
(
If (!STATE.RUN())
(
Go
)
)
ENDDO
これにより、プログラムがループ状態になり、GLOBALON PBREAK コマンドによってのみ中断されます。このループの実行を終了するツールバー ボタンを使用できるようにしたいと考えていますが、実行中、スクリプトはブレークポイントにのみ応答し、UI 要素は無視されます。
UI要素からループの実行を停止するにはどうすればよいですか?
秒単位の読み取りとタイムアウトを 60 秒に設定できましたが、それでは十分ではありません。