// 停止数据存储 //************************************ // Method: OnSaveStop // FullName: CSaveFile::OnSaveStop // Access: public // Returns: void // Qualifier: // Parameter: void //************************************ void CSaveFile::OnSaveStop(void) { m_bStartSave = false; CString strtemp = _T(""); m_Sec_SavePortMonitorFrame.Lock(); strtemp = m_csEditShow; m_Sec_SavePortMonitorFrame.Unlock(); m_pWndTab->GetDlgItem(IDC_EDIT_RECEIVE)->SetWindowText(strtemp); OnSaveToFile(); }
// 保存发送数据 void CSaveFile::OnSaveSendData(unsigned char* buf, int iSendLength) { if (m_bStartSave == FALSE) { return; } CString str = _T(""); CString strtemp = _T(""); int icsSaveFileLength = 0; SYSTEMTIME sysTime; GetLocalTime(&sysTime); str.Format(_T("%04d.%02d.%02d %02d:%02d:%02d:%04d 发送数据 数据包大小为 %d 数据为:\r\n"),sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds, iSendLength); strtemp += str; for (int i=0; i<iSendLength; i++) { ProcessMessages(); str.Format(_T("%02x "),buf[i]); strtemp += str; } strtemp += _T("\r\n"); m_Sec.Lock(); m_csSaveFile += strtemp; m_csSaveSendFile += strtemp; m_csEditShow += strtemp; icsSaveFileLength = m_csSaveFile.GetLength(); m_Sec.Unlock(); // GetDlgItem(IDC_EDIT_RECEIVE)->SetWindowText(m_cseditshow); // 用UpdateData(FALSE)快速反复刷新界面会占用大量资源,拖慢速度 // UpdateData(FALSE); if (icsSaveFileLength > (m_iSaveSize*1024)) { // CWnd* pwnd = AfxGetMainWnd(); // m_oThreadManage.m_SendThread.m_csTailFrameShow = _T(""); // pwnd->GetDlgItem(IDC_EDIT_TAILFRAMESHOW)->SetWindowText(_T("")); // m_oThreadManage.m_SendThread.m_csTailTimeReturnShow = _T(""); // pwnd->GetDlgItem(IDC_EDIT_TAILTIMERETURNSHOW)->SetWindowText(_T("")); // m_oThreadManage.m_SendThread.m_csDelayTimeReturnShow = _T(""); // pwnd->GetDlgItem(IDC_EDIT_DELAYTIMERETURNSHOW)->SetWindowText(_T("")); // m_oThreadManage.m_SendThread.m_csADCDataRecShow = _T(""); // pwnd->GetDlgItem(IDC_EDIT_ADCDATARECSHOW)->SetWindowText(_T("")); OnSaveToFile(); } }
// 保存接收数据 //************************************ // Method: OnSaveReceiveData // FullName: CSaveFile::OnSaveReceiveData // Access: public // Returns: void // Qualifier: // Parameter: unsigned char * buf // Parameter: int iRecLength //************************************ void CSaveFile::OnSaveReceiveData(unsigned char* buf, int iRecLength) { if (m_bStartSave == FALSE) { return; } CString str = _T(""); CString strtemp = _T(""); int icsSaveFileLength = 0; SYSTEMTIME sysTime; GetLocalTime(&sysTime); str.Format(_T("%04d.%02d.%02d %02d:%02d:%02d:%03d 接收数据 数据包大小为 %d 数据为:\r\n"),sysTime.wYear, sysTime.wMonth, sysTime.wDay, sysTime.wHour, sysTime.wMinute, sysTime.wSecond, sysTime.wMilliseconds, iRecLength); strtemp += str; for (int i=0; i<iRecLength; i++) { ProcessMessages(); str.Format(_T("%02x "),buf[i]); strtemp += str; } strtemp += _T("\r\n"); m_Sec_SavePortMonitorFrame.Lock(); m_csSaveFile += strtemp; m_csSaveReceiveFile += strtemp; m_csEditShow += strtemp; icsSaveFileLength = m_csSaveFile.GetLength(); m_Sec_SavePortMonitorFrame.Unlock(); // GetDlgItem(IDC_EDIT_RECEIVE)->SetWindowText(m_cseditshow); // UpdateData(FALSE); if (icsSaveFileLength> (m_iSaveSize*1024)) { OnSaveToFile(); } }
// Handles a menu item selection LRESULT CNoteDlg::OnCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { switch (LOWORD(wParam)) { case IDR_MENU_NEWNOTE: OnNewNote(); break; case IDR_MENU_SAVE: OnSave(true); break; case IDR_MENU_SAVETOFILE: OnSaveToFile(); break; case IDR_MENU_IMPORTFROMFILE: OnImportFromFile(); break; case IDR_MENU_DELETE: OnDelete(); break; case IDR_MENU_SETFONT: OnSetFont(); break; case ID_EDIT_SETTITLE: OnSetTitle(); break; case IDR_MENU_CLOSE: CloseDialog(0); break; case IDR_MENU_BLUE: OnChangeBkgndColor(BLUE); break; case IDR_MENU_GREEN: OnChangeBkgndColor(GREEN); break; case IDR_MENU_PINK: OnChangeBkgndColor(PINK); break; case IDR_MENU_YELLOW: OnChangeBkgndColor(YELLOW); break; case IDR_MENU_WHITE: OnChangeBkgndColor(WHITE); break; case IDR_MENU_0: MakeTransparent(255); break; case IDR_MENU_10: MakeTransparent(225); break; case IDR_MENU_20: MakeTransparent(200); break; case IDR_MENU_30: MakeTransparent(175); break; case IDR_MENU_40: MakeTransparent(150); break; case IDR_MENU_50: MakeTransparent(125); break; case IDR_MENU_60: MakeTransparent(100); break; case IDR_MENU_70: MakeTransparent(75); break; case IDR_MENU_80: MakeTransparent(50); break; case IDR_MENU_90: MakeTransparent(25); break; case ID_FILE_PAGE_SETUP: OnPageSetup(); break; case ID_FILE_PRINT: OnPrint(); break; default: break; } return 0; }
void CTabSample::OnTimer(UINT_PTR nIDEvent) { // TODO: ÔÚ´ËÌí¼ÓÏûÏ¢´¦Àí³ÌÐò´úÂëºÍ/»òµ÷ÓÃĬÈÏÖµ // 达到采样时间停止采样 // if (nIDEvent == 3) // { // m_HeartBeatSocket.SendHeartBeatFrame(); // } if (nIDEvent == 10) { // 关闭采样时间定时器 KillTimer(10); OnBnClickedButtonStopsample(); } // 监测尾包 else if (nIDEvent == 4) { if (m_oThreadManage.m_TailFrameSocket.m_bTailRec == TRUE) { m_oThreadManage.m_TailFrameSocket.m_bTailRec = FALSE; m_uiTailRecCount = 0; } else { m_uiTailRecCount++; if (m_uiTailRecCount == TailFrameCount) { // 连续5秒未收到尾包则删除所有仪器 m_oThreadManage.m_oInstrumentList.DeleteAllInstrument(); m_uiTailRecCount = 0; } } } // 开始采样 else if (nIDEvent == 1) { KillTimer(1); m_oThreadManage.m_ADCDataSocket.m_bStartSample = TRUE; } // 停止采样 else if (nIDEvent == 2) { KillTimer(2); unsigned int uiADCDataNeedToSave = 0; // 计算仪器最大的采样长度 uiADCDataNeedToSave = OnSampleDataMaxLength(GraphViewNum, m_oThreadManage.m_ADCDataSocket.m_dADCSave); // 保存剩余的ADC数据文件 m_oThreadManage.m_ADCDataSocket.OnSaveRemainADCData(uiADCDataNeedToSave); CString str; // 对选中的仪器进行数据处理 for (int k=0; k<GraphViewNum; k++) { if (m_iSelectObject[k] == 1) { if (m_iSelectObjectNoise[k] == 0) { double davg = 0.0; double drms = 0.0; double dmax = 0.0; double dmin = 0.0; if (m_dSampleData[k].size() == 0) { continue; } davg = SampleDataAverage(m_dSampleData[k]); str.Format("Avg = %2.6f",davg); GetDlgItem(m_iMathId[k][0])->SetWindowText(str); drms = SampleDataRms(m_dSampleData[k]); str.Format("RMS = %2.6f",drms); GetDlgItem(m_iMathId[k][1])->SetWindowText(str); dmax = SampleDataMax(m_dSampleData[k]); str.Format("Max = %2.6f",dmax); GetDlgItem(m_iMathId[k][2])->SetWindowText(str); dmin = SampleDataMin(m_dSampleData[k]); str.Format("Min = %2.6f",dmin); GetDlgItem(m_iMathId[k][3])->SetWindowText(str); // 将数据处理结果加入到数组中 m_dSampleData[k].push_back(davg); m_dSampleData[k].push_back(drms); m_dSampleData[k].push_back(dmax); m_dSampleData[k].push_back(dmin); } } } // 计算仪器最大的采样长度 m_iMaxLength = OnSampleDataMaxLength(GraphViewNum, m_dSampleData); if (m_iMaxLength == 0) { return; } // 横向滚动条的最大和最小值 m_uiScrollBarMax = m_iMaxLength; if (m_iMaxLength > m_OScopeCtrl[0].XAxisPointNum) { m_uiScrollBarMin = m_OScopeCtrl[0].XAxisPointNum; } else { m_uiScrollBarMin = 0; } CScrollBar*pSB =(CScrollBar*)GetDlgItem(IDC_SCROLLBAR_GRAPHVIEW); pSB->SetScrollRange(m_uiScrollBarMin, m_uiScrollBarMax); pSB->SetScrollPos(m_uiScrollBarMax, TRUE); // 将采样数据保存到文件中,只有设定采样时间的数据才会被保存 if (m_dSampleTime > 0) { OnSaveToFile(MathValueIdNum, GraphViewNum, m_cSelectObjectName,m_dSampleData); } } CDialog::OnTimer(nIDEvent); }
void CTabSample::OnBnClickedButtonStopsample() { // TODO: ÔÚ´ËÌí¼Ó¿Ø¼þ֪ͨ´¦Àí³ÌÐò´úÂë if (m_bStartSample == FALSE) { return; } m_bStopSample = TRUE; m_bStartSample = FALSE; CString str; // 发送采样结束操作命令帧 //OnSendCmdFrame(StartSampleCmd, 0, m_uiSampleNb); unsigned int uiIPAim; for (int i=0; i<GraphViewNum; i++) { if ((m_uiSampleNb & (0x01<<i)) != 0) { uiIPAim = 111 - 10*i; /*OnADCSampleStop(uiIPAim);*/ } } OnADCSampleStop(uiIPAim); // // 关闭采样输出随机数定时器 // KillTimer(1); // 关闭采样时间定时器 // KillTimer(10); // 对选中的仪器进行数据处理 for (int k=0; k<GraphViewNum; k++) { if (m_iSelectObject[k] == 1) { if (m_iSelectObjectNoise[k] == 0) { double davg = 0.0; double drms = 0.0; double dmax = 0.0; double dmin = 0.0; if (m_dSampleData[k].size() == 0) { continue; } davg = SampleDataAverage(m_dSampleData[k]); str.Format("Avg = %2.3f",davg); GetDlgItem(m_iMathId[k][0])->SetWindowText(str); drms = SampleDataRms(m_dSampleData[k]); str.Format("RMS = %2.3f",drms); GetDlgItem(m_iMathId[k][1])->SetWindowText(str); dmax = SampleDataMax(m_dSampleData[k]); str.Format("Max = %2.3f",dmax); GetDlgItem(m_iMathId[k][2])->SetWindowText(str); dmin = SampleDataMin(m_dSampleData[k]); str.Format("Min = %2.3f",dmin); GetDlgItem(m_iMathId[k][3])->SetWindowText(str); // 将数据处理结果加入到数组中 m_dSampleData[k].push_back(davg); m_dSampleData[k].push_back(drms); m_dSampleData[k].push_back(dmax); m_dSampleData[k].push_back(dmin); } } } // 计算仪器最大的采样长度 m_iMaxLength = OnSampleDataMaxLength(GraphViewNum, m_dSampleData); if (m_iMaxLength == 0) { return; } // 横向滚动条的最大和最小值 m_uiScrollBarMax = m_iMaxLength; if (m_iMaxLength > m_OScopeCtrl[0].XAxisPointNum) { m_uiScrollBarMin = m_OScopeCtrl[0].XAxisPointNum; } else { m_uiScrollBarMin = 0; } CScrollBar*pSB =(CScrollBar*)GetDlgItem(IDC_SCROLLBAR_GRAPHVIEW); pSB->SetScrollRange(m_uiScrollBarMin, m_uiScrollBarMax); pSB->SetScrollPos(m_uiScrollBarMax, TRUE); // 将采样数据保存到文件中,只有设定采样时间的数据才会被保存 if (m_dSampleTime > 0) { OnSaveToFile(MathValueIdNum, GraphViewNum, m_cSelectObjectName,m_dSampleData); } }