v0.1.7.1(2024/06/29)

1. [APIs: aio.py]
   - 对于automatic test删除了输入框,使用configs.xlsx配置文件作为参数输入
   - 完善initialization/param_check/func_start_callback函数中对于automatic test的处理
   - 将textbox组件一直设置为normal状态,不再频繁切换disabled
   - 将所有的f_h文件对象修改为f_hb,并将connection_state修改为c_state
   - 在detect_network函数中,实例化HmiRequest,并在无限循环中检测心跳是否正常,如异常,则销毁hr,重新生成
   - 取消在tabview切换时,检测心跳的逻辑,这样做无法保证实时性
2. [APIs: openapi.py]
   - 将sock_conn函数移出__init__,单独作为连接函数存在
   - 新增全局变量self.t_bool,控制所有的线程中无限循环的启停,也就是可以人为的退出线程
   - 移除close_sock函数
   - heartbeat函数中新增打印所有消息的代码,调试时打开,平常关闭
   - execution函数中,新增对overview.set_autoload和overview.reload的支持
   - execution函数中,对send动作增加异常处理逻辑
3. [APIs: do_brake.py]
   - 新增文件,处理制动测试流程,建立连接,导入project,pp2main,run,采集并处理曲线数据,本地修改RL程序,推送至控制器等
   - 目前完成:
     - 文件合规性检查
     - 导入工程并设置为运行工程
4. [APIs: current.py] 修改scenario/single电机电流最大长度为150s
5. 在本文件中更新关于制动自动化测试的相关内容
This commit is contained in:
2024-06-29 07:48:54 +08:00
parent 79797a3bdd
commit 802ccd8e97
12 changed files with 302 additions and 117 deletions

View File

@ -16,37 +16,6 @@ class HmiRequest(object):
self.w2t = w2t
self.c = None
self.c_xs = None
def sock_conn():
# while True:
with open(f"{current_path}/../../assets/templates/heartbeat", "r", encoding='utf-8') as f_h:
connection_state = f_h.read().strip()
if connection_state == '0':
try:
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c.connect(('192.168.0.160', 5050))
# c.connect(('192.168.84.129', 5050))
c.setblocking(False)
c_xs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
c_xs.connect(('192.168.0.160', 6666))
# c_xs.connect(('192.168.84.129', 6666))
c_xs.setblocking(False)
self.w2t("Connection success", 0, 0, 'green')
with open(f"{current_path}/../../assets/templates/heartbeat", "w", encoding='utf-8') as f_h:
f_h.write('1')
return c, c_xs
except Exception as Err:
with open(f"{current_path}/../../assets/templates/heartbeat", "w", encoding='utf-8') as f_h:
f_h.write('0')
self.w2t("Connection failed...", 0, 0, 'red')
return None, None
self.c, self.c_xs = sock_conn()
if self.c is None or self.c_xs is None:
self.w2t("Aborting! Try to switch tabs to re-connect!", 0, 1, 'red')
self.c_msg = []
self.c_msg_xs = []
self.flag = 0
@ -54,7 +23,9 @@ class HmiRequest(object):
self.leftover = 0
self.flag_xs = 0
self.response_xs = ''
self.t_bool = True
self.sock_conn()
self.t_heartbeat = threading.Thread(target=self.heartbeat)
self.t_heartbeat.daemon = True
self.t_heartbeat.start()
@ -65,9 +36,29 @@ class HmiRequest(object):
self.t_unpackage_xs.daemon = True
self.t_unpackage_xs.start()
def close_sock(self):
self.c.close()
self.c_xs.close()
def sock_conn(self):
# while True:
with open(f"{current_path}/../../assets/templates/heartbeat", "r", encoding='utf-8') as f_hb:
c_state = f_hb.read().strip()
if c_state == '0':
try:
self.c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.c.connect(('192.168.0.160', 5050))
# self.c.connect(('192.168.84.129', 5050))
self.c.setblocking(False)
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.84.129', 6666))
self.c_xs.setblocking(False)
self.w2t("Connection success", 0, 0, 'green')
with open(f"{current_path}/../../assets/templates/heartbeat", "w", encoding='utf-8') as f_hb:
f_hb.write('1')
except Exception as Err:
self.w2t("Connection failed...", 0, 0, 'red')
with open(f"{current_path}/../../assets/templates/heartbeat", "w", encoding='utf-8') as f_hb:
f_hb.write('0')
def header_check(self, index, data):
try:
@ -87,12 +78,15 @@ class HmiRequest(object):
return 'DATA READ ERR'
def heartbeat(self):
while True:
while self.t_bool:
_id = self.excution('controller.heart')
_flag = 0 if self.get_from_id(_id) is None else 1
with open(f"{current_path}/../../assets/templates/heartbeat", "w", encoding='utf-8') as f_h:
f_h.write(str(_flag))
_flag = '0' if self.get_from_id(_id) is None else '1'
with open(f"{current_path}/../../assets/templates/heartbeat", "w", encoding='utf-8') as f_hb:
f_hb.write(_flag)
time.sleep(3)
# with open('log.txt', 'w') as f:
# for msg in self.c_msg:
# f.write(msg + '\n')
def msg_storage(self, response, flag=0):
messages = self.c_msg if flag == 0 else self.c_msg_xs
@ -224,7 +218,7 @@ class HmiRequest(object):
sel = selectors.DefaultSelector()
sel.register(sock, selectors.EVENT_READ, to_read)
while True:
while self.t_bool:
events = sel.select()
for key, mask in events:
callback = key.data
@ -244,7 +238,7 @@ class HmiRequest(object):
sel = selectors.DefaultSelector()
sel.register(sock, selectors.EVENT_READ, to_read)
while True:
while self.t_bool:
events = sel.select()
for key, mask in events:
callback = key.data
@ -268,13 +262,22 @@ class HmiRequest(object):
match command:
case 'state.set_tp_mode':
req['data']['tp_mode'] = kwargs['tp_mode']
case 1:
pass
case 'overview.set_autoload':
req['data']['autoload_prj_path'] = kwargs['autoload_prj_path']
case 'overview.reload':
req['data']['prj_path'] = kwargs['prj_path']
req['data']['tasks'] = kwargs['tasks']
req['id'] = self.gen_id(command)
print(f"req = {req}")
cmd = json.dumps(req, separators=(',', ':'))
self.c.send(self.package(cmd))
time.sleep(2)
try:
self.c.send(self.package(cmd))
time.sleep(2)
except Exception as Err:
self.w2t(f"{cmd}\n请求发送失败...\n{Err}", 0, 11)
return req['id']
else: # for xService
pass