コールバックルーチンの関数登録の流れ
・コールバックルーチンの関数プロトタイプ定義の確認
・コールバックルーチンの作成
・コールバックルーチンの設定
以下、アナログ入力のコールバック関数の使い方の説明しています。
これらの具体的なコーディング内容につきましては、サンプルプログラムをご参照ください。
アナログ出力、カウンタ、タイマ のコールバック関数については、caio.pyファイル中の記述を参照した上で、プロトタイプ関数を読替え参考にしてください。
コールバック関数の関数プロトタイプ定義の確認
Pythonでコールバック関数を扱うには、関数プロトタイプの定義が必要です。
各コールバックルーチン用の関数プロトタイプ宣言は、caio.pyファイル中に記述されています。
関数プロトタイプの内容を確認ください。
アナログ入力の場合
PAIO_AI_CALLBACK = ctypes.WINFUNCTYPE(None,
ctypes.c_short,
ctypes.c_short, ctypes.wintypes.WPARAM,
ctypes.wintypes.LPARAM,
ctypes.c_void_p)
コールバック関数の作成
コールバック関数は次の書式になります。関数名は任意です。
アナログ入力の場合
def CallBackProc(dev_id, AiEvent, wparam, lparam, param):
・・・・・
retrun
pai_callback = caio.PAIO_AI_CALLBACK(CallBackProc)
コールバック関数の設定
AioInit関数で取得したaio_idを利用し、作成したコールバックルーチンを以下のように設定します。
アナログ入力の場合
lret.value = caio.AioSetAiCallBackProc(aio_id, pai_callback, caio.AIE_END | caio.AIE_OFERR | caio.AIE_SCERR | caio.AIE_ADERR, ctypes.byref(CallBackFlag))