| | |
| | | m_bTrayIconCreated = FALSE; |
| | | } |
| | | |
| | | m_plcListener.Stop(); |
| | | |
| | | DestroyWindow(); |
| | | CDialogEx::OnClose(); |
| | | } |
| | |
| | | strFullLogLine.Format(_T("%s %s"), strLevel, strContent); |
| | | |
| | | // 写入日志文件 |
| | | // LOG_LINE(strFullLogLine); |
| | | LOG_LINE(strFullLogLine); |
| | | } |
| | | |
| | | void CSGMeasurementDlg::HighlightAllMatches(const CString& strSearch, COLORREF clrHighlight/* = RGB(255, 165, 0)*/) |
| | |
| | | |
| | | fAvg1 = CalcAverage(vecGlass1); |
| | | fAvg2 = CalcAverage(vecGlass2); |
| | | fOffset = std::fabs(fAvg2 - fAvg1); // 第二片 - 第一片 |
| | | fOffset = fAvg2 - fAvg1; // 第二片 - 第一片 |
| | | //fOffset = std::fabs(fAvg2 - fAvg1); // 第二片 - 第一片 |
| | | |
| | | CString strLog; |
| | | strLog.Format(_T("第一片玻璃平均值: %.3f,第二片玻璃平均值: %.3f,偏移量: %.3f"), fAvg1, fAvg2, fOffset); |
| | |
| | | vecBuffer.resize(nReceived); |
| | | CleanInvalidValuesInPlace(nOutNo, vecBuffer); |
| | | |
| | | std::vector<float> vecGlass1, vecGlass2; |
| | | std::vector<float> vecGlass1, vecGlass2; |
| | | if (!SplitGlassSegments(nOutNo, vecBuffer, vecGlass1, vecGlass2, m_fJumpThreshold, m_nJumpWindow, m_nValleyMargin, m_nMinGlass1Count)) { |
| | | AppendLogLineRichStyled(_T("未能识别出两片玻璃的数据。"), LOG_COLOR_WARNING); |
| | | return -1.0f; |
| | | return -1.0f; |
| | | } |
| | | |
| | | std::vector<float> vecGlass1Filtered, vecGlass2Filtered; |
| | |
| | | // 初始化IP地址控件,设置为默认IP地址 |
| | | ((CIPAddressCtrl*)GetDlgItem(IDC_IPADDRESS))->SetAddress(192, 168, 0, 10); |
| | | |
| | | // 设置 PLC 监听器的日志回调函数 |
| | | m_plcListener.SetLogCallback([this](const CString& msg, int type) { |
| | | if (type == -1) { |
| | | AppendLogLineRichStyled(msg, LOG_COLOR_ERROR); |
| | | } |
| | | else if (type == 0) { |
| | | AppendLogLineRichStyled(msg, LOG_COLOR_SUCCESS); |
| | | } |
| | | else if (type == 1) { |
| | | AppendLogLineRichStyled(msg, LOG_COLOR_WARNING); |
| | | } |
| | | else if (type == 2) { |
| | | AppendLogLineRichStyled(msg, LOG_COLOR_NORMAL); |
| | | } |
| | | }); |
| | | |
| | | // 初始化 PLC 监听器 |
| | | m_plcListener.Initialize(StationIdentifier(0, 255), 200); |
| | | |
| | | // 设置 PLC 监听器的开始采集回调函数 |
| | | m_plcListener.SetStartCallback([this]() { |
| | | if (!m_bConnected) { |
| | | ConnectToDevice(); |
| | | } |
| | | |
| | | if (InitDataStorage()) { |
| | | StartDataStorage(); |
| | | UpdateControlStatus(m_bConnected, m_bSaving); |
| | | } |
| | | }); |
| | | |
| | | // 设置 PLC 监听器的停止采集回调函数 |
| | | m_plcListener.SetStopCallback([this]() { |
| | | StopDataStorage(); |
| | | UpdateControlStatus(m_bConnected, m_bSaving); |
| | | }); |
| | | |
| | | // 设置 PLC 监听器的分析回调函数 |
| | | m_plcListener.SetAnalyzeCallback([this]() { |
| | | if (!m_bConnected) { |
| | | AppendLogLineRichStyled(_T("设备未连接,请先连接设备。"), LOG_COLOR_WARNING); |
| | | return std::array<double, 4>{ -1.0, -1.0, -1.0, -1.0 }; |
| | | } |
| | | |
| | | std::array<double, 4> result; |
| | | for (int i = 0; i < 4; ++i) { |
| | | result[i] = AnalyzeStoredData(i + 1); // OUT1 ~ OUT4 |
| | | } |
| | | |
| | | if (std::any_of(result.begin(), result.end(), [](double v) { return v < 0; })) { |
| | | AppendLogLineRichStyled(_T("分析失败,某些输出端口数据无效。"), LOG_COLOR_ERROR); |
| | | return std::array<double, 4>{ -1.0, -1.0, -1.0, -1.0 }; |
| | | } |
| | | |
| | | CString strLog; |
| | | strLog.Format(_T("分析结果:OUT1: %.3f, OUT2: %.3f, OUT3: %.3f, OUT4: %.3f"), result[0], result[1], result[2], result[3]); |
| | | return result; |
| | | }); |
| | | m_plcListener.Start(); |
| | | |
| | | // 初始化日志框 |
| | | AppendLogLineRichStyled(_T("准备就绪..."), LOG_COLOR_SUCCESS); |
| | | |