feat(DLPilot): M305 实测负载功率对接(功率检测三步序列)
This commit is contained in:
+16
-9
@@ -997,22 +997,22 @@ class App(ctk.CTk):
|
||||
self.var_fpdo.set(f'FPDO: {gear}V@{a_txt}A')
|
||||
|
||||
def _pwr_query(self):
|
||||
"""功率检测: M303 实测电压 + M304 实测电流(按有符号); 功率值待固件功率命令"""
|
||||
"""功率检测: M303 电压 + M304 电流(按有符号) + M305 功率(u32 mW)"""
|
||||
if not self.dlpc.is_connected():
|
||||
self.lbl_dlpc_st.configure(text='未连接串口', text_color='#E07A3F')
|
||||
return
|
||||
if self._pwr_seq:
|
||||
return
|
||||
self._pwr_seq = [('M303', 'mv'), ('M304', 'ma')]
|
||||
self._pwr_seq = [('M303', 'mv'), ('M304', 'ma'), ('M305', 'mw')]
|
||||
self._pwr_values = {}
|
||||
self._dlpc_log('功率检测: 开始')
|
||||
self._pwr_step_next()
|
||||
|
||||
def _pwr_step_next(self):
|
||||
if not self._pwr_seq:
|
||||
v_mv = self._pwr_values.get('mv', 0)
|
||||
ma = self._pwr_values.get('ma', 0)
|
||||
self._pwr_update(v_mv, ma)
|
||||
self._pwr_update(self._pwr_values.get('mv'),
|
||||
self._pwr_values.get('ma'),
|
||||
self._pwr_values.get('mw'))
|
||||
self._dlpc_log('功率检测: 完成')
|
||||
return
|
||||
self.dlpc.send(self._pwr_seq[0][0])
|
||||
@@ -1025,8 +1025,10 @@ class App(ctk.CTk):
|
||||
self.after_cancel(self._pwr_timer)
|
||||
self._pwr_timer = None
|
||||
cmd, kind = self._pwr_seq.pop(0)
|
||||
# 各步载荷长度: 电压/电流 2 字节, 功率 4 字节(u32)
|
||||
want_len = {'mv': 2, 'ma': 2, 'mw': 4}[kind]
|
||||
raw = dlpc_rs485.payload_bytes(fr) if fr is not None else b''
|
||||
if fr is None or fr.type_code != 0xF0 or len(raw) != 2:
|
||||
if fr is None or fr.type_code != 0xF0 or len(raw) != want_len:
|
||||
self._pwr_seq.clear()
|
||||
self.var_pwr.set('电压: ERR 电流: — 功率: —')
|
||||
self._dlpc_log('功率检测: 应答错误/超时, 中止')
|
||||
@@ -1035,11 +1037,16 @@ class App(ctk.CTk):
|
||||
self._pwr_values['mv'] = dlpc_rs485.payload_u16_be(raw)
|
||||
elif kind == 'ma':
|
||||
self._pwr_values['ma'] = dlpc_rs485.payload_s16_be(raw)
|
||||
elif kind == 'mw':
|
||||
self._pwr_values['mw'] = dlpc_rs485.payload_u32_be(raw)
|
||||
self._pwr_step_next()
|
||||
|
||||
def _pwr_update(self, v_mv, ma):
|
||||
"""功率读数框更新: 电压 V / 电流 mA; 功率暂不计算(待固件功率命令返回后填充)"""
|
||||
self.var_pwr.set(f'电压: {v_mv / 1000:.2f} V 电流: {ma} mA 功率: —')
|
||||
def _pwr_update(self, v_mv, ma, mw):
|
||||
"""功率读数框更新: 电压 V / 电流 mA / 功率 W(mW 换算, 两位小数; 缺项显示 —)"""
|
||||
v = f'{v_mv / 1000:.2f} V' if v_mv is not None else '—'
|
||||
a = f'{ma} mA' if ma is not None else '—'
|
||||
w = f'{mw / 1000:.2f} W' if mw is not None else '—'
|
||||
self.var_pwr.set(f'电压: {v} 电流: {a} 功率: {w}')
|
||||
|
||||
def _light_entry_apply(self, _evt=None):
|
||||
"""滑条数值输入框回车: 校验并限幅 54-800, 同步回滑条"""
|
||||
|
||||
Reference in New Issue
Block a user