1

さまざまな状況からバッファから特定の文字列を取得するために、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 秒に設定できましたが、それでは十分ではありません。

4

1 に答える 1