第 5 章 DLLリファレンス 51
5.2 FbiDaDC.DLL関数リファレンス
DaDataConv
アナログデータの形式を変換します。形式の変換とともにデータに対し平均処理やスムージング処理を行うことができます。
また、ユーザー関数の指定により、任意のデータ変換式を設定することも可能です。(Visual Basic以外)
宣言
Declare Function DaDataConv Lib "FbiDaDC.DLL" (ByVal uSrcFormCode As Long, ByRef pSrcData As Long, ByVal uSrcSmplDataNum As Long,ByRef pSrcSmplReq As DASMPLREQ,ByVal uDestFormCode As Long, ByRef pDestData As Any, ByRef puDestSmplDataNum As Long, ByRef pDestSmplReq As DASMPLREQ, ByVal uEffect As Long, ByVal uCount As Long, ByVal pfnConv As Long ) As Long
パラメータ
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に対応しています。
宣言
Declare Function DaWriteFile Lib "FbiDaDC.DLL" (ByVal pszPathName As String, ByVal pSmplData As Any, ByVal ulFormCode As Long, ByVal ulSmplNum As Long, ByVal ulChCount As Long ) As Long
パラメータ
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点ごとに呼び出されます。
宣言
Sub fnConv(ByVal nCh As Long, ByVal dwCount As Long, ByRef lpData As Any) パラメータ
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の呼び出しに失敗しました