dポイントプレゼントキャンペーン実施中!

ADボードで無限サンプリングをおこないたいのですが。
作成したCSVファイルにデータが1行しか作成されません。

何が問題でしょうか?

ちなみにプログラムはこちらです。

int nRet;
HANDLE hDeviceHandle;
ADSMPLREQ SmplConfig;
ADBOARDSPEC BoardSpec;
ULONG ulSmplNum;
FILE *outp;
WORD wSmplData[20000][2];

hDeviceHandle = AdOpen ("FBIAD1");
if (hDeviceHandle == INVALID_HANDLE_VALUE){
AfxMessageBox("デバイスのオープンに失敗しました",MB_OK, 0);
return;
}
else{
nRet = AdGetSamplingConfig(hDeviceHandle,&SmplConfig);
if(nRet != AD_ERROR_SUCCESS){
AfxMessageBox("サンプリング設定情報の読み出しに失敗しました",MB_OK, 0);
}
nRet = AdGetDeviceInfo(hDeviceHandle, &BoardSpec );
if(nRet !=AD_ERROR_SUCCESS){
AfxMessageBox("デバイスの情報取得にに失敗しました", MB_OK, 0);
}
{
SmplConfig.SmplChReq[0]. ulChNo = 2;
SmplConfig.ulSmplNum = 20000;
SmplConfig.ulTrigMode = AD_ETERNITY;

SmplConfig.fSmplFreq = 20000;
SmplConfig.SmplChReq[0]. ulRange = AD_5V;

nRet = AdSetSamplingConfig(hDeviceHandle,&SmplConfig );
if(nRet != AD_ERROR_SUCCESS){
AfxMessageBox("サンプリング条件設定に失敗しました",MB_OK, 0);
}


/*nRet = AdStartSampling(hDeviceHandle, FLAG_SYNC);
if(nRet != AD_ERROR_SUCCESS){
AfxMessageBox("CSVファイル作成に失敗しました", MB_OK, 0);
}*/
/*
nRet = AdStartFileSampling( hDeviceHandle, "DATA.CSV", FLAG_CSV );
if(nRet != AD_ERROR_SUCCESS){
AfxMessageBox("CSV ファイル作成に失敗しました", MB_OK, 0);
}*/
AdGetSamplingData(hDeviceHandle,&wSmplData[0][0], &ulSmplNum );
AdOutputDO(hDeviceHandle,1);

outp = fopen("E:\\Edata\\record.csv","a");
fprintf(outp,"%f\n",wSmplData[0][0]);

fclose(outp);

// 終了処理.
nRet = AdClose( hDeviceHandle );
if (nRet != AD_ERROR_SUCCESS) {
AfxMessageBox("デバイスのクローズに失敗しました");
}
}
}
}

A 回答 (2件)

>作成したCSVファイルにデータが1行しか作成されません。


>何が問題でしょうか?

>WORD wSmplData[20000][2];
wSmplDataは20000×2こWORDの値があります。

>outp = fopen("E:\\Edata\\record.csv","a");
>fprintf(outp,"%f\n",wSmplData[0][0]);
>fclose(outp);
wSmplData[0][0]を一個しか出力していません、残りの39999個は出力されていません。

>fprintf(outp,"%f\n",wSmplData[0][0]);
WORDの値を%fでは出力できません。
    • good
    • 0

うぅ~ん, ちゃんと足元を固めた方がいいと思うんだけどなぁ....



このプログラムで「1行しか作成されない」のは当然. だって, 「1行しか出力していない」んだもの.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!