//
//打开配置文件 config.ini
//
void CHIDANALASISVS08Dlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
PROCESS_INFORMATION pi;
ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));
STARTUPINFO si;
ZeroMemory (&si, sizeof (STARTUPINFO)); //初始化
si.cb = sizeof (STARTUPINFO);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESHOWWINDOW;
//注意
CString cmd;
cmd.Format("C://WINDOWS//notepad.exe %s",IniPath);
//wchar_t szCmdline[] = _T("C://WINDOWS//notepad.exe D://test.txt");
if (::CreateProcess (NULL, (LPSTR)(LPCSTR)cmd, NULL,
NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi)) {
}
}
//把转换后的数据保存到csv文档
void CHIDANALASISVS08Dlg::OnBnClickedButtonSave()
{
// TODO: 在此添加控件通知处理程序代码
CString val;
CString DataVal[512];
int loop1,loop2;
m_editDataNum.GetWindowTextA(val);
int linesNum,rowsNum,dataNum;
linesNum = dataArr.GetCount() ; //lines
rowsNum = oneLineDatas[0].GetCount(); //rows
dataNum = _ttoi(val);
CString des;
CString content;
CString sFile = LXFile::GetModuleDir() +"\\export"+ LXTime::GetTimeStrWithMilliseconds()+ ".csv";
CStdioFile file;
for(loop1=0;loop1<linesNum;loop1++)
{
content="";
if(TransMode==1)
{
for(loop2=0;loop2<dataNum;loop2++)
{
des.Format("%d,",dataValusArr[loop1][loop2]);
content=content+des;
}
}else{
for(loop2=0;loop2<64;loop2++)
{
des.Format("%d,",dataValusArr[loop1][loop2]);
content=content+des;
}
}
content=content+"\n";
if(file.Open(sFile, CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate))
{
file.SeekToEnd(); // 移动文件指针到末尾
file.WriteString(content);
file.Close();
}
}
AfxMessageBox( "数据导出完成!", MB_OK, 0 );
ShellExecute(NULL, _T("open"), sFile, NULL, NULL, SW_SHOW);
}
//
//
//假设任意4字节为浮点数 并算出float值 以此类推
//
void CHIDANALASISVS08Dlg::OnBnClickedButtonAuto()
{
// TODO: 在此添加控件通知处理程序代码
CString val;
CString DataVal[512];
m_editDataNum.GetWindowTextA(val);
TransMode=2;
int linesNum,rowsNum,dataNum;
linesNum = dataArr.GetCount() ;
rowsNum = oneLineDatas[0].GetCount();
dataNum = _ttoi(val);
TRACE("每条记录数据数量:%d\r\n",dataNum);
int cnt1,cnt2,var;
CString ValStr;
//long lnumber,lnumber2,lnumber3;
for(cnt1=0;cnt1<linesNum;cnt1++) //data records / lines 2 总共数据行数
{
//新插入的数据在下面
CString infoDes;
int nIndex = m_ListValues.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex; //行数
lvItem.iSubItem = 0;
lvItem.pszText = "HEAD"; //第一列
//在最后一行插入记录值.
m_ListValues.InsertItem(&lvItem);
int lnumber=0,lnumber2=0,lnumber3=0;
short SensorData=0;
int buf[10];
for(var=0;var<52;var++) //data numbers 2 需要进行多少次数据转换 除去数据帧头部 还有60字节 60-4=56
{
//高字节 在后 从第九个字节开始
int bytes;
for (bytes=0;bytes<8;bytes++)
{
buf[bytes]=ChangeNum(oneLineDatas[cnt1].GetAt(var+4+bytes),2) ;
TRACE("buf[%d]=%ld,",bytes,buf[bytes]);
}
TRACE("\r\n " );
dataValusArr[cnt1][var*3]= ((buf[0]<<13) + (buf[1]<<5) + (buf[2]>>3)) * 1.0;
dataValusArr[cnt1][var*3+1]= ((buf[2]&0x07) <<18 + (buf[3]<<10) + (buf[4]<<2) + (buf[5]&0xc0)>>6)*1.0;
dataValusArr[cnt1][var*3+2]= ((buf[5]&&0x3f)<<15 + (buf[6]<<7) + (buf[7]>>1))*1.0;
//插入其它列
infoDes.Format("%d",dataValusArr[cnt1][var]);
m_ListValues.SetItemText(nIndex,var+1,infoDes);
}
}
// CString val;
//CString DataVal[512];
//m_editDataNum.GetWindowTextA(val);
// TransMode=2;
//int linesNum,rowsNum,dataNum;
//linesNum = dataArr.GetCount() ;
//rowsNum = oneLineDatas[0].GetCount();
//dataNum = _ttoi(val);
//TRACE("每条记录数据数量:%d\r\n",dataNum);
//int cnt1,cnt2,var;
//CString ValStr;
//
// long lnumber,lnumber2,lnumber3;
//
//for(cnt1=0;cnt1<linesNum;cnt1++) //data records / lines 2 总共数据行数
//{
// //新插入的数据在下面
// CString infoDes;
// int nIndex = m_ListValues.GetItemCount();
// LV_ITEM lvItem;
// lvItem.mask = LVIF_TEXT ;
// lvItem.iItem = nIndex; //行数
// lvItem.iSubItem = 0;
// lvItem.pszText = "HEAD"; //第一列
// //在最后一行插入记录值.
// m_ListValues.InsertItem(&lvItem);
// for(var=0;var<56;var++) //data numbers 2 需要进行多少次数据转换 除去数据帧头部 还有60字节 60-4=56
// {
// if(endianMode==1) //big endian 高字节在前 低字节在后
// {
// ValStr.Format("0x%02s%02s%02s%02s",oneLineDatas[cnt1].GetAt(var+4),oneLineDatas[cnt1].GetAt(var+5),oneLineDatas[cnt1].GetAt(var+6),oneLineDatas[cnt1].GetAt(var+7));
//
// }else{
// ValStr.Format("0x%02s%02s%02s%02s",oneLineDatas[cnt1].GetAt(var+7),oneLineDatas[cnt1].GetAt(var+6),oneLineDatas[cnt1].GetAt(var+5),oneLineDatas[cnt1].GetAt(var+4));
// }
// //TRACE("ValStr hexdata1=%s \r\n",ValStr);
// //dataValusArr[cnt1][var]=hexStrToFloat2( ValStr) ;
// //插入其它列
// //infoDes.Format("%f",dataValusArr[cnt1][var]);
// //m_ListValues.SetItemText(nIndex,var+1,infoDes);
//
// }
//}
}
//用户点击大端模式
void CHIDANALASISVS08Dlg::OnBnClickedRadioBigendian()
{
// TODO: 在此添加控件通知处理程序代码
endianMode=1; //big endian
TRACE("Current Eandian Mode=%d\r\n",endianMode);
}
//用户点击小端模式
void CHIDANALASISVS08Dlg::OnBnClickedRadioLittleendian()
{
// TODO: 在此添加控件通知处理程序代码
endianMode=2; //little endian
TRACE("Current Eandian Mode=%d\r\n",endianMode);
}
//
//将数据字节转换成short型的 带符号(因为地磁数据是两个字节)
//
void CHIDANALASISVS08Dlg::OnBnClickedButtonTransshort()
{
CString val;
CString DataVal[512];
m_editDataNum.GetWindowTextA(val);
TransMode=2;
int linesNum,rowsNum,dataNum;
linesNum = dataArr.GetCount() ;
rowsNum = oneLineDatas[0].GetCount();
dataNum = _ttoi(val);
TRACE("每条记录数据数量:%d\r\n",dataNum);
int cnt1,cnt2,var;
CString ValStr;
//long lnumber,lnumber2,lnumber3;
for(cnt1=0;cnt1<linesNum;cnt1++) //data records / lines 2 总共数据行数
{
//新插入的数据在下面
CString infoDes;
int nIndex = m_ListValues.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex; //行数
lvItem.iSubItem = 0;
lvItem.pszText = "HEAD"; //第一列
//在最后一行插入记录值.
m_ListValues.InsertItem(&lvItem);
int lnumber=0,lnumber2=0,lnumber3=0;
short SensorData=0;
int buf[10];
for(var=0;var<58;var++) //data numbers 2 需要进行多少次数据转换 除去数据帧头部 还有60字节 60-4=56
{
if(endianMode==1) //big endian 高字节在前 低字节在后
{
lnumber =ChangeNum(oneLineDatas[cnt1].GetAt(var+4),2)*256;
//sscanf((LPSTR)(LPCTSTR)oneLineDatas[cnt1].GetAt(dataStartIndex[var]-1) ,"%X",&lnumber);
lnumber2 =ChangeNum(oneLineDatas[cnt1].GetAt(var+5),2);
}else{ //高字节 在后 从第九个字节开始
lnumber =ChangeNum(oneLineDatas[cnt1].GetAt(var+4),2) ;
lnumber2=ChangeNum(oneLineDatas[cnt1].GetAt(var+5),2)*256;
}
SensorData= ((short)lnumber)|lnumber2;
dataValusArr[cnt1][var]=SensorData*1.0;
//插入其它列
infoDes.Format("%d",dataValusArr[cnt1][var]);
m_ListValues.SetItemText(nIndex,var+1,infoDes);
}
}
}
转载请注明原文地址: https://ju.6miu.com/read-1302399.html