From e8a27bb203fe2aff70390a5eca002d7438da9b0f Mon Sep 17 00:00:00 2001 From: mrDarker <mr.darker@163.com> Date: 星期三, 22 十月 2025 14:24:34 +0800 Subject: [PATCH] Merge branch 'clh' into liuyang --- SourceCode/Bond/SGMeasurement/SGMeasurementDlg.h | 134 ++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 128 insertions(+), 6 deletions(-) diff --git a/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.h b/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.h index 96e570b..aa76701 100644 --- a/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.h +++ b/SourceCode/Bond/SGMeasurement/SGMeasurementDlg.h @@ -3,6 +3,11 @@ // #pragma once + +#include "PLCSignalListener.h" +#include "ProductResultStorage.h" + +#include <map> #include <vector> #include <numeric> #include <algorithm> @@ -36,6 +41,7 @@ afx_msg void OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct); afx_msg void OnClose(); afx_msg LRESULT OnTrayIconClick(WPARAM wParam, LPARAM lParam); + afx_msg void OnTrayOpenDir(); afx_msg void OnTrayRestore(); afx_msg void OnTrayExit(); afx_msg void OnBnClickedButtonConnect(); @@ -49,6 +55,13 @@ DECLARE_MESSAGE_MAP() private: + /** + * @brief 閫�鍑虹▼搴忔椂鐨勬竻鐞嗘搷浣溿�� + * + * 姝ゅ嚱鏁板湪绋嬪簭閫�鍑哄墠琚皟鐢紝鐢ㄤ簬鎵ц蹇呰鐨勮祫婧愰噴鏀句笌鐘舵�佹仮澶嶏紝 + * 鍖呮嫭鏂紑璁惧杩炴帴銆佺Щ闄ゆ墭鐩樺浘鏍囩瓑銆� + * 鏈�缁堥攢姣佷富绐楀彛骞堕��鍑哄簲鐢ㄣ�� + */ void ExitApplication(); /** @@ -85,7 +98,7 @@ * @param content 鏃ュ織鍐呭銆� * @param color 瀛椾綋棰滆壊锛岄粯璁や负榛戣壊銆� */ - void AppendLogLineRichStyled(const CString& content, COLORREF color = RGB(0, 0, 0)); + void AppendLogLineRichStyled(const CString& strContent, COLORREF color = RGB(0, 0, 0)); /** * @brief 楂樹寒鏃ュ織涓墍鏈夊尮閰嶆寚瀹氬瓧绗︿覆鐨勯儴鍒嗐�� @@ -104,6 +117,60 @@ * @param vecBuffer 娴嬮噺鏁版嵁缂撳瓨锛屽皢琚�愯鎵撳嵃鍒版棩蹇椾腑銆� */ void PrintSampleData(int nOutNo, const std::vector<float>& vecBuffer); + + /** + * @brief 鑾峰彇褰撳墠搴旂敤绋嬪簭鎵�鍦ㄧ殑鐩綍璺緞銆� + * + * 閫氳繃 GetModuleFileName 鑾峰彇褰撳墠鍙墽琛屾枃浠剁殑瀹屾暣璺緞锛� + * 骞舵埅鍙栨帀鏂囦欢鍚嶉儴鍒嗭紝杩斿洖鐩綍璺緞锛屾湯灏捐嚜甯﹀弽鏂滄潬銆� + * + * @return CString 搴旂敤绋嬪簭鎵�鍦ㄧ洰褰曪紝渚嬪 "C:\\Program Files\\SGMeasurement\\" + */ + CString GetAppDirectory(); + + /** + * @brief 鑾峰彇閰嶇疆鏂囦欢鐨勫畬鏁磋矾寰勩�� + * + * 閰嶇疆鏂囦欢鍚嶅浐瀹氫负 "config.ini"锛屼綅浜庡簲鐢ㄧ▼搴忕洰褰曚笅銆� + * + * @return CString 閰嶇疆鏂囦欢瀹屾暣璺緞锛屼緥濡� "C:\\Program Files\\SGMeasurement\\config.ini" + */ + CString GetConfigPath(); + + /** + * @brief 浠� ini 閰嶇疆鏂囦欢鍔犺浇瀛樺偍涓庡垎鏋愬弬鏁般�� + * + * 璇诲彇鎸囧畾 ini 鏂囦欢涓殑鍙傛暟鍊硷紝骞舵洿鏂板璇濇绫讳腑鐨勬垚鍛樺彉閲忥紝 + * 鍖呮嫭瀛樺偍璁剧疆锛堣Е鍙戞柟寮忋�侀噰鏍风偣鏁帮級銆佽烦鍙樻娴嬪弬鏁般�佺ǔ瀹氬尯鎻愬彇鍙傛暟绛夈�� + * 鑻ユ枃浠朵腑缂哄皯鏌愪簺瀛楁锛屽皢浣跨敤榛樿鍊笺�� + * + * @param strFile ini 鏂囦欢璺緞銆� + * @return true 琛ㄧず鍔犺浇鎴愬姛锛宖alse 琛ㄧず鍔犺浇澶辫触锛堝鏂囦欢涓嶅瓨鍦級銆� + */ + bool LoadConfig(const CString& strFile); + + /** + * @brief 灏嗗綋鍓嶅瓨鍌ㄤ笌鍒嗘瀽鍙傛暟淇濆瓨鍒� ini 閰嶇疆鏂囦欢銆� + * + * 鎶婂璇濇绫讳腑鐨勬垚鍛樺彉閲忥紙瀛樺偍璁剧疆銆佽烦鍙樻娴嬨�佺ǔ瀹氬尯鎻愬彇绛夊弬鏁帮級 + * 搴忓垪鍖栧苟鍐欏叆鍒版寚瀹氱殑 ini 鏂囦欢涓紝浠ヤ究涓嬫鍚姩鏃舵仮澶嶃�� + * + * @param strFile ini 鏂囦欢璺緞銆� + * @return true 琛ㄧず淇濆瓨鎴愬姛锛宖alse 琛ㄧず淇濆瓨澶辫触銆� + */ + bool SaveConfig(const CString& strFile); + + /** + * @brief 璁剧疆鎴栧彇娑堝綋鍓嶇▼搴忕殑寮�鏈鸿嚜鍚姩銆� + * + * 璇ュ嚱鏁颁細鍦ㄦ敞鍐岃〃 `HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run` + * 涓嬪啓鍏ユ垨鍒犻櫎褰撳墠绋嬪簭鐨勮矾寰勶紝浠庤�屾帶鍒舵槸鍚﹂殢 Windows 鍚姩鑷姩杩愯銆� + * + * @param bEnable 鏄惁鍚敤鑷惎鍔ㄣ�倀rue 琛ㄧず璁剧疆寮�鏈鸿嚜鍚紝false 琛ㄧず鍙栨秷鑷惎銆� + * + * @return true 琛ㄧず鎿嶄綔鎴愬姛锛沠alse 琛ㄧず鎿嶄綔澶辫触锛堝娉ㄥ唽琛ㄦ潈闄愪笉瓒筹級銆� + */ + bool SetAutoStart(bool bEnable); /** * @brief 灏濊瘯杩炴帴鍒版祴閲忚澶囥�� @@ -138,14 +205,25 @@ * @param fJumpThreshold 璺冲彉闃堝�硷紝鐢ㄤ簬妫�娴嬫暟鎹殑鏄庢樉鏂偣銆� * @param nWindow 璺冲彉鍒ゆ柇鐨勫墠鍚庣獥鍙e搴︺�� * @param nValleyMargin valley 鐐逛箣鍚庡灏戜釜鐐逛綔涓哄疄闄呭垏鍓茬偣銆� - * @param nMinGlass1Count 绗竴娈垫渶灏戞湁鏁堢偣鏁伴檺鍒躲�� + * @param nMinGlass1Count 鏈�灏戞湁鏁堢偣鏁伴檺鍒躲�� * * @return true 琛ㄧず鍒囧壊鎴愬姛锛宖alse 琛ㄧず澶辫触锛堜緥濡傛暟鎹笉瓒虫垨鏃犳槑鏄捐烦鍙橈級銆� */ bool SplitGlassSegments(int nOutNo, const std::vector<float>& validData, std::vector<float>& vecGlass1, std::vector<float>& vecGlass2, - float fJumpThreshold = 1.0f, int nWindow = 3, int nValleyMargin = 0, - int nMinGlass1Count = 10); + float fJumpThreshold = 0.2f, int nWindow = 3, int nValleyMargin = 0, + int nMinGlassCount = 10); + + /** + * @brief 瀵规暟鎹寜鏁存暟閮ㄥ垎杩涜鍒嗙粍锛屼繚鐣欐暟鎹噺鏈�澶氱殑涓�缁勶紙鎺掗櫎寮傚父/骞叉壈锛夈�� + * + * @param nOutNo 杈撳嚭閫氶亾缂栧彿锛岀敤浜庢棩蹇楄褰曘�� + * @param vecInput 鍘熷娴偣鏁版嵁锛堝凡瑁佸壀鏃犳晥鍊硷級銆� + * @param vecOutput 杈撳嚭琚繚鐣欑殑涓昏鍒嗙粍鏁版嵁锛堟渶澶氱殑閭g粍锛夈�� + * + * @return true 琛ㄧず鎴愬姛杩囨护鍑轰富鍒嗙粍锛宖alse 琛ㄧず鎵�鏈夋暟鎹兘琚繃婊ゆ垨涓虹┖銆� + */ + bool FilterDominantGroup(int nOutNo, const std::vector<float>& vecInput, std::vector<float>& vecOutput); /** * @brief 浠庤緭鍏ユ暟鎹腑鎻愬彇涓�涓浐瀹氶暱搴︾殑绋冲畾鍖洪棿銆� @@ -178,19 +256,42 @@ const std::vector<float>& vecGlass2, float& fAvg1, float& fAvg2, float& fOffset); + /** + * @brief 鍒濆鍖栬澶囩鐨勬暟鎹瓨鍌ㄧ紦鍐插尯銆� + * + * 璋冪敤搴曞眰鎺ュ彛娓呴櫎褰撳墠瀛樺偍鍖哄唴瀹癸紝涓烘柊涓�杞殑鏁版嵁閲囬泦鍋氬噯澶囥�� + * 蹇呴』鍦ㄨ澶囪繛鎺ユ垚鍔熶笖鏈繘琛屾暟鎹瓨鍌ㄦ椂璋冪敤銆� + * + * @return true 琛ㄧず鍒濆鍖栨垚鍔燂紱false 琛ㄧず澶辫触锛堝彲鑳芥槸璁惧鏈繛鎺ユ垨璋冪敤鎺ュ彛閿欒锛夈�� + */ bool InitDataStorage(); + /** + * @brief 鍚姩璁惧绔暟鎹噰闆嗗拰瀛樺偍銆� + * + * 璋冪敤姝ゅ嚱鏁板悗璁惧寮�濮嬮噰闆嗗苟缂撳瓨鏁版嵁銆� + * 閫氬父閰嶅悎瑙﹀彂妯″紡杩涜閲囬泦銆� + * + * @return true 琛ㄧず鍚姩鎴愬姛锛沠alse 琛ㄧず鍚姩澶辫触銆� + */ bool StartDataStorage(); + /** + * @brief 鍋滄鏁版嵁閲囬泦骞朵粠璁惧鑾峰彇褰撳墠瀛樺偍鏁版嵁銆� + * + * 璋冪敤鍚庤澶囧仠姝㈤噰闆嗭紝骞跺皾璇曡鍙栨寚瀹氱鍙g殑鏁版嵁锛屼緵鍚庣画鍒嗘瀽澶勭悊銆� + * + * @return true 琛ㄧず鍋滄骞惰鍙栨暟鎹垚鍔燂紱false 琛ㄧず澶辫触锛堝璁惧鏈搷搴旀垨鏁版嵁鏃犳晥锛夈�� + */ bool StopDataStorage(); /** * @brief 鍒嗘瀽鎸囧畾绔彛鐨勫瓨鍌ㄦ暟鎹紝骞舵彁鍙栦袱娈电幓鐠冩暟鎹笌绋冲畾鍖猴紝璁$畻鍋忕Щ銆� * * @param nOutNo 杈撳嚭绔彛缂栧彿锛�1~4锛� - * @return float 鎴愬姛杩斿洖璁$畻鍑虹殑鍋忕Щ閲忥紝澶辫触杩斿洖 -1.0f + * @return double 鎴愬姛杩斿洖璁$畻鍑虹殑鍋忕Щ閲忥紝澶辫触杩斿洖 -1.0f */ - float AnalyzeStoredData(int nOutNo); + double AnalyzeStoredData(int nOutNo); // === 绯荤粺鐘舵�佷笌杩愯鏁版嵁 === @@ -288,4 +389,25 @@ * @brief 鏍囪绋嬪簭鏄惁閫氳繃鎵樼洏鍥炬爣閫�鍑� */ BOOL m_bExitingFromTray; + + // === 鑷惎鍔ㄧ浉鍏� === + + /** + * @brief 鏄惁寮�鏈鸿嚜鍚姩 + */ + BOOL m_nAutoStart; + + // === PLC 淇″彿鐩戝惉鍣� === + + /** + * @brief PLC 淇″彿鐩戝惉鍣ㄥ疄渚嬶紝鐢ㄤ簬澶勭悊 PLC 淇″彿浜嬩欢 + */ + CPLCSignalListener m_plcListener; + + // === 浜у搧缁撴灉瀛樺偍 === + + /** + * @brief 浜у搧缁撴灉瀛樺偍瀹炰緥锛岀敤浜庝繚瀛樺拰绠$悊娴嬮噺缁撴灉 + */ + CProductResultStorage m_resultStorage; }; -- Gitblit v1.9.3