Hook


フック関数,またはコールバック関数を登録します。

[指定形式]

Hook(scriptFile)

[引数]

引数

説明

scriptFile

フック関数,またはコールバック関数が定義されたスクリプト・ファイルを指定します。

[戻り値]

なし

[詳細説明]

-

scriptFileを読み込んで,スクリプト・ファイルに宣言されているフック関数,またはコールバック関数を登録します。
フック関数,コールバック関数以外の関数が宣言されていても,問題はありません。
なお,フック関数,コールバック関数は,スクリプト・ファイルの終了時に登録します。

-

フック関数が宣言されている場合は,CS+のイベント発生後に呼び出されます。

注意

フック関数の実行が完了するかreturnしなければ,CS+のイベント処理は完了しません。

-

フック関数の種類を以下に示します。
なお,フック関数には引数はありません。

フック関数

イベント

BeforeBuild

ビルド開始前

BeforeDownload

ダウンロード前

AfterDownload

ダウンロード後

AfterCpuReset

CPUリセット後

BeforeCpuRun

実行開始前

AfterCpuStop

ブレーク後

AfterActionEvent

アクション・イベント後(Printfイベントのみ)

AfterInterrupt

指定した例外要因コードの受付後

(debugger.Interrupt.Notificationで設定した例外要因コードが対象)

AfterTimer

タイマ割り込み発生後

(debugger.Interrupt.SetTimerで設定したタイマ割り込みが対象)

スクリプト・ファイルの記述例

def BeforeDownload():
  # ダウンロード前に行いたい処理を追記

 

-

コールバック関数が宣言されている場合は,CS+のイベント発生後に呼び出されます。

-

コールバック関数名は,“pythonConsoleCallback”で固定です。
なお,コールバック関数の引数は,コールバック要因を示します。

引数の値

コールバック要因

10

イベント登録後

11

イベント削除後

12

実行の開始前

13

ブレーク後

14

CPUリセット後

18

デバッグ・ツールのプロパティ変更後

19

ダウンロード後

20

メモリ,またはレジスタ変更後

21

アクション・イベント後(Printfイベントのみ)

30

ビルド前

50

指定した例外要因コード発生後

(debugger.Interrupt.Notificationで指定した例外要因コードの受付後)

63

XRunBreak,またはタイマ割り込みで指定した時間経過後

注意 1.

フック関数,およびコールバック関数は,以下の操作で初期化されます。

-

プロジェクト・ファイルの読み込み

-

プロジェクト・ファイルの新規作成

-

アクティブ・プロジェクトの変更

-

デバッグ・ツールの切り替え

-

Python初期化

注意 2.

フック関数,およびコールバック関数内では無限ループする処理は含めないでください。

注意 3.

フック関数,およびコールバック関数内では以下の関数を実行しないでください。

debugger.ActionEvent, debugger.Breakpoint, debugger.Connect, 
debugger.Disconnect, debugger.Download, debugger.Erase, debugger.Go, 
debugger.Map, debugger.Next, debugger.Reset, debugger.ReturnOut, 
debugger.Run, debugger.Step, debugger.Stop

注意 4.

フック関数(AfterTimer),およびコールバック関数(引数:63)内で,別の条件のdebugger.XRunBreak.Set,またはdebugger.Interrupt.SetTimerを使用することはできません。

例 1.

フック関数の場合,以下のような指定は行わないでください。

def AfterTimer():
  debugger.Interrupt.SetTimer(1, TimeType.Ms, True)
  debugger.XRunBreak.Set(1, TimeType.Ms, True)

例 2.

コールバック関数の場合,以下のような指定は行わないでください。

def pythonConsoleCallback(Id):
  if Id = 63:
    debugger.XRunBreak.Delete()
    debugger.Interrupt.SetTimer(1, TimeType.Ms, True)
    debugger.XRunBreak.Set(1, TimeType.Ms, True)

注意 5.

フック関数がAfterTimer,AfterInterruptの場合,およびコールバック関数の引数が50,または63の場合は,以下の関数のみ使用してください。

debugger.Address,debugger.GetIORList,debugger.Interrupt,debugger.Memory,
debugger.Register,debugger.Watch,debugger.XRunBreak

 

ただし,debugger.Interrupt.SetTimer,debugger.XRunBreakは,フック関数がAfterTimer,またはコールバック関数の引数が63の場合は使用できません。

[使用例]

>>>Hook("E:/TestFile/TestScript/testScriptFile2.py")