import socket import struct import tkinter as tk import threading from udpmsg import * from datetime import datetime from tkinter import font import threading from disSys import * from logWin import * target_ip = '127.0.0.1' target_port = 5000 def receive_messages(sock, logwin:logWin, disSysWin:disSys): while True: current_time = datetime.now() formatted_time = current_time.strftime("%Y-%m-%d %H:%M:%S") data, address = sock.recvfrom(4096) headBuf = data[:6] header = struct.unpack('接收到来自 {address} | 高压母线配电指令:\n") logWin.display_log(logwin,f"{formatted_time}->接收到来自 {address} | 高压母线配电指令:") if(msg.fuelCellCircuitBreaker==0x55): disSysWin.dict1['燃料电池断路器']='闭合' elif(msg.fuelCellCircuitBreaker==0xAA): disSysWin.dict1['燃料电池断路器']='断开' if(msg.powerLithiumBatteryCircuitBreaker==0x55): disSysWin.dict1['动力锂电池断路器']='闭合' elif(msg.powerLithiumBatteryCircuitBreaker==0xAA): disSysWin.dict1['动力锂电池断路器']='断开' if(msg.propulsionMotorCircuitBreaker==0x55): disSysWin.dict1['推进电机断路器']='闭合' elif(msg.propulsionMotorCircuitBreaker==0xAA): disSysWin.dict1['推进电机断路器']='断开' if(msg.lithiumBatteryGroupInstrumentCircuitBreaker==0x55): disSysWin.dict1['仪表锂电池断路器']='闭合' elif(msg.lithiumBatteryGroupInstrumentCircuitBreaker==0xAA): disSysWin.dict1['仪表锂电池断路器']='断开' if(msg.dcDc5ModuleCircuitBreaker==0x55): disSysWin.dict1['DC/DC5模块断路器']='闭合' elif(msg.dcDc5ModuleCircuitBreaker==0xAA): disSysWin.dict1['DC/DC5模块断路器']='断开' if(msg.bowHighVoltageDistributionBoxCircuitBreaker==0x55): disSysWin.dict1['艏部高压配电断路器']='闭合' elif(msg.bowHighVoltageDistributionBoxCircuitBreaker==0xAA): disSysWin.dict1['艏部高压配电断路器']='断开' if(msg.sternFTDevice45CircuitBreaker==0x55): disSysWin.dict1['艏部FT4/5断路器']='闭合' elif(msg.sternFTDevice45CircuitBreaker==0xAA): disSysWin.dict1['艏部FT4/5断路器']='断开' if(msg.sternRudderSwitch1CircuitBreaker==0x55): disSysWin.dict1['艉舵1/2断路器']='闭合' elif(msg.sternRudderSwitch1CircuitBreaker==0xAA): disSysWin.dict1['艉舵1/2断路器']='断开' if(msg.sternRudderSwitch2CircuitBreaker==0x55): disSysWin.dict1['艉舵3/4断路器']='闭合' elif(msg.sternRudderSwitch2CircuitBreaker==0xAA): disSysWin.dict1['艉舵3/4断路器']='断开' if(msg.fbReservedCircuitBreaker==0x55): disSysWin.dict1['FB预留断路器']='闭合' elif(msg.fbReservedCircuitBreaker==0xAA): disSysWin.dict1['FB预留断路器']='断开' if(msg.tyzReservedCircuitBreaker==0x55): disSysWin.dict1['TYZ预留断路器']='闭合' elif(msg.tyzReservedCircuitBreaker==0xAA): disSysWin.dict1['TYZ预留断路器']='断开' if(msg.reservedCircuitBreaker==0x55): disSysWin.dict1['预留断路器']='闭合' elif(msg.reservedCircuitBreaker==0xAA): disSysWin.dict1['预留断路器']='断开' disSysWin.update_disp() def send_messages(sock, logwin:logWin, disSysWin:disSys): while True: # 配电消息反馈 a,b,c,d = disSysWin.updata_data() sock.sendto(a, (target_ip, target_port)) sock.sendto(b, (target_ip, target_port)) sock.sendto(c, (target_ip, target_port)) sock.sendto(d, (target_ip, target_port)) #TODO复合管控消息反馈 threading.Event().wait(1) # 每隔1秒发送一次消息