Преглед изворни кода

fix(window): 修复窗口最小化功能异常并优化设备控制逻辑

- 添加异常处理避免获取窗口标题时出错
- 修复窗口标题为空时的处理逻辑
- 将单个窗口最小化改为批量处理所有匹配窗口
- 增加延时时间从0.1秒到0.8秒以确保相机拍摄稳定
- 添加设备状态数据回传功能
- 优化消息发送机制确保拍照完成状态正确传递
rambo пре 6 дана
родитељ
комит
18164eb775
2 измењених фајлова са 27 додато и 7 уклоњено
  1. 15 6
      python/api.py
  2. 12 1
      python/mcu/RemoteControlV2.py

+ 15 - 6
python/api.py

@@ -1906,16 +1906,25 @@ def minimize_window(window_title: str):
     if window_title == "" or window_title == None:
        window_title = "Smart Shooter"
     window_title = window_title.lower()
+
     def callback(hwnd, _):
-        title = GetWindowText(hwnd)
-        title = title.lower()
-        if window_title in title or title == window_title:
-            hwnd_list.append(hwnd)
+        try:
+            title = GetWindowText(hwnd)
+            if not title:
+                return True
+            title = title.lower()
+            if window_title in title or title == window_title:
+                hwnd_list.append(hwnd)
+        except Exception as e:
+            print("最小化异常",e)
+            pass
+        return True
 
     EnumWindows(callback, None)
+    # print("hwnd_list", hwnd_list)
     if hwnd_list:
-        hwnd = hwnd_list[0]
-        win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
+        for hwnd in hwnd_list:
+            win32gui.ShowWindow(hwnd, win32con.SW_MINIMIZE)
         return {"code": 0, "msg": "最小化成功", "data": {"status": True}}
     return {"code": 0, "msg": "最小化失败", "data": {"status": False}}
 

+ 12 - 1
python/mcu/RemoteControlV2.py

@@ -291,7 +291,7 @@ class RemoteControlV2(BaseClass):
                 ),
                 name="CameraShooter",
             )
-            await asyncio.sleep(0.1)
+            await asyncio.sleep(0.8)
             # await asyncio.sleep(1)
             self.msg_type = "photo_take"
             self.sendSocketMessage(
@@ -304,6 +304,17 @@ class RemoteControlV2(BaseClass):
                 data={"goods_art_no": record.goods_art_no, "id": record_id},
                 device_status=2,
             )
+            self.msg_type = "photo_take"
+            self.sendSocketMessage(
+                code=0,
+                msg="{} 执行完成~".format(
+                    "执行右脚程序"
+                    if record.image_deal_mode == 1
+                    else "执行左脚程序"
+                ),
+                data={"goods_art_no": record.goods_art_no, "id": record_id},
+                device_status=2,
+            )
             self.msg_type = "blue_tooth"
         except Exception as e:
             print(f"错误:{e}")