Iniファイルの読み込みを行った際に、共通エラーコードが0xF133、
ボードエラーコード0x**2A(ACL_3300_INVALID_CC / CC信号周期やパルス幅設定の関係がが不正)が発生することがあります。
ボード名 |
ボードエラーコード |
APX-3302シリーズ |
0xF92A (63786) |
APX-3323シリーズ |
0xFA2A (64042) |
APX-3324シリーズ |
0xFB2A (64298) |
APX-3326シリーズ |
0xFC2A (64554) |
※CC信号については以下リンク先を参照ください。
CC信号とは何ですか? なぜCC信号が必要なのですか?上記のエラーコードは、Iniファイル内の以下設定項目に問題がある場合に発生します。
・CC信号の周期設定(USER_SW_TRIGGER_CYCLE)
・CC信号のパルス幅設定(USER_SW_TRIGGER_WIDTH)
具体的には以下の設定条件を満たすことができない場合にエラーが発生します。
[設定条件]CC信号のパルス幅設定 < CC信号の周期設定 また、共通エラーコードが0xF133ではなく0xF10F(ACL_REFLECT_PARAM_ERROR)の場合、AcapReflectParam関数やAcapSetInfo関数で設定の反映を起こった際に上記の設定条件を満たしていないことが考えられます。
その場合は、同様のボードエラーコードが発生しますのでご注意ください。
なお、AcapSetInfo関数を使用してCC信号のパルス幅とCC信号の周期を設定する際に、
以下のソースコードの場合だと赤字のタイミングでエラーが発生します。
[エラー発生例]
※ボードオープンとIniファイルの読み込みは省略します。
//変数宣言
ACAPERRORINFO tErrCode; //エラーコード
int nRet = 0; //戻り値
int nCC_Width = 0; //CC信号パルス幅
int nCC_Cycle = 0; //CC信号周期
//CC信号パルス幅の取得
AcapGetInfo(hDev, nCH, ACL_EXPOSURE, 0, &nCC_Width);
//CC信号周期の取得
AcapGetInfo(hDev, nCH, ACL_EXP_CYCLE, 0, &nCC_Cycle );
//取得した値の表示 nCC_Width=500 nCC_Cycle=1000が返るものとします
printf("CC Width=%d CC Cycle=%d\n", nCCWidth, nCC_Cycle);
nCC_Width = 1500; //CC信号パルス幅を1000usecに変更します
nCC_Cycle = 3000; //CC信号周期を3000usecに変更します
//CC信号パルス幅設定を行います
//この時点でAcapSetInfo関数による設定の反映を行うと
//nCC_Width=1500、nCC_Cycle=1000としてエラーチェックが入るため
//ここでエラーが発生します
nRet = AcapSetInfo(hDev, nCH, ACL_EXPOSURE, 0, nCC_Width);
if(nRet == 0){
//エラーコード取得と表示
AcapGetLastErrorCode( &tErrCode, FALSE );
printf( " Common : 0x%04x\n", tErrCode.dwCommonErrorCode );
printf( " Board : 0x%04x\n", tErrCode.dwBoardErrorCode );
printf( " Extend : 0x%04x\n", tErrCode.dwExtendErrorCode );
printf("\n");
}
//CC信号周期設定を行います
nRet = AcapSetInfo(hDev, nCH, ACL_EXP_CYCLE, 0, nCC_Cycle);
if(nRet == 0){
//エラーコード取得と表示
AcapGetLastErrorCode( &tErrCode, FALSE );
printf( " Common : 0x%04x\n", tErrCode.dwCommonErrorCode );
printf( " Board : 0x%04x\n", tErrCode.dwBoardErrorCode );
printf( " Extend : 0x%04x\n", tErrCode.dwExtendErrorCode );
printf("\n");
}
上記問題を回避するには、各AcapSetInfo関数の第四引数を負数とし仮設定を行います。
最後にAcapReflectParam関数でAcapLib2へ設定の反映を行います。
[ソース修正例]
//CC信号パルス幅設定を行います
//この時点では第四引数を負数に設定し仮設定にします
nRet = AcapSetInfo(hDev, nCH, ACL_EXPOSURE, -1, nCC_Width);
if(nRet == 0){
//エラーコード取得と表示
AcapGetLastErrorCode( &tErrCode, FALSE );
printf( " Common : 0x%04x\n", tErrCode.dwCommonErrorCode );
printf( " Board : 0x%04x\n", tErrCode.dwBoardErrorCode );
printf( " Extend : 0x%04x\n", tErrCode.dwExtendErrorCode );
printf("\n");
}
//CC信号周期設定を行います
//CC信号パルス幅設定と同様にここでも仮設定とします
nRet = AcapSetInfo(hDev, nCH, ACL_EXP_CYCLE, -1, nCC_Cycle);
if(nRet == 0){
//エラーコード取得と表示
AcapGetLastErrorCode( &tErrCode, FALSE );
printf( " Common : 0x%04x\n", tErrCode.dwCommonErrorCode );
printf( " Board : 0x%04x\n", tErrCode.dwBoardErrorCode );
printf( " Extend : 0x%04x\n", tErrCode.dwExtendErrorCode );
printf("\n");
}
//設定の反映
//全ての設定が終わったら最後にAcapReflectParam関数で設定の反映を行います
nRet = AcapReflectParam(hDev, nCH);
if(nRet == 0){
//エラーコード取得と表示
AcapGetLastErrorCode( &tErrCode, FALSE );
printf( " Common : 0x%04x\n", tErrCode.dwCommonErrorCode );
printf( " Board : 0x%04x\n", tErrCode.dwBoardErrorCode );
printf( " Extend : 0x%04x\n", tErrCode.dwExtendErrorCode );
printf("\n");
}