From 3c2021441490ae9b93f7a2ef0f379909b589edd9 Mon Sep 17 00:00:00 2001
From: yincheng.zhong <634916154@qq.com>
Date: 星期六, 13 十二月 2025 18:53:16 +0800
Subject: [PATCH] 应该是拍视频的版本,外包在此基础上加了MQTT部分。

---
 python/hitl/run_sim.py |   52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 52 insertions(+), 0 deletions(-)

diff --git a/python/hitl/run_sim.py b/python/hitl/run_sim.py
index 6d8baa7..2ea97d0 100644
--- a/python/hitl/run_sim.py
+++ b/python/hitl/run_sim.py
@@ -402,9 +402,11 @@
         self.origin_text = QtWidgets.QLineEdit(default_origin_short)
         self.origin_text.setPlaceholderText("3949.9120,N,11616.8544,E[,alt]")
         self.origin_btn = QtWidgets.QPushButton("鏇存柊鍘熺偣")
+        self.copy_origin_btn = QtWidgets.QPushButton("澶嶅埗瀹忓畾涔�") # 鏂板鎸夐挳
         grid.addWidget(QtWidgets.QLabel("鍧愭爣 (lat,N,lon,E):"), 0, 0, 1, 2)
         grid.addWidget(self.origin_text, 0, 2, 1, 2)
         grid.addWidget(self.origin_btn, 0, 4)
+        grid.addWidget(self.copy_origin_btn, 0, 5) # 娣诲姞鍒板竷灞�
 
         labels = ["E (m)", "N (m)", "U (m)", "Heading (deg)"]
         self.pos_spin: List[QtWidgets.QDoubleSpinBox] = []
@@ -484,6 +486,7 @@
         self.path_load_btn.clicked.connect(self._load_path_from_text)
         self.path_export_btn.clicked.connect(self._export_path_to_mcu)
         self.origin_btn.clicked.connect(self._update_origin)
+        self.copy_origin_btn.clicked.connect(self._copy_origin_macro) # 缁戝畾浜嬩欢
         self.reset_pose_btn.clicked.connect(self._reset_position)
         self.port_refresh_btn.clicked.connect(self._refresh_serial_ports)
         self.serial_toggle_btn.clicked.connect(self._toggle_serial)
@@ -492,6 +495,55 @@
         self._set_controls_enabled(False)
         self._update_serial_ui()
 
+    def _copy_origin_macro(self):
+        text = self.origin_text.text().strip()
+        if not text:
+            QtWidgets.QMessageBox.warning(self, "澶嶅埗", "鍘熺偣杈撳叆妗嗕负绌�")
+            return
+        
+        # 鏍煎紡: lat_val,N,lon_val,E,alt
+        # 渚嬪: 3949.9120,N,11616.8544,E,47.5
+        parts = [p.strip() for p in text.split(",")]
+        if len(parts) < 4:
+            QtWidgets.QMessageBox.warning(self, "澶嶅埗", "鍘熺偣鏍煎紡閿欒锛岄渶鑷冲皯鍖呭惈缁忕含搴�")
+            return
+            
+        try:
+            # 瑙f瀽 DDMM.MMMM 鏍煎紡杞� DD.DDDD
+            # 绾害
+            lat_raw = parts[0]
+            lat_deg_int = int(float(lat_raw) / 100)
+            lat_min = float(lat_raw) % 100
+            lat_dd = lat_deg_int + lat_min / 60.0
+            if parts[1].upper() == 'S':
+                lat_dd = -lat_dd
+                
+            # 缁忓害
+            lon_raw = parts[2]
+            lon_deg_int = int(float(lon_raw) / 100)
+            lon_min = float(lon_raw) % 100
+            lon_dd = lon_deg_int + lon_min / 60.0
+            if parts[3].upper() == 'W':
+                lon_dd = -lon_dd
+                
+            # 楂樺害
+            alt = "0.0"
+            if len(parts) >= 5:
+                alt = parts[4]
+                
+            macro = (
+                f"#define MC_CFG_ORIGIN_LAT_DEG            ({lat_dd:.6f})\n"
+                f"#define MC_CFG_ORIGIN_LON_DEG            ({lon_dd:.6f})\n"
+                f"#define MC_CFG_ORIGIN_ALT_M              ({alt})"
+            )
+            
+            clipboard = QtWidgets.QApplication.clipboard()
+            clipboard.setText(macro)
+            QtWidgets.QMessageBox.information(self, "澶嶅埗", "宸插鍒跺畯瀹氫箟鍒板壀璐存澘锛�")
+            
+        except ValueError as e:
+            QtWidgets.QMessageBox.warning(self, "澶嶅埗", f"鏁板�艰В鏋愰敊璇�: {e}")
+
     def _handle_user_pan(self):
         if self._auto_follow:
             self.follow_checkbox.blockSignals(True)

--
Gitblit v1.10.0