调整通讯协议udp+uart
This commit is contained in:
+5
-8
@@ -9,7 +9,7 @@
|
||||
#include <QVector>
|
||||
#include "global.h"
|
||||
|
||||
class QSerialPort;
|
||||
class QUdpSocket;
|
||||
|
||||
// 摇杆量协议范围 0~4096,中位 2048(分类一各轴、Vehi_gear/Vehi_turning 通用)
|
||||
static const int kRcAxisMid = 2048;
|
||||
@@ -30,7 +30,8 @@ struct CanFault {
|
||||
// 下行 分类二/三 12 条(车端 → 遥控器):底盘 4 条、机械臂 4 条、洗消 2 条、气体检测仪 2 条,
|
||||
// 按 canId 分流转 handleFrame() 写入 Telemetry。
|
||||
// 全部为 29 位扩展帧、信号一律 Intel(小端)位序。
|
||||
// 串口是字节流,故线上帧统一为 18 字节:帧头 0x5AA5FF00 + canId + DLC + 8 字节数据 + 校验和。
|
||||
// 传输走 UDP:bind 本机 9000 端口收下行反馈,上行命令发往 127.0.0.1:9001。
|
||||
// UDP 载荷统一为 18 字节:帧头 0x5AA5FF00 + canId + DLC + 8 字节数据 + 校验和。
|
||||
// 通信超时判定:连续 2s 未收到任何合法帧则判为通信异常(最慢的下行周期 1000ms)。
|
||||
class CarCommunication : public QObject
|
||||
{
|
||||
@@ -41,7 +42,6 @@ public:
|
||||
|
||||
bool start();
|
||||
void stop();
|
||||
QString deviceName() const { return m_device; }
|
||||
|
||||
// 行车/机械臂模式(面板旋钮或遥控器报文)→ Arm_ControlCmd1 的 Arm_modeCmd / Arm_enable
|
||||
void setArmMode(bool arm) { m_armMode = arm; }
|
||||
@@ -73,7 +73,7 @@ signals:
|
||||
void faultAppended(const QString& system, const QString& code, const QString& desc);
|
||||
|
||||
private slots:
|
||||
void onReadyRead();
|
||||
void onDatagram();
|
||||
void onSendFast(); // 50ms 组:底盘 / 机械臂 / 急停
|
||||
void onSendMid(); // 100ms 组:洗消指令 / 洗消调试
|
||||
void onSendSlow(); // 1000ms 组:气体检测仪
|
||||
@@ -88,16 +88,13 @@ private:
|
||||
void setCommOk(bool ok);
|
||||
|
||||
Telemetry* m_tel = nullptr;
|
||||
QSerialPort* m_serial = nullptr;
|
||||
QByteArray m_buf; // 串口字节流缓冲:帧头滑窗重同步用
|
||||
QUdpSocket* m_sock = nullptr;
|
||||
QTimer* m_hbTimer = nullptr;
|
||||
QTimer* m_fastTimer = nullptr;
|
||||
QTimer* m_midTimer = nullptr;
|
||||
QTimer* m_slowTimer = nullptr;
|
||||
QTimer* m_selfCheckTimer = nullptr;
|
||||
|
||||
QString m_device = "/dev/ttyS7";
|
||||
int m_baud = 500000;
|
||||
bool m_lastCommOk = true;
|
||||
|
||||
bool m_armMode = false;
|
||||
|
||||
Reference in New Issue
Block a user