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