Files

60 lines
2.3 KiB
Python

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 *
from ccuSys 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)
# 接受配电系统消息
disSysWin.update_fromMsg(data)
headBuf = data[:6]
header = struct.unpack('<BBHH',headBuf)
start1 = data[0]
start2 = data[1]
msg_id = data[2]
msg_len = data[3]
if(start1==0x40 and start2==0x40):
if(msg_id==0x0001):
msg = msg_disHVBCmd()
msg.unpack(data)
# text_box.insert(tk.END, f"{formatted_time}->接收到来自 {address} | 高压母线配电指令:\n")
logWin.display_log(logwin,f"{formatted_time}->接收到来自 {address} | 高压母线配电指令:")
elif(msg_id==0x0002):
logWin.display_log(logwin,f"{formatted_time}->接收到来自 {address} | 高压汇流排A配电指令:")
elif(msg_id==0x0003):
logWin.display_log(logwin,f"{formatted_time}->接收到来自 {address} | 高压汇流排B配电指令:")
elif(msg_id==0x0004):
logWin.display_log(logwin,f"{formatted_time}->接收到来自 {address} | 低压母线配电指令:")
elif(start1==0x20 and start2==0x20):
if(msg_id==0x0050):
logWin.display_log(logwin,f"{formatted_time}->接收到来自 {address} | CCU控制指令:")
def send_messages(sock, logwin:logWin, disSysWin:disSys,ccuSysWin:ccuSys):
while True:
# 配电消息反馈
a,b,c,d = disSysWin.get_date()
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复合管控消息反馈
e = ccuSysWin.ccuState.pack()
sock.sendto(e, (target_ip, target_port))
threading.Event().wait(1) # 每隔1秒发送一次消息