Auto commit at 2025-06-19 14:55:46

This commit is contained in:
cxh 2025-06-19 14:55:46 +08:00
parent e15bcea458
commit 8eaac5b877

View File

@ -71,6 +71,8 @@ void epsTimerTask(CANDriver &canctl)
// 定时器回调VCU 灯控、扫地、除尘等功能
void vcuTimerTask(CANDriver &canctl, DumperController &dumper)
{
static bool last_sweep_ctrl = false; // 上一次扫地状态(用于比较是否发生变化)
auto msg = get_safe_control();
vcu1_cmd.setLeftLight(msg.left_light);
@ -85,11 +87,16 @@ void vcuTimerTask(CANDriver &canctl, DumperController &dumper)
vcu2_cmd.setSpray(msg.spray);
vcu2_cmd.setSweeepCtrl(msg.sweep_ctrl);
// 只有在扫地中并且斗处于收斗状态时才发VCU指令
if (msg.sweep_ctrl && dumper.getSimpleState() == 0)
bool sweep_changed = (msg.sweep_ctrl != last_sweep_ctrl);
bool can_start_sweep = (msg.sweep_ctrl && dumper.getSimpleState() == 0);
if (sweep_changed || can_start_sweep)
{
// 状态变更(开或关) 或者 满足开始扫地条件,发出指令
canctl.sendFrame(vcu1_cmd.toFrame());
canctl.sendFrame(vcu2_cmd.toFrame());
last_sweep_ctrl = msg.sweep_ctrl; // 更新上一次状态
}
}