xcore通讯协议完善
This commit is contained in:
@ -309,15 +309,25 @@ class HmiRequest(object):
|
||||
self.__half_pkg = b""
|
||||
self.__half_pkg_flag = False
|
||||
self.__is_first_frame = True
|
||||
self.__is_very_first_frame = True
|
||||
self.__is_debug = True
|
||||
|
||||
self.__t_heartbeat = None
|
||||
self.__t_unpackage = None
|
||||
self.__t_unpackage_xs = None
|
||||
self.__t_is_alive = Thread(target=self.__is_alive)
|
||||
self.__t_is_alive.daemon = True
|
||||
self.__t_is_alive.start()
|
||||
time.sleep(3)
|
||||
self.__socket_conn()
|
||||
self.__t_heartbeat = Thread(target=self.__heartbeat)
|
||||
self.__t_heartbeat.daemon = True
|
||||
self.__t_heartbeat.start()
|
||||
self.__t_unpackage = Thread(target=self.__unpackage, args=(self.__c,))
|
||||
self.__t_unpackage.daemon = True
|
||||
self.__t_unpackage.start()
|
||||
self.__t_unpackage_xs = Thread(target=self.__unpackage_xs, args=(self.__c_xs,))
|
||||
self.__t_unpackage_xs.daemon = True
|
||||
self.__t_unpackage_xs.start()
|
||||
# self.__t_heartbeat = None
|
||||
# self.__t_unpackage = None
|
||||
# self.__t_unpackage_xs = None
|
||||
# self.__t_is_alive = Thread(target=self.__is_alive)
|
||||
# self.__t_is_alive.daemon = True
|
||||
# self.__t_is_alive.start()
|
||||
# time.sleep(3)
|
||||
|
||||
def __is_alive(self):
|
||||
while not self.__close_hmi:
|
||||
@ -341,7 +351,7 @@ class HmiRequest(object):
|
||||
|
||||
def close(self):
|
||||
try:
|
||||
self.__close_hmi = True
|
||||
# self.__close_hmi = True
|
||||
self.__is_connected = False
|
||||
time.sleep(clibs.interval*2)
|
||||
self.__c.close()
|
||||
@ -486,42 +496,56 @@ class HmiRequest(object):
|
||||
self.__is_first_frame = False
|
||||
elif not self.__is_first_frame: # 不是首帧
|
||||
if self.__leftovers > 0 and self.__valid_data_length > 0:
|
||||
self.__is_first_frame = False
|
||||
self.__response += data[:self.__leftovers]
|
||||
self.__index = self.__leftovers
|
||||
self.__valid_data_length -= self.__leftovers
|
||||
self.__leftovers = 0
|
||||
if self.__valid_data_length == 0:
|
||||
if len(data) >= self.__leftovers:
|
||||
self.__is_first_frame = False
|
||||
self.__response += data[:self.__leftovers]
|
||||
self.__index = self.__leftovers
|
||||
self.__valid_data_length -= self.__leftovers
|
||||
self.__leftovers = 0
|
||||
|
||||
if self.__valid_data_length == 0:
|
||||
# with open(f"{clibs.log_path}/response.txt", mode="a", encoding="utf-8") as f_res:
|
||||
# f_res.write(f"{json.loads(self.__response.decode())}" + "\n")
|
||||
clibs.insert_logdb("DEBUG", "openapi", self.__response.decode())
|
||||
self.__response = b""
|
||||
self.__is_first_frame = True
|
||||
continue # 此时应该重新 get_headers
|
||||
|
||||
if len(data[self.__index:]) == 2:
|
||||
self.__half_frm = data[self.__index:]
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
self.__half_frm_flag = 2
|
||||
elif len(data[self.__index:]) == 1:
|
||||
self.__half_frm = data[self.__index:]
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
self.__half_frm_flag = 1
|
||||
elif len(data[self.__index:]) == 0:
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
self.__half_frm_flag = 0
|
||||
else:
|
||||
self.__half_frm_flag = -1
|
||||
|
||||
elif len(data) < self.__leftovers:
|
||||
self.__response += data
|
||||
self.__leftovers -= len(data)
|
||||
self.__valid_data_length -= len(data)
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
|
||||
elif self.__leftovers > 0 and self.__valid_data_length == 0:
|
||||
if len(data) >= self.__leftovers:
|
||||
self.__response += data[:self.__leftovers]
|
||||
self.__index = self.__leftovers
|
||||
self.__leftovers = 0
|
||||
# with open(f"{clibs.log_path}/response.txt", mode="a", encoding="utf-8") as f_res:
|
||||
# f_res.write(f"{json.loads(self.__response.decode())}" + "\n")
|
||||
clibs.insert_logdb("DEBUG", "openapi", self.__response.decode())
|
||||
self.__response = b""
|
||||
self.__is_first_frame = True
|
||||
continue # 此时应该重新 get_headers
|
||||
elif len(data) < self.__leftovers:
|
||||
self.__response += data
|
||||
self.__leftovers -= len(data)
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
|
||||
if len(data[self.__index:]) == 2:
|
||||
self.__half_frm = data[self.__index:]
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
self.__half_frm_flag = 2
|
||||
elif len(data[self.__index:]) == 1:
|
||||
self.__half_frm = data[self.__index:]
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
self.__half_frm_flag = 1
|
||||
elif len(data[self.__index:]) == 0:
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
self.__half_frm_flag = 0
|
||||
else:
|
||||
self.__half_frm_flag = -1
|
||||
|
||||
elif self.__leftovers > 0 and self.__valid_data_length == 0:
|
||||
self.__response += data[:self.__leftovers]
|
||||
self.__index = self.__leftovers
|
||||
self.__leftovers = 0
|
||||
# with open(f"{clibs.log_path}/response.txt", mode="a", encoding="utf-8") as f_res:
|
||||
# f_res.write(f"{json.loads(self.__response.decode())}" + "\n")
|
||||
clibs.insert_logdb("DEBUG", "openapi", self.__response.decode())
|
||||
self.__response = b""
|
||||
self.__is_first_frame = True
|
||||
|
||||
elif self.__leftovers == 0 and self.__valid_data_length > 0:
|
||||
# 1. len(data[self.__index:]) > 2
|
||||
@ -626,6 +650,16 @@ class HmiRequest(object):
|
||||
self.__valid_data_length -= len(data[self.__index:])
|
||||
self.__index += clibs.MAX_FRAME_SIZE
|
||||
else:
|
||||
# DEBUG INFO
|
||||
# if self.__is_debug:
|
||||
# print(f"12 index = {self.__index}")
|
||||
# print(f"12 frm_value = {frm_value}")
|
||||
# print(f"12 leftovers = {self.__leftovers}")
|
||||
# print(f"12 valid_data_length = {self.__valid_data_length}")
|
||||
# print(f"12 is_first_frame = {self.__is_first_frame}")
|
||||
# if self.__valid_data_length < 0 or self.__leftovers > 1024:
|
||||
# print(f"data = {data}")
|
||||
# raise Exception("DataError")
|
||||
clibs.insert_logdb("ERROR", "openapi", "hr-get_response: Will never be here")
|
||||
raise Exception("WillNeverBeHere")
|
||||
|
||||
|
Reference in New Issue
Block a user