fix(DLPilot): 电源自检误把成功帧判为错误(实机 M301 回包 payload='PD' 无 ok 前缀, 改按 TYPE 译码分类)
This commit is contained in:
Binary file not shown.
+14
-3
@@ -878,7 +878,17 @@ class App(ctk.CTk):
|
|||||||
self._pd_timer = self.after(3000, lambda: self._pd_step_done(False, '超时'))
|
self._pd_timer = self.after(3000, lambda: self._pd_step_done(False, '超时'))
|
||||||
|
|
||||||
def _pd_on_reply(self, line):
|
def _pd_on_reply(self, line):
|
||||||
self._pd_step_done(line.startswith('← ok'), line)
|
self._pd_step_done(self._pd_reply_ok(line), line)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _pd_reply_ok(line):
|
||||||
|
"""应答行 -> 是否成功帧(TYPE=0xF0): 成功行正文是 payload 原文(如 'PD'/'okTL:246',
|
||||||
|
不必有 ok 前缀), 失败行正文是 TYPE 译码词或带 err:, 据此区分"""
|
||||||
|
body = line[2:].split(' [')[0].strip()
|
||||||
|
if 'err:' in body:
|
||||||
|
return False
|
||||||
|
return not any(n in body for n in dlpc_rs485.TYPE_NAMES.values()
|
||||||
|
if n != '成功') # '成功' 不会出现在日志正文, 仅防 payload 撞词
|
||||||
|
|
||||||
def _pd_step_done(self, ok, line=''):
|
def _pd_step_done(self, ok, line=''):
|
||||||
if not self._pd_seq:
|
if not self._pd_seq:
|
||||||
@@ -889,8 +899,9 @@ class App(ctk.CTk):
|
|||||||
_cmd, kind = self._pd_seq.pop(0)
|
_cmd, kind = self._pd_seq.pop(0)
|
||||||
payload = ''
|
payload = ''
|
||||||
if ok:
|
if ok:
|
||||||
payload = line[2:].split(' [')[0].strip() # 去 '← ' 与尾部 hex
|
body = line[2:].split(' [')[0].strip() # 去 '← ' 与尾部 hex
|
||||||
payload = payload[2:].strip() if payload[:2].lower() == 'ok' else ''
|
payload = '' if body.lower() == 'ok' else \
|
||||||
|
(body[2:].strip() if body[:2].lower() == 'ok' else body)
|
||||||
if kind == 'pd':
|
if kind == 'pd':
|
||||||
self.chip_pd.configure(fg_color=CHIP_OK if ok else CHIP_ERR,
|
self.chip_pd.configure(fg_color=CHIP_OK if ok else CHIP_ERR,
|
||||||
text_color='#FFFFFF',
|
text_color='#FFFFFF',
|
||||||
|
|||||||
Reference in New Issue
Block a user