キーワードから探す

※スペースで区切って複数検索が可能です。

カテゴリで絞り込む

よく検索されるキーワード

ID:296
作成日: 2022/02/28

Iniファイルの読み込みを行ったところCommon=0xF133、Board=0x**2Aが発生します。原因は何でしょうか?

カテゴリ SDK-AcapLib2 AIPTool
対象製品 APX-3302シリーズ APX-3323シリーズ APX-3324シリーズ APX-3326シリーズ

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"); }
この内容は参考になりましたか?
ご回答いただきまして、ありがとうございます。
今後の参考にさせていただきます。
ご意見・ご感想、ありがとうございます。

関連するご質問

Now Loading...

Now Loading...