Bladeren bron

Merge remote-tracking branch 'origin/master'

panqiuyao 7 maanden geleden
bovenliggende
commit
a5705cb581
4 gewijzigde bestanden met toevoegingen van 58 en 35 verwijderingen
  1. 52 32
      python/api.py
  2. 5 2
      python/mcu/DeviceControl.py
  3. 1 1
      python/models.py
  4. BIN
      python/requestments.txt

+ 52 - 32
python/api.py

@@ -21,6 +21,9 @@ from service.run_main import RunMain
 import importlib
 from service.auto_deal_pics.upload_pic import UploadPic
 from service.OnePicTest import OnePicTest
+import hashlib
+import win32api, win32gui, win32con
+from win32gui import EnumWindows, GetWindowText
 
 # from service.AutoDealPics import AutoDealPics
 # for plugin in settings.plugins:
@@ -28,6 +31,16 @@ from service.OnePicTest import OnePicTest
 #     print("module_path", module_path, class_name)
 #     module = importlib.import_module(module_path)
 #     getattr(module, class_name)
+def calculate_md5(filepath):
+    # 打开文件,以二进制只读模式打开
+    with open(filepath, "rb") as f:
+        # 创建MD5哈希对象
+        md5hash = hashlib.md5()
+        # 循环读取文件的内容并更新哈希对象
+        for chunk in iter(lambda: f.read(4096), b""):
+            md5hash.update(chunk)
+        # 返回MD5哈希的十六进制表示
+        return md5hash.hexdigest()
 
 
 @app.get("/")
@@ -589,28 +602,23 @@ def insertEmptyLogoList(session):
 
 @app.get("/logo_list", description="logo列表")
 def logo_list():
-    session = SqlQuery()
-    photos = CRUD(SysConfigs)
-    item = photos.read(session, conditions={"key": "logo_configs"})
-    if item == None:
-        item = insertEmptyLogoList(session)
-    session.close()
-    return {
-        "code": 0,
-        "msg": "",
-        "data": json.loads(item.value),
-    }
+    logo_dir = "{}/data/logo/".format(os.getcwd()).replace("\\", "/")
+    check_path(logo_dir)
+    logo_files = os.listdir(logo_dir)
+    logo_list = []
+    for logoItem in logo_files:
+        logo_list.append(f"{logo_dir}{logoItem}")
+    return {"code": 0, "msg": "操作成功", "data": logo_list}
 
 
 @app.post("/add_logo", description="添加logo")
 def add_logo(params: LogoParams):
-    logo_path = params.logo_path
+    logo_path = params.logo_path.replace("\\", "/")
     session = SqlQuery()
     sysConfig = CRUD(SysConfigs)
     item = sysConfig.read(session, conditions={"key": "logo_configs"})
     if item == None:
         item = insertEmptyLogoList(session)
-    logo_list = json.loads(item.value)
     if os.path.isfile(logo_path) == False:
         return {"code": 1, "msg": "logo文件不存在", "data": None}
     logo_dir = "{}/data/logo/".format(os.getcwd()).replace("\\", "/")
@@ -618,29 +626,41 @@ def add_logo(params: LogoParams):
     fpath, fname = os.path.split(logo_path)
     logo_path_info = logo_dir + fname
     shutil.copy(logo_path, logo_path_info)  # 复制文件
-    if len(logo_list)>0:
-        for item in logo_list:
-            if logo_path_info == item:
-                continue
-            logo_list.append(logo_path_info)
-    else:
-        logo_list.append(logo_path_info)
-    data = {"key": "logo_configs", "value": json.dumps(logo_list)}
-    sysConfig.updateConditions(session, conditions={"key": "logo_configs"}, **data)
+    logo_files = os.listdir(logo_dir)
+    logo_list = []
+    for logoItem in logo_files:
+        logo_list.append(f"{logo_dir}{logoItem}")
     return {
         "code": 0,
         "msg": "",
-        "data": {"logo":logo_path_info},
+        "data": {"logo": logo_path_info},
     }
 
 @app.post("/delete_logo", description="删除logo")
 def delete_logo(params: LogoParamsupdate):
-    session = SqlQuery()
-    sysConfig = CRUD(SysConfigs)
-    model = sysConfig.read(session, conditions={"key": "logo_configs"})
-    if model == None:
-        insertEmptyLogoList(session)
-    # 走编辑逻辑
-    kwargs = params.__dict__
-    save_device_config = sysConfig.updateConditions(session, conditions={"key": "logo_configs"}, **kwargs)
-    return {"code": 0, "msg": "操作成功", "data": save_device_config}
+    logo_path = params.path
+    if os.path.isfile(logo_path) == False:
+        return {"code": 1, "msg": "logo文件不存在", "data": None}
+    os.remove(logo_path)
+    logo_dir = "{}/data/logo/".format(os.getcwd()).replace("\\", "/")
+    check_path(logo_dir)
+    logo_files = os.listdir(logo_dir)
+    logo_list = []
+    for logoItem in logo_files:
+        logo_list.append(f"{logo_dir}{logoItem}")
+    return {"code": 0, "msg": "操作成功", "data": logo_list}
+
+
+@app.post("/close_other_window", description="关闭窗口")
+def close_other_window():
+    hwnd_list = []
+    def callback(hwnd, _):
+        title = GetWindowText(hwnd)
+        if title == "digiCamControl by Duka Istvan":
+            hwnd_list.append(hwnd)
+    EnumWindows(callback, None)
+    if hwnd_list:
+        hwnd = hwnd_list[0]
+        win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)
+        return {"code": 0, "msg": "关闭成功", "data": {"status":True}}
+    return {"code": 0, "msg": "关闭失败", "data": {"status": False}}

+ 5 - 2
python/mcu/DeviceControl.py

@@ -132,6 +132,8 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
         )
         self.msg_type = "mcu"
 
+    
+
     def setOtherMaxMinValue(self,item, value):
         value = int(value)
         parameter_limits = {
@@ -180,6 +182,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
                 self.send_cmd()
                 # time.sleep(0.01)
                 self.get_basic_info_mcu()
+                # self.close_other_window()
             except BaseException as e:
                 print("121231298908", e)
                 break
@@ -1296,7 +1299,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
                     device_name=device_name,
                     value=float(value),
                     # _is_debug=_is_debug,
-                    is_deviation=0,
+                    # is_deviation=0,
                 )
             case "turntable_steering":
                 # 转盘舵机
@@ -1304,7 +1307,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
                     device_name=device_name,
                     value=float(value),
                     # _is_debug=_is_debug,
-                    is_deviation=0,
+                    # is_deviation=0,
                 )
             case "turntable_position_motor":
                 # 转盘舵机

+ 1 - 1
python/models.py

@@ -97,4 +97,4 @@ class LogoParams(BaseModel):
     
 class LogoParamsupdate(BaseModel):
     """系统配置"""
-    value: str = Field(default=None, description="json数据")
+    path: str = Field(default=None, description="要删除得文件路径")

BIN
python/requestments.txt