自分でプログラムをADsamplingData関数でやってみたのですがデータが指定の保存場所に出力されません。
CSV形式で保存するプログラムを作ったつもりです。
保存場所はEドライブのEdataの中に出力されるようにしたいです。
ちなみにプログラムはこちらです。
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);
}
AdGetSamplingData(hDeviceHandle,&wSmplData[0][0], &ulSmplNum );
outp = fopen("E\\Edata\\record.csv","a");
fprintf(outp,"%f\n",wSmplData);
fclose(outp);
}
}
}
何が違うのですか?
dビルドはできるのですが、プログラムを動かしてもファイルができません。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
AdOpen ("FBIAD1");って使ってるのはインターフェースのADボード?
無限サンプリングにもなってないソースに見えますが今後の話?
(ちょっと前に似た件で質問立ててた人?)
まあ上は置いといて
転記ミスでないのならファイルができないのは
>outp = fopen("E\\Edata\\record.csv","a");
が間違っているからではないでしょうか
↑だとプログラム動かした時のカレントフォルダのE\Edata にファイルを書こうとします
E:\\Edata\\record.csv にしてもできませんか?
できたとしてもほかの回答者書かれているようにまともなデータは書き込まれません
fprintf(outp,"%f\n",wSmplData[i][p]);
等のようにして配列分(ループ)書き込み処理してください
それでもできないなら E:\Edata フォルダがないとか
そもそもそこのロジックが走っていないとか
※きちんとソース見たわけではありません
この回答への補足
インターフェイスのADボードを使用しています。前も投稿したものです。
E:\\Edata\\record.csv の:がぬけていたので直しましたがファイルができません。
ちゃんとEドライブの下にEdataをおいています。
ロジックとはどうしたら通りますか?
fprintf(outp,"%f\n",wSmplData[i][p]);はiとpを
forでfor(i=0;i<=94;++i)のようにすればいいですか?
int nRet;
HANDLE hDeviceHandle;
ADSMPLREQ SmplConfig;
ADBOARDSPEC BoardSpec;
ULONG ulSmplNum;
FILE *outp;
WORD wSmplData[20000];
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);
}
AdGetSamplingData(hDeviceHandle,&wSmplData[0], &ulSmplNum );
AdOutputDO(hDeviceHandle,1);
outp = fopen("E:\\Edata\\record.csv","a");
fprintf(outp,"%f\n",wSmplData[0]);
fclose(outp);
}
}
}
ちなみに直したプログラムがこちらです。
No.2
- 回答日時:
≻WORD wSmplData[20000][2];
≻fprintf(outp,"%f\n",wSmplData);
無理です、アドレスを浮動少数点数として出力できません、出力がないのではなく変になるだけですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/09 10:33
- PHP php エラー 2 2022/10/23 16:43
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルコマンドの 2>&1 とはど...
-
ファイル出力の場所を指定
-
Acccess レポートをグループ別...
-
VBAでエクセルをCSVに変換時
-
VC++でUTF-8のファイルを出力し...
-
VBA でメモ帳へ保存する際の保...
-
Accessでのレポート印刷待機方法
-
pcap形式データをテキストへ抽出
-
VBSでEXCEL⇒CSV変換で日付の書...
-
C言語のプログラムが異常終了し...
-
CSV形式に変換
-
C言語で16進数をテキスト出力し...
-
1行ずつではなくまとめてファイ...
-
出力をExcelにすることは可能??
-
(VBA)書式が変更されてしまい...
-
gnuplotでreplotできない??
-
エクセルVBA→シート名でCSV出力...
-
VCでの外部アプリ操作
-
コンソールの出力をパイプでダ...
-
サーバー上でのtxtをPDFに変換
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
ファイル出力の場所を指定
-
VC++でUTF-8のファイルを出力し...
-
テキストファイルに改行コード...
-
シェルコマンドの 2>&1 とはど...
-
Acccess レポートをグループ別...
-
Wordマクロで指定したフォルダ...
-
二次元配列をクリップボードに...
-
ファイル形式またはファイル拡...
-
CreateProcess関数と実行後の戻...
-
fortranのtxtファイル出力書式...
-
サウンド出力のデバイスを選択...
-
VBA でメモ帳へ保存する際の保...
-
1行ずつではなくまとめてファイ...
-
VBSでEXCEL⇒CSV変換で日付の書...
-
C++ fprintf_sの使い方がわからん
-
ファイルの文字コードをUTF-8に...
-
pLaTeX の EPSファイル読み込み...
-
AccessVBA複数レポート条件毎に...
-
フォルダにあるPDF情報の抽出(VBA)
おすすめ情報