temp
This commit is contained in:
parent
ec13c4d32b
commit
3a71b608f0
@ -121,7 +121,7 @@ void MqttClient::checkTimeout(std::chrono::seconds timeout)
|
||||
auto now = std::chrono::steady_clock::now();
|
||||
if (now - lastMessageTime > timeout)
|
||||
{
|
||||
gear = 0;
|
||||
gear = 3;
|
||||
speed = 0.0;
|
||||
std::cout << "超时无新数据,已重置 gear 和 speed" << std::endl;
|
||||
lastMessageTime = now; // 避免重复打印
|
||||
|
||||
61
src/main.cpp
61
src/main.cpp
@ -26,6 +26,23 @@ void alwaysRed(SerialPort &serial)
|
||||
std::cerr << "发送数据失败" << std::endl;
|
||||
}
|
||||
|
||||
// 常绿灯
|
||||
void alwaysGreen(SerialPort &serial)
|
||||
{
|
||||
LedCommand cmd;
|
||||
cmd.setColor(0, 255, 0); // 红色
|
||||
cmd.setExtCount(1);
|
||||
auto packet = cmd.serialize();
|
||||
|
||||
std::cout << "发送常红数据包:";
|
||||
for (auto b : packet)
|
||||
printf(" %02X", b);
|
||||
std::cout << std::endl;
|
||||
|
||||
if (!serial.writeData(packet.data(), packet.size()))
|
||||
std::cerr << "发送数据失败" << std::endl;
|
||||
}
|
||||
|
||||
// 黄色呼吸灯效果
|
||||
void yellowBreathing(SerialPort &serial)
|
||||
{
|
||||
@ -87,23 +104,13 @@ int main()
|
||||
|
||||
std::cout << "串口号: " << port << "\n波特率: " << baudrate << std::endl;
|
||||
|
||||
// ===== MQTT 测试连接 =====
|
||||
MqttClient mqtt("config.toml");
|
||||
if (mqtt.start())
|
||||
{
|
||||
std::cout << "MQTT 启动成功,等待消息..." << std::endl;
|
||||
std::this_thread::sleep_for(std::chrono::seconds(5));
|
||||
mqtt.disconnect();
|
||||
}
|
||||
else
|
||||
if (!mqtt.start())
|
||||
{
|
||||
std::cerr << "MQTT 启动失败" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
while (1)
|
||||
{
|
||||
/* code */
|
||||
}
|
||||
std::cout << "MQTT 连接成功,开始循环处理..." << std::endl;
|
||||
|
||||
SerialPort serial;
|
||||
if (!serial.openPort(port, baudrate))
|
||||
@ -111,12 +118,36 @@ int main()
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 调用函数实现两个动作
|
||||
while (true)
|
||||
{
|
||||
mqtt.checkTimeout(std::chrono::seconds(3)); // 没消息则重置数据
|
||||
|
||||
int gear = mqtt.getGear();
|
||||
double speed = mqtt.getSpeed();
|
||||
|
||||
// 根据 gear 和 speed 控制 LED
|
||||
LedCommand cmd;
|
||||
if (gear == 3)
|
||||
{
|
||||
alwaysRed(serial);
|
||||
std::this_thread::sleep_for(std::chrono::seconds(2)); // 保持常红2秒
|
||||
}
|
||||
else
|
||||
{
|
||||
if (speed > 0)
|
||||
{
|
||||
yellowBreathing(serial);
|
||||
}
|
||||
else
|
||||
{
|
||||
alwaysGreen(serial);
|
||||
}
|
||||
}
|
||||
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||
}
|
||||
|
||||
serial.closePort();
|
||||
mqtt.disconnect();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user