增加通讯协议
This commit is contained in:
+58
-12
@@ -12,9 +12,10 @@
|
||||
class QApplication;
|
||||
|
||||
// ===================== 画布与全局常量 =====================
|
||||
// 屏幕分辨率(1920×1080 横屏);若部署在更低分辨率屏,可按同一比例整体缩放
|
||||
// 屏幕分辨率(1920×1200);窗口按此固定尺寸,页面布局靠 layout 自适应,
|
||||
// 富余的垂直空间由各页的 addStretch 分配(控件像素尺寸与字号不随屏幕缩放)
|
||||
static const int SCREEN_W = 1920;
|
||||
static const int SCREEN_H = 1080;
|
||||
static const int SCREEN_H = 1200;
|
||||
|
||||
// ===================== 工业风格配色体系(QSS 十六进制) =====================
|
||||
namespace C {
|
||||
@@ -44,25 +45,32 @@ enum PageId {
|
||||
PageMgmt, // 密码管理
|
||||
PageReset, // 密码重置
|
||||
PageSelfCheck, // ④ 自检
|
||||
PageJob, // ⑤ 作业选择
|
||||
PageChassis, // ⑥ 机器人底盘
|
||||
PageArm, // ⑦ 机械臂
|
||||
PageGas, // ⑧ 气体检测仪
|
||||
PageClean, // ⑨ 手动消除
|
||||
PageDisinfect, // ⑩ 手动消毒
|
||||
PageDebug, // ⑪ 调试维护
|
||||
PageFault, // ⑫ 故障查询
|
||||
PageHome, // ⑤ 系统首页面(自检完成后进入)
|
||||
PageJob, // ⑥ 作业选择
|
||||
PageChassis, // ⑦ 机器人底盘
|
||||
PageArm, // ⑧ 机械臂
|
||||
PageGas, // ⑨ 气体检测仪
|
||||
PageClean, // ⑩ 消除作业
|
||||
PageDisinfect, // ⑪ 消毒作业
|
||||
PageDebug, // ⑫ 调试维护
|
||||
PageFault, // ⑬ 故障查询
|
||||
PageCount
|
||||
};
|
||||
|
||||
// ===================== 遥测数据(车载端 → UI) =====================
|
||||
// 由通信层解析 UDP 报文后填充,页面 500ms 定时读取刷新
|
||||
// 由通信层解析车端反馈报文后填充,页面刷新时读取
|
||||
struct Telemetry {
|
||||
// 底盘
|
||||
int soc = 85; // 电量 %
|
||||
double volt = 360.0; // 电压 V
|
||||
double speed = 3.45; // 车速 km/h
|
||||
bool handbrake = true; // 手刹
|
||||
int driveMode = 0; // 行车/机械臂模式:0=行车 1=机械臂(遥控器拨钮→串口→底盘报文 mode)
|
||||
int rdyStatus = 0; // 底盘 ready:0=初始 1=高压上电完成 2=准备就绪
|
||||
int gearPos = 0; // 挡位:0=N 1=D 2=R
|
||||
int parking = 0; // 驻车:0=未驻车 1=左电机 2=右电机 3=完全驻车
|
||||
int awdMode = 0; // 四驱模式:0=二驱 1=四驱 2=四驱锁定
|
||||
double steerAngle = 0.0; // 方向盘角度
|
||||
QStringList chassisFaults; // 底盘故障(多条 2s 轮换)
|
||||
|
||||
// 机械臂
|
||||
@@ -74,13 +82,17 @@ struct Telemetry {
|
||||
bool armHomed = false; // 是否已回位(用于底盘“机械臂未回位”告警)
|
||||
|
||||
// 洗消
|
||||
QString washMode = "--"; // 手动消除 / 手动消毒
|
||||
QString washMode = "--"; // 消除作业 / 消毒作业
|
||||
bool washStart = false; // 洗消启停反馈
|
||||
double flowA = 0.0; // A 药剂流量 L/min
|
||||
double flowB = 0.0; // B 药剂流量 L/min
|
||||
double gasFlow = 0.0; // 气体流量 L/min
|
||||
double press = 0.0; // 管路压力 MPa
|
||||
double airPress = 0.0; // 空压机压力 MPa
|
||||
double foam = 0.0; // 发泡倍数
|
||||
double flowPlungerFb = 0.0; // 柱塞泵流量反馈 L/min
|
||||
double flowAirFb = 0.0; // 空压机流量反馈 L/min
|
||||
double flowVaneFb = 0.0; // 叶片泵流量反馈 L/min
|
||||
QStringList washFaults; // 洗消故障代码
|
||||
|
||||
// 液位
|
||||
@@ -106,6 +118,23 @@ struct Telemetry {
|
||||
bool leaf = false; // 叶片泵上电
|
||||
QStringList pumpFaults; // 泵故障代码
|
||||
|
||||
// 遥控器(24 字节二进制帧,见 comm/uart.h)
|
||||
bool rcLinkOk = false; // 遥控器链路是否在线
|
||||
int rcBattery = 0; // 遥控器电量 %
|
||||
bool rcDriveMode = false; // bit0 行车模式
|
||||
bool rcArmMode = false; // bit1 机械臂模式
|
||||
bool rcArmEnabled = false; // bit2 机械臂使能
|
||||
bool rcChassisEnabled = false;// bit3 底盘使能
|
||||
bool rcEstop = false; // bit4 急停
|
||||
int rcGear = 2048; // 整车档位(底盘 Y)0~4096,中位 2048
|
||||
int rcSteer = 2048; // 整车转向(底盘 X)
|
||||
int rcPosZ = 2048; // 末端位置上下
|
||||
int rcPosX = 2048; // 末端位置左右
|
||||
int rcPosY = 2048; // 末端位置前后
|
||||
int rcRoll = 2048; // 末端姿态横滚
|
||||
int rcPitch = 2048; // 末端姿态俯仰
|
||||
int rcYaw = 2048; // 末端姿态偏航
|
||||
|
||||
// 全局
|
||||
bool commOk = true; // 通信状态
|
||||
bool estop = false; // 急停触发
|
||||
@@ -139,6 +168,23 @@ private:
|
||||
// 为整个应用安装按钮焦点光圈
|
||||
void installButtonFocusGlow(QApplication* app);
|
||||
|
||||
// ===================== 方向键(旋钮)隔离 =====================
|
||||
// 方向键在本机是"旋钮"键位,只由 ParamControl 用来调值。但 QAbstractButton 会把
|
||||
// 方向键当成沿焦点链换焦(等同 Tab/Shift+Tab),停在按钮上时按方向键焦点会乱跳。
|
||||
// 这个全局过滤器把"焦点在按钮上时"的方向键吞掉,方向键只做调值、换焦只走 Tab。
|
||||
class ArrowKeyGuard : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit ArrowKeyGuard(QObject* parent = nullptr);
|
||||
|
||||
protected:
|
||||
bool eventFilter(QObject* obj, QEvent* ev) override;
|
||||
};
|
||||
|
||||
// 为整个应用安装方向键隔离
|
||||
void installArrowKeyGuard(QApplication* app);
|
||||
|
||||
// 全局 QSS 样式表
|
||||
QString appStyleSheet();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user