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();
|
auto now = std::chrono::steady_clock::now();
|
||||||
if (now - lastMessageTime > timeout)
|
if (now - lastMessageTime > timeout)
|
||||||
{
|
{
|
||||||
gear = 0;
|
gear = 3;
|
||||||
speed = 0.0;
|
speed = 0.0;
|
||||||
std::cout << "超时无新数据,已重置 gear 和 speed" << std::endl;
|
std::cout << "超时无新数据,已重置 gear 和 speed" << std::endl;
|
||||||
lastMessageTime = now; // 避免重复打印
|
lastMessageTime = now; // 避免重复打印
|
||||||
|
|||||||
61
src/main.cpp
61
src/main.cpp
@ -26,6 +26,23 @@ void alwaysRed(SerialPort &serial)
|
|||||||
std::cerr << "发送数据失败" << std::endl;
|
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)
|
void yellowBreathing(SerialPort &serial)
|
||||||
{
|
{
|
||||||
@ -87,23 +104,13 @@ int main()
|
|||||||
|
|
||||||
std::cout << "串口号: " << port << "\n波特率: " << baudrate << std::endl;
|
std::cout << "串口号: " << port << "\n波特率: " << baudrate << std::endl;
|
||||||
|
|
||||||
// ===== MQTT 测试连接 =====
|
|
||||||
MqttClient mqtt("config.toml");
|
MqttClient mqtt("config.toml");
|
||||||
if (mqtt.start())
|
if (!mqtt.start())
|
||||||
{
|
|
||||||
std::cout << "MQTT 启动成功,等待消息..." << std::endl;
|
|
||||||
std::this_thread::sleep_for(std::chrono::seconds(5));
|
|
||||||
mqtt.disconnect();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
std::cerr << "MQTT 启动失败" << std::endl;
|
std::cerr << "MQTT 启动失败" << std::endl;
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
std::cout << "MQTT 连接成功,开始循环处理..." << std::endl;
|
||||||
while (1)
|
|
||||||
{
|
|
||||||
/* code */
|
|
||||||
}
|
|
||||||
|
|
||||||
SerialPort serial;
|
SerialPort serial;
|
||||||
if (!serial.openPort(port, baudrate))
|
if (!serial.openPort(port, baudrate))
|
||||||
@ -111,12 +118,36 @@ int main()
|
|||||||
return 1;
|
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);
|
alwaysRed(serial);
|
||||||
std::this_thread::sleep_for(std::chrono::seconds(2)); // 保持常红2秒
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (speed > 0)
|
||||||
|
{
|
||||||
yellowBreathing(serial);
|
yellowBreathing(serial);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alwaysGreen(serial);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(500));
|
||||||
|
}
|
||||||
|
|
||||||
serial.closePort();
|
serial.closePort();
|
||||||
|
mqtt.disconnect();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user