添加位移监测传感器结构体及解包

This commit is contained in:
2026-05-15 15:15:42 +08:00
parent 942275328c
commit 55a82c6a50
4 changed files with 126 additions and 335 deletions
+14 -5
View File
@@ -99,6 +99,7 @@ typedef enum {
SURFACE_STRESS, //0x0014 表面应力
PRESSURE, //0x0015 压力
MICROWAVE_DISPLACE, //0x0016 微波位移
DISPLACEMENT = 0x0020, //0x0020 位移监测传感器
}SensorType_m;
typedef struct {//主设备固定包头
@@ -124,7 +125,19 @@ typedef struct {
int16_t PitchAngle; //俯仰角偏斜 (范围±900)单位0.1°
int16_t RollAngle; //横滚角偏斜 (范围±900)单位0.1°
int16_t YawAngle; //偏航角偏斜 (范围0~3600)单位0.1°
}__attribute__((packed))LaserTracingType_t;
}__attribute__((packed))LaserTracingType_T;
typedef struct {//0x0020 位移计
int16_t PitchAngle; //俯仰角偏斜(范围±900)单位0.1°
int16_t RollAngle; //横滚角偏斜(范围±900)单位0.1°
int16_t YawAngle; //偏航角偏斜(范围0~3600)单位0.1°
float Altitude; //海拔()单位cm
int16_t Distance; //1轴应力值转位移(范围±300,单位0.1mm)
}__attribute__ ((packed))Displacement_T,*DisplacementDp;
typedef struct {
int Distance;
}__attribute__((packed))LaserDistanceSensorType_t;
typedef struct {
uint8_t CommDevAddr[6]; //通讯单元地址
@@ -134,10 +147,6 @@ typedef struct {
uint8_t ERTime; //紧急上报时长
}__attribute__((packed))SvrDownLPDevConfigPara_t;
typedef struct {
int Distance;
}__attribute__((packed))LaserDistanceSensorType_t;
typedef struct {
uint8_t AlarmType;
uint8_t AlarmState;
+15 -4
View File
@@ -298,8 +298,8 @@ int CommUintOrgData(GateWayPara GateWay, CommUnitPara CUPara, CommUnitData CUDat
case FORCE_3D:
break;
case LASER_TRACING:
memcpy(&sData[Len], CUData->Data[i], sizeof(LaserTracingType_t));
Len += sizeof(LaserTracingType_t);
memcpy(&sData[Len], CUData->Data[i], sizeof(LaserTracingType_T));
Len += sizeof(LaserTracingType_T);
break;
case WATER_LEVEL:
break;
@@ -327,6 +327,10 @@ int CommUintOrgData(GateWayPara GateWay, CommUnitPara CUPara, CommUnitData CUDat
break;
case MICROWAVE_DISPLACE:
break;
case DISPLACEMENT:
memcpy(&sData[Len], CUData->Data[i], sizeof(Displacement_T));
Len += sizeof(Displacement_T);
break;
}
SensorN++;
}
@@ -374,8 +378,8 @@ void DebugDisplaySensorData(int SensorIdx, uint16_t SensorType, uint8_t *SensorD
break;
}
case LASER_TRACING: {
LaserTracingType_t Sensor;
memcpy((uint8_t *)&Sensor, SensorData, sizeof(LaserTracingType_t));
LaserTracingType_T Sensor;
memcpy((uint8_t *)&Sensor, SensorData, sizeof(LaserTracingType_T));
MAIN_DBG_LOG("Sensor%d Type %04x: PitchAngle=%04d, RollAngle=%04d, YawAngle=%04d\r\n",
SensorIdx, SensorType, Sensor.PitchAngle, Sensor.RollAngle, Sensor.YawAngle);
break;
@@ -419,6 +423,13 @@ void DebugDisplaySensorData(int SensorIdx, uint16_t SensorType, uint8_t *SensorD
case MICROWAVE_DISPLACE: {
break;
}
case DISPLACEMENT: {
Displacement_T Sensor;
memcpy((uint8_t *)&Sensor, SensorData, sizeof(Displacement_T));
MAIN_DBG_LOG("Sensor%d Type %04x: PitchAngle=%04d, RollAngle=%04d, YawAngle=%04d, Altitude=%06f, Distance=%04d\r\n",
SensorIdx, SensorType, Sensor.PitchAngle, Sensor.RollAngle, Sensor.YawAngle, Sensor.Altitude, Sensor.Distance);
break;
}
default:
break;
}