import logging import Constant from COM.COM_TCP import TCPClient import queue import json from Model.RobotModel import DataAddress,DATARequest,DATAReply from Util.util_log import log class RobotClient(TCPClient): def __init__(self, ip, port, photo_locs,command_quene, status_model:DataAddress): super().__init__(ip, port) self.command_quene = command_quene self.status_model = status_model self.errorCommands = {} self.photo_locs = photo_locs def add_sendQuene(self,command): #后面 命令分等级,紧急命令直接执行 self.command_quene.put(command) return def send_Command(self): try: if self.command_quene.qsize()!=0: command = self.command_quene.get() self.client_socket.send(command.encode()) if False: response = self.client_socket.recv(1024).decode('utf-8') response_message = json.loads(response) if True: print('正确相应') else: self.errorCommands[json.dumps(command).encode('utf-8')] = response_message print('出错') return True else: return True except Exception as e: log.log_message(logging.ERROR,str_tcp_robot_connect_fail) return False def send_Status(self): request = DATARequest() dataAddr = DataAddress() request.queryAddr.append(dataAddr) # 移除特殊属性和方法 request_status_json = request.toString() # 转字符串 try: self.client_socket.send(request_status_json.encode()) if True: response = self.client_socket.recv(1024).decode('utf-8') response_message = json.loads(response) if True: data_status = DATAReply() data_status.__dict__ = response_message data_address_array = data_status.queryData try: self.status_model.curMode = int(data_address_array[0]) self.status_model.setPosition(*data_address_array[1:13]) self.status_model.curAlarm = int(data_address_array[13]) self.status_model.isMoving = int(data_address_array[14]) self.status_model.RemoteCmdLen = int(data_address_array[15]) except: log.log_message(logging.ERROR,Constant.str_tcp_robot_data_error) return True except Exception as e: #log.log_message(logging.ERROR,f'{e}') return False