8. [openapi.py] 增加心跳检测函数,并开启线程执行;取消在该文件中生成实例
9. [aio.py] 完成detect_network,并在main函数开启线程
10. 将templates文件夹移动到assets内
This commit is contained in:
gitea 2024-06-23 20:18:41 +08:00
parent 295894a843
commit a4009eb17c
14 changed files with 50 additions and 29 deletions

View File

@ -254,11 +254,14 @@ v0.1.7.0(2024/06/29)
5. [aio.py] 修改了Data Process中初始化的动作使得初始化时的状态统一成程序刚启动时的样子 5. [aio.py] 修改了Data Process中初始化的动作使得初始化时的状态统一成程序刚启动时的样子
6. [aio.py] 增加了tabview的点击行为函数每次点击tab都会初始化 6. [aio.py] 增加了tabview的点击行为函数每次点击tab都会初始化
7. [aio.py] 增加了Automatic Test界面元素包括如下并完成了功能框架的搭建 7. [aio.py] 增加了Automatic Test界面元素包括如下并完成了功能框架的搭建
- 标签:文件/角速度/减速比 - 标签:文件/角速度/减速比
- 按钮:急停及恢复 - 按钮:急停及恢复
- 输入框:文件路径/角速度/减速比 - 输入框:文件路径/角速度/减速比
- OptionMenu负载 - OptionMenu负载
- 进度条 - 进度条
8. [openapi.py] 增加心跳检测函数,并开启线程执行;取消在该文件中生成实例
9. [aio.py] 完成detect_network并在main函数开启线程
10. 将templates文件夹移动到assets内
> **关于HMI接口** > **关于HMI接口**
> - 封包解包顺序:帧长度二字节/包长度四字节/协议二字节/预留二字节,\x04\x00:\x00\x00\tR:\x02:\x00 > - 封包解包顺序:帧长度二字节/包长度四字节/协议二字节/预留二字节,\x04\x00:\x00\x00\tR:\x02:\x00

View File

@ -0,0 +1,5 @@
{
"id": "xxxxxxxxxxx",
"module": "system",
"command": "controller.heart"
}

View File

@ -0,0 +1 @@
0

View File

@ -4,7 +4,7 @@ from os import getcwd
from threading import Thread from threading import Thread
import tkinter.messagebox import tkinter.messagebox
import customtkinter import customtkinter
from time import time, strftime, localtime from time import time, strftime, localtime, sleep
from urllib.request import urlopen from urllib.request import urlopen
from socket import setdefaulttimeout from socket import setdefaulttimeout
import data_process.brake as brake import data_process.brake as brake
@ -70,9 +70,6 @@ widgits_at = {
class App(customtkinter.CTk): class App(customtkinter.CTk):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
self.net_detect = Thread(target=self.detect_network)
self.net_detect.daemon = True
self.net_detect.start()
self.my_font = customtkinter.CTkFont(family="Consolas", size=16, weight="bold") self.my_font = customtkinter.CTkFont(family="Consolas", size=16, weight="bold")
self.w_param = 84 self.w_param = 84
# ===================================================================== # =====================================================================
@ -209,7 +206,11 @@ class App(customtkinter.CTk):
pass pass
def detect_network(self): def detect_network(self):
pass while True:
with open('./automatic_test/templates/heartbeat', 'r', encoding='utf-8') as f_h:
pb_color = 'green' if f_h.read().strip() == '1' else 'red'
self.progressbar.configure(progress_color=pb_color)
sleep(3)
def thread_it(self, func, *args): def thread_it(self, func, *args):
""" 将函数打包进线程 """ """ 将函数打包进线程 """
@ -489,5 +490,11 @@ class App(customtkinter.CTk):
if __name__ == "__main__": if __name__ == "__main__":
with open("./automatic_test/templates/heartbeat", "w", encoding='utf-8') as f_h:
f_h.write('0')
aio = App() aio = App()
aio.net_detect = Thread(target=aio.detect_network)
aio.net_detect.daemon = True
aio.net_detect.start()
aio.mainloop() aio.mainloop()

View File

@ -1,16 +1,19 @@
import openapi import openapi
hr = openapi.hr hr = openapi.HmiRequest()
# 一、设置/检测机器人状态: # 一、设置/检测机器人状态:
# 1. 上电 # 1. 上电
# 2. 软限位打开 # 2. 软限位打开
# 3. 示教器断开 # 3. 示教器断开
# 4. 操作模式 # 4. 操作模式/机器人类型
# 5. 控制器状态/工作任务控件/机器人动态 # 5. 控制器状态/工作任务控件/机器人动态
# 二、加载RL程序开始运行 # 二、加载RL程序开始运行
# 1. 怎么触发急停
# 2. 怎么恢复急停
# 3. 怎么采集曲线
# 4.
# 三、运行过程中,收集数据,并处理出结果 # 三、运行过程中,收集数据,并处理出结果

View File

@ -10,25 +10,26 @@ MAX_FRAME_SIZE = 1024
class HmiRequest(object): class HmiRequest(object):
def __init__(self): def __init__(self):
super().__init__()
self.c = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.c.connect(('192.168.0.160', 5050)) # self.c.connect(('192.168.0.160', 5050))
# self.c.connect(('192.168.84.129', 5050)) self.c.connect(('192.168.84.129', 5050))
self.c.setblocking(False) self.c.setblocking(False)
self.c_msg = [] self.c_msg = []
self.c_xs = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.c_xs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.c_xs.connect(('192.168.0.160', 6666)) # self.c_xs.connect(('192.168.0.160', 6666))
# self.c_xs.connect(('192.168.84.129', 6666)) self.c_xs.connect(('192.168.84.129', 6666))
self.c_xs.setblocking(False) self.c_xs.setblocking(False)
self.c_msg_xs = [] self.c_msg_xs = []
self.t_heartbeat = threading.Thread(target=self.__heartbeat)
self.t_heartbeat.daemon = True
self.t_heartbeat.start()
self.t_unpackage = threading.Thread(target=self.__unpackage, args=(self.c, )) self.t_unpackage = threading.Thread(target=self.__unpackage, args=(self.c, ))
self.t_unpackage.daemon = True self.t_unpackage.daemon = True
self.t_unpackage.start() self.t_unpackage.start()
self.t_unpackage_xs = threading.Thread(target=self.__unpackage_xs, args=(self.c_xs, )) self.t_unpackage_xs = threading.Thread(target=self.__unpackage_xs, args=(self.c_xs, ))
self.t_unpackage_xs.daemon = True self.t_unpackage_xs.daemon = True
self.t_unpackage_xs.start() self.t_unpackage_xs.start()
# self.t = threading.Thread(target=self.__heartbeat)
# self.t.daemon = True
# self.t.start()
self.flag = 0 self.flag = 0
self.response = '' self.response = ''
self.leftover = 0 self.leftover = 0
@ -52,6 +53,14 @@ class HmiRequest(object):
print("无法读取数据,需要确认") print("无法读取数据,需要确认")
exit(10) exit(10)
def __heartbeat(self):
while True:
_id = self.excution('controller.heart')
_flag = 1 if self.get_from_id(_id) else 0
with open("./templates/heartbeat", "w", encoding='utf-8') as f_h:
f_h.write(str(_flag))
time.sleep(10)
def __msg_storage(self, response, flag=0): def __msg_storage(self, response, flag=0):
messages = self.c_msg if flag == 0 else self.c_msg_xs messages = self.c_msg if flag == 0 else self.c_msg_xs
if len(messages) < 1000: if len(messages) < 1000:
@ -154,7 +163,8 @@ class HmiRequest(object):
return msg return msg
time.sleep(1) time.sleep(1)
else: else:
print(f'无法查询到{msg_id}对应的响应') # print(f'无法查询到{msg_id}对应的响应')
return None
def __package(self, cmd): def __package(self, cmd):
_frame_head = (len(cmd)+6).to_bytes(length=2, byteorder='big') _frame_head = (len(cmd)+6).to_bytes(length=2, byteorder='big')
@ -234,11 +244,3 @@ class HmiRequest(object):
return req['id'] return req['id']
else: # for xService else: # for xService
pass pass
hr = HmiRequest()