第 5 章 DLL リファレンス 49
5.2 FbiDaDC.DLL関数リファレンス
DaDataConv
アナログデータの形式を変換します。形式の変換とともにデータに対し平均処理やスムージング処理を行うことができます。
また、ユーザー関数の指定により、任意のデータ変換式を設定することも可能です。(Visual Basic以外)
宣言
INT DaDataConv(
UINT uSrcFormCode, PVOID pSrcData, UINT uSrcSmplDataNum, PDASMPLREQ pSrcSmplReq, UINT uDestFormCode, PVOID pDestData,
PUINT puDestSmplDataNum, PDASMPLREQ pDestSmplReq, UINT uEffect,
UINT uCount,
LPDACONVPROC pfnConv );
パラメータ
uSrcFormCode ppSrcDataが指すデータ領域に格納されているデータ形式をデータ指定識別子にて指
定します。
識別子 データ形式
DA_DATA_PHYSICAL 物理量(電圧[V]または電流[mA])
DA_DATA_BIN8 8bitバイナリ DA_DATA_BIN12 12bitバイナリ DA_DATA_BIN16 16bitバイナリ DA_DATA_BIN24 24bitバイナリ
バイナリデータとは、ボードに対して直接入出力できる形式のデータを指します。
pSrcData 変換元データへのポインタを指定します。
pSrcSmplReq 変換元データのアナログ出力更新条件が格納されている構造体(DASMPLREQ構造体)
へのポインタを指定します。
uSrcSmplDataNum 変換元データ数を指定します。
uDestFormCode pDestDataが指すデータ領域に格納されているデータ形式をデータ指定識別子にて指
定します。
識別子 データ形式
DA_DATA_PHYSICAL 物理量(電圧[V]または電流[mA])
DA_DATA_BIN8 8bitバイナリ DA_DATA_BIN12 12bitバイナリ DA_DATA_BIN16 16bitバイナリ DA_DATA_BIN24 24bitバイナリ
バイナリデータとは、ボードに対して直接入出力できる形式のデータを指します。
pDestData 変換後データへのポインタを指定します。
puDestSmplDataNum 変換後データ数へのポインタを指定します。
pDestSmplReq 変換後データのアナログ出力更新条件を格納するための構造体(DASMPLREQ構造体)
へのポインタを指定します。
uEffect データ変換指定
データ変換の際に平均、スムージング処理を行うかどうかを以下のデータ変換識別子 にて指定します。0を指定すると平均、スムージング処理は行われません。
識別子 内容
0 平均,スムージングを行いません。
DA_CONV_SMOOTH データに対し、スムージングによる変換を行います。
DA_CONV_AVERAGE1 データに対し、単純平均による変換を行います。
DA_CONV_AVERAGE2 データに対し、移動平均による変換を行います。
uCount 平均、スムージングのデータ数
uEffectに0が指定されている場合、uCountは無効です。
lpfnConv ユーザー関数へのポインタ
一通りのデータ変換を終えた後、ユーザー関数により任意の計算を行ってデータに変 換を加えることができます。lpfnConvには変換を行うための関数へのポインタを指定 します。(fnConv関数参照)
ユーザー関数によるデータ変換を行わない場合は、lpfnConvにNULLを指定してくださ い。
戻り値
DaDataConv関数は正常に終了するとDA_ERROR_SUCCESSを返します。それ以外の場合はDA_ERROR_SUCCESS以外の値を返 します。DA_ERROR_SUCCESS以外の値が返された場合については、戻り値一覧を参照してください。
解説
スムージングを行った場合、pSrcDataとpDestDataはデータ件数だけでなく、アナログ出力更新条件にも変化が起こります。例え ば、1kHzで1000件のデータを持っていた場合、これを10件で平均した場合、アナログ出力データ更新レートは100Hz、データは 100件になります。スムージングを行った場合はその逆のことが起こります。
DaWriteFile
指定バッファのアナログ出力データをファイルに書き込みます。
ファイル形式はバイナリとCSVに対応しています。
宣言
INT DaWriteFile(
LPCTSTR pszPathName, PVOID pSmplData, ULONG ulFormCode, ULONG ulSmplNum, ULONG ulChCount );
パラメータ
pszPathName アナログ出力データを格納するデータファイルへのパスを指定します。
pSmplData ファイルに書き込むアナログ出力データが格納されているバッファへのポインタ
を指定します。
ulFormCode バッファ内のアナログ出力データの形式を指定します。
識別子 データ形式
DA_DATA_PHYSICAL 物理量(電圧[V]または電流[mA]) DA_DATA_BIN8 8bitバイナリ
DA_DATA_BIN12 12bitバイナリ DA_DATA_BIN16 16bitバイナリ DA_DATA_BIN24 24bitバイナリ
ulSmplNum アナログ出力データ数を指定します。
ulChCount アナログ出力を行うチャンネル数を1〜そのボードの提供する最大チャンネル数
の範囲で指定します。
戻り値
DaWriteFile関数は正常に終了するとDA_ERROR_SUCCESSを返します。それ以外の場合はDA_ERROR_SUCCESS以外の値を返し ます。DA_ERROR_SUCCESS以外の値が返された場合については、エラーコード一覧を参照してください。
解説
バッファ内のデータ形式のままファイルに書き込みます。
データがバイナリの場合は、バイナリ形式のファイルに、データが物理量の場合はCSV形式のファイルとなります。
fnConv
DaDataConv関数で使用するコールバック関数です。DaDataConv関数のlpfnConvにfnConv関数へのポインタを設定することにより、
データ変換時にfnConv関数を呼び出すことができます。fnConv関数は、データ1点ごとに呼び出されます。
宣言
CONVPROC fnConv(
INT nCh, DWORD dwCount, PVOID lpData );
パラメータ
nCh nChには、lpDataが指すデータのチャンネル番号が渡されます。
dwCount dwCountには、lpDataが指すデータが、データの先頭から何番目にあたるかが渡さ
れます。
lpData
lpDataには、DaDataConv関数により変換されたデータが格納されているデータへ のポインタが渡されます。fnConv関数は、データ1つごとに呼び出されます。lpData が指す位置のデータを変換後のデータ形式の型で読み出し、計算を行った後lpData が指す位置へ変換後データ形式の型と同じ型で書き込んでください。
戻り値
fnConv関数は、値を返しません。
エラーコード一覧
定数 値 内容
DA_ERROR_SUCCESS 0 正常終了
DA_ERROR_NOT_DEVICE 0xC0000001 指定されたデバイスを見つけることができません
DA_ERROR_NOT_OPEN 0xC0000002 システムがデバイスをオープンできません
DA_ERROR_INVALID_HANDLE 0xC0000003 デバイスハンドルが正しくありません
DA_ERROR_ALREADY_OPEN 0xC0000004 すでにOPENしているデバイスをOPENしようとしました
DA_ERROR_NOT_SUPPORTED 0xC0000009 サポートされていない機能です
DA_ERROR_NOW_SAMPLING 0xC0001001 サンプリングを実行中です
DA_ERROR_STOP_SAMPLING 0xC0001002 サンプリングは停止中です
DA_ERROR_START_SAMPLING 0xC0001003 サンプリングを実行できませんでした
DA_ERROR_SAMPLING_TIMEOUT 0xC0001004 サンプリング中においてタイムアウトが発生しました
DA_ERROR_INVALID_PARAMETER 0xC0001021 パラメータが不正です
DA_ERROR_ILLEGAL_PARAMETER 0xC0001022 サンプリング設定が正しくありません
DA_ERROR_NULL_POINTER 0xC0001023 NULLポインタを指定しました
DA_ERROR_SET_DATA 0xC0001024 サンプリングデータの設定ができませんでした
DA_ERROR_FILE_OPEN 0xC0001041 ファイルのオープンに失敗しました
DA_ERROR_FILE_CLOSE 0xC0001042 ファイルのクローズに失敗しました
DA_ERROR_FILE_READ 0xC0001043 ファイルのリードに失敗しました
DA_ERROR_FILE_WRITE 0xC0001044 ファイルのライトに失敗しました
DA_ERROR_INVALID_DATA_FORMAT 0xC0001061 データ形式が無効です DA_ERROR_INVALID_AVERAGE_OR_SM
OOTHING
0xC0001062 平均またはスムージングの指定が正しくありません
DA_ERROR_INVALID_SOURCE_DATA 0xC0001063 データ変換元として指定されたデータが正しくありません DA_ERROR_NOT_ALLOCATE_MEMORY 0xC0001081 メモリが確保できません
DA_ERROR_NOT_LOAD_DLL 0xC0001082 DLLがロードできませんでした
DA_ERROR_CALL_DLL 0xC0001083 DLLの呼び出しに失敗しました