rambo před 2 měsíci
rodič
revize
474f4e8872
3 změnil soubory, kde provedl 30 přidání a 16 odebrání
  1. 1 1
      python/mcu/BaseClass.py
  2. 14 8
      python/mcu/DeviceControl.py
  3. 15 7
      python/mcu/ProgramItem.py

+ 1 - 1
python/mcu/BaseClass.py

@@ -31,7 +31,7 @@ class BaseClass:
             loop.create_task(
                 self.websocket_manager.send_personal_message(data, self.websocket)
             )
-
+        print("\033[1;32;40m 发送消息===>sendSocketMessage \033[0m", data)
     async def asyncSendSocketMessage(self, code=0, msg="", data=None, device_status=2):
         data = {
             "code": code,

+ 14 - 8
python/mcu/DeviceControl.py

@@ -194,6 +194,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
         self.to_init_device_origin_point(device_name="mcu", is_force=is_force)
         print("MCU 开始循环~")
         logger.info("MCU 开始循环~")
+        loop = asyncio.get_event_loop()
         while 1:
             await asyncio.sleep(1)
             if not self.serial_ins or not self.connect_state:
@@ -206,7 +207,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
                 #     device_status=2,
                 # )
                 # print("mcu   send_cmd")
-                self.send_cmd()
+                loop.create_task(self.send_cmd())
                 # time.sleep(0.01)
                 if not self.get_basic_info_mcu():
                     pass
@@ -416,20 +417,21 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
         await asyncio.sleep(0.001)
         while True:
             if self.send_data_queue:
-                self.sendSocketMessage(msg="正在发送命令", device_status=1)
+                # self.sendSocketMessage(msg="正在发送命令", device_status=1)
                 data = self.send_data_queue.pop(0)
                 self.serial_ins.write_cmd(data)
-                self.sendSocketMessage(msg="命令发送完成", device_status=2)
+                # self.sendSocketMessage(msg="命令发送完成", device_status=2)
             else:
                 break
 
-    def send_cmd(self):
+    async def send_cmd(self):
         self.lock.acquire()
+        asyncio.sleep(0.01)
         if self.send_data_queue:
-            self.sendSocketMessage(msg="正在发送命令", device_status=1)
+            # self.sendSocketMessage(msg="正在发送命令", device_status=1)
             data = self.send_data_queue.pop(0)
             self.serial_ins.write_cmd(data)
-            self.sendSocketMessage(msg="命令发送完成", device_status=2)
+            # self.sendSocketMessage(msg="命令发送完成", device_status=2)
         else:
             # self.t_n += 1
             # 加大发送获取基础数据的时间间隔
@@ -472,7 +474,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
 
         # self.self_sign.emit({"type": "connect_sign", "data": connect_flag})
         message = {"type": "connect_sign", "data": connect_flag}
-        self.sendSocketMessage(msg="接收接信息", data=message)
+        self.sendSocketMessage(msg="接收接信息", data=message)
         print("接收链接信息")
         logger.info("接收链接信息")
         return
@@ -546,6 +548,9 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
         receive_data = self.serial_ins.read_cmd(out_time=1)
         if receive_data is False:
             print("------------------------------------------------4657564654")
+            print(
+                "------------------------------------------------get_basic_info_mcu------------------"
+            )
             logger.info("------------------------------------------------4657564654")
             self.connect_state = False
             return False
@@ -1243,6 +1248,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
     def mcu_move_state(self):
         if self.is_get_mcu_state is False:
             self._mcu_move_state = 2
+            # self.action_state = 2
         else:
             if self.m_t == 1:
                 if (
@@ -1409,7 +1415,7 @@ class DeviceControl(BaseClass, metaclass=SingletonType):
         if self.connect_state:
             self.lock.acquire()
             # print('==========================>1111')
-            # print("-------------------to_get_mcu_base_info--------------------------")
+            print("-------------------to_get_mcu_base_info--------------------------")
             data = [self.command["get_all_info"], 1]
             f = True
             try:

+ 15 - 7
python/mcu/ProgramItem.py

@@ -150,8 +150,11 @@ class ProgramItem(BaseClass):
         last_num_1 = self.mcu.last_mcu_info_data["num"]
         await self.mcu.cleanAllReceiveData()
         while 1:
+            print("\033[1;31m执行检查动作\033[0m", self.mcu.mcu_move_state)
+            print("\033[1;31m执行检查动作\033[0m", self.mcu.action_state)
             if self.mcu.action_state != 1:
                 # 外部终止,停止运行
+                print("\033[1;31m执行结束\033[0m", "外部终止,停止运行")
                 return False
             cr_time = time.time()
             print(cr_time - _s, cr_time, _s)
@@ -160,20 +163,22 @@ class ProgramItem(BaseClass):
                 self.set_state(state_value=99)  # 标记异常
                 print("MCU检测运动未停止,自动退出")
                 self.sendSocketMessage(msg=self.error_info_text, device_status=-1)
+                print("\033[1;31m执行结束\033[0m", "MCU检测运动未停止,自动退出")
                 return False
                 # return True
             # 存在时间间隙,导致误认为所有设备已完成运动
             if self.mcu.mcu_move_state == 2:
+                print("\033[1;31m执行结束\033[0m", "导致误认为所有设备已完成运动")
                 return True
             else:
                 self.mcu.to_get_mcu_base_info()
-                await self.mcu.send_all_cmd()
+                asyncio.create_task(self.mcu.send_all_cmd())
                 await asyncio.sleep(0.5)
                 self.mcu.get_basic_info_mcu()
                 # return True
-
-            await asyncio.sleep(0.1)
-            # self.mcu.to_get_mcu_base_info()
+        print("\033[1;31m执行结束\033[0m", self.mcu.action_state)
+        # await asyncio.sleep(0.1)
+        # self.mcu.to_get_mcu_base_info()
 
     async def run(self, total_len=5, *args):
         if total_len == 1:
@@ -223,13 +228,16 @@ class ProgramItem(BaseClass):
                     device_name="turntable_steering", value=self.turntable_angle
                 )
                 time.sleep(0.1)
-            self.mcu.send_all_cmd()
+            loop = asyncio.get_event_loop()
+            # self.mcu.send_all_cmd()
+            loop.create_task(self.mcu.send_all_cmd())
 
     async def do_run(self, *args):
         await asyncio.sleep(0.001)
         # if not self.goods_art_no:  # and self.action_name != "初始化位置"
         #     return False
         start_time = time.time()
+        self.mcu.is_get_mcu_state = False
         # ============连接MCU 处理步进电机与舵机等
         if settings.IS_MCU:
             if self.mode_type != "其他配置" and await self.check_mcu_move_is_stop() is False:
@@ -273,14 +281,14 @@ class ProgramItem(BaseClass):
                 # time.sleep(0.1)
 
             # MCU运动是否有停止检查,设定超时时间
-            await self.mcu.send_all_cmd()
+            asyncio.create_task(self.mcu.send_all_cmd())
             if self.mode_type != "其他配置":
                 await asyncio.sleep(1.2)
                 print("二次检查")
                 if await self.check_mcu_move_is_stop(re_check=True) is False:
                     print("MCU检测运动未停止,自动退出,   提前退出")
                     return
-
+        self.mcu.is_get_mcu_state = True
         if self.delay_time:
             await asyncio.sleep(self.delay_time)
         if self.is_photograph: