// DataManipulation.cpp: implementation of the CDataManipulation class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "DataManipulation.h"
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern CString gTheAppPath;
CDataManipulation::CDataManipulation()
{
}
CDataManipulation::~CDataManipulation()
{
}
bool CDataManipulation::SaveUsbdata(double *dbUsbdata, CString strPath)
{
if(strPath.IsEmpty())
return false;
fstream file;
file.open(strPath,ios::out|ios::in|ios::binary);//以二进制读写方式打开
thead t; //头结构体
if(file.read((char*)&t,sizeof(t))) //读取头数据
t.lIndex = t.lIndex+1; //数据个数累加
else //写入初始化头数据
{
t.lIndex = 1;
file.seekg(0,ios::beg); //游标移到文件头
file.write((char*)&t,sizeof(t));
}
CString str;
int len =sizeof(double)*t.nchNo;
file.seekg(0,ios::end); //游标移到文件尾
if(file.write((char*)dbUsbdata,len)) //写入一组数据
{
//CTool tool;
//str.Format("IN_2:%.2f",dbUsbdata[0]);
//tool.SvaeTimehexLog(str);
}
file.seekg(0,ios::beg); //游标移到文件头
file.write((char*)&t,sizeof(t)); //重写新的头数据
file.close();
return true;
}
bool CDataManipulation::ReadUsbData()
{
CFileDialog dlg(true,"rda", NULL, OFN_OVERWRITEPROMPT | OFN_PATHMUSTEXIST, "*.rda|*.rda||");
dlg.m_ofn.lpstrTitle="选择回放数据文件路径";
if(dlg.DoModal()==IDOK)
{
CString strTemp,strPath,strIn;
strPath=dlg.GetPathName();
CTool tool;
fstream file;
file.open(strPath,ios::in|ios::binary);//以二进制读取方式打开
thead t; //头数据体
file.read((char*)&t,sizeof(t)); //提取文件头里的ID和数据数量
double *dbValue;
dbValue = new double[t.nchNo];
int len =sizeof(double)*t.nchNo;
for(long I=0;I<t.lIndex;I++)
{
if(file.read((char*)dbValue,len))
{
strIn.Format("%d条 %d %d ",I+1,t.lIndex,len);
for(int j=0;j<t.nchNo;j++)
{
strTemp.Format("(%d) %.2f",j+1,dbValue[j]);
strIn=strIn+strTemp;
}
tool.SvaeTimehexLog(strIn);
}
}
delete [] dbValue;
file.close();
return true;
}
return false;
}
bool CDataManipulation::NewFile(thead t, CString strFilePath)
{
bool bIs=false;
fstream file;
file.open(strFilePath,ios::trunc|ios::out|ios::in|ios::binary);
if(!file)
abort();
if(file.write((char*)&t,sizeof(t)))
bIs=true;
file.close();
return bIs;
}
- 1
- 2
- 3
- 4
- 5
前往页