CPP VS08 usbhid数据解析

    xiaoxiao2025-09-07  660

    // //打开配置文件 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
    最新回复(0)