} file.Write(str,str.GetLength()); } file.Close(); } AfxMessageBox("读取数据完成!"); } ///////////////////////这是第二段代码 void Getdata::OnBjssd() { // TODO: Add your control notification handler code here UpdateData(true); int i,j,x1[4][3000],x2[4][3000],x0[4][3000]; //////通道1的 int n=0; int x[4][50],v[4][3000]; int k; for(k=0;k<1;k++) for (i=0;i<m_LineNumber;i++) { for(j=m_left;j<m_right;j++) if(T1[i][j]==m_gray)//这里的T1值就出问题了? { x[k][n]=j; n++;
///读取数据的代码,调试是正确的
void Getdata::OnButtonReadData()
{
// TODO: Add your control notification handler code here
int i,j,n;
CFile file;
CFileStatus Status;
UpdateData(true);//把Edit框里的数据更新 //第一行多32数据必须单独处理
char * filename = (LPSTR)(LPCTSTR)m_filename;
//以只读模式打开文件
if(!file.GetStatus(filename,Status))
{
AfxMessageBox("没有此文件,强制退出!");
file.Abort();//退出
}
file.Open(filename,CFile::modeRead|CFile::typeBinary); j=0;n=0;//第一次采集
for(i=0;i<8224;i++)
{
file.Read(&a[j][i],1);
if(i>=32) ////////////多出32个数据
{
b[j][n]=a[j][i];
n++;
} }
for(j=1;j<m_LineNumber;j++) //两个循环把数据文件的数据存到了数组中去
{
{ n = 0;
for(i=0;i<8192;i++)
{
file.Read(&a[j][i],1);
b[j][n]=a[j][i]; //把四个通道数放入数组中
n++;
}
}
} file.Close();
for(int m=0;m<m_LineNumber;m++)
{
///分到四个数组中去。
int begin = 0;//必须放在这个位置
for ( j=0; j<TDS; j++) //用有个循环来控制 四通道的
{
n=0;
for(i=begin;i<8192;i=i+4)
{
if(j==0)
T1[m][n]=b[m][i];
else if(j==1)
T2[m][n]=b[m][i];
else if(j==2)
T3[m][n]=b[m][i];
else if(j==3)
T4[m][n]=b[m][i];
n++;
}
begin++;//这个不能少。
}
} /////////把数据写入四个文件中
char filename2[20];
int k,l;
CString str="\r\n";//换行
CString sz;
for(j=0;j<TDS;j++)
{ sprintf(filename2,"TD%d.txt",j+1);//给写文件命名,以通道数命名的。
file.Open(filename2,CFile::modeCreate|CFile::modeWrite);
for(i=0;i<2048;i++)
{
sz.Format("%4d ",i+1);
file.Write(sz,sz.GetLength());
l=sz.GetLength();
for(k=0;k<m_LineNumber;k++)
{
if(j==0)
{
sz.Format("%3d ",T1[k][i]);
file.Write(sz,sz.GetLength());
}
if(j==1)
{
sz.Format("%3d ",T2[k][i]);
file.Write(sz,sz.GetLength());
}
if(j==2)
{sz.Format("%3d ",T3[k][i]);
file.Write(sz,sz.GetLength());}
if(j==3)
{sz.Format("%3d ",T4[k][i]);
file.Write(sz,sz.GetLength());}
}
file.Write(str,str.GetLength());
} file.Close(); }
AfxMessageBox("读取数据完成!");
}
///////////////////////这是第二段代码
void Getdata::OnBjssd()
{
// TODO: Add your control notification handler code here
UpdateData(true);
int i,j,x1[4][3000],x2[4][3000],x0[4][3000]; //////通道1的
int n=0;
int x[4][50],v[4][3000];
int k;
for(k=0;k<1;k++)
for (i=0;i<m_LineNumber;i++)
{
for(j=m_left;j<m_right;j++)
if(T1[i][j]==m_gray)//这里的T1值就出问题了?
{
x[k][n]=j;
n++;
}
x1[k][i]=x[k][0];
x2[k][i]=x[k][n];
x0[k][i]=(x1[k][i]+x2[k][i])/2;//获得重心的像素坐标
AfxMessageBox(x0[k][i]);
}}