读超过允许的寄存器返回0

This commit is contained in:
95384 2025-02-20 13:32:40 +08:00
parent afe80d0695
commit 075d293173
1 changed files with 19 additions and 5 deletions

View File

@ -31,8 +31,9 @@ static u_int16_t FRT_ReadRegTemperature(void *pMsg);
static u_int16_t FRT_ReadRegHumidity(void *pMsg); static u_int16_t FRT_ReadRegHumidity(void *pMsg);
static u_int16_t FRT_ReadRegPressure(void *pMsg); static u_int16_t FRT_ReadRegPressure(void *pMsg);
static u_int16_t FRT_ReadRegRain(void *pMsg); static u_int16_t FRT_ReadRegRain(void *pMsg);
/* 读 */
static u_int16_t FRT_ReadRegPrecipitationIntensity(void *pMsg); static u_int16_t FRT_ReadRegPrecipitationIntensity(void *pMsg);
static u_int16_t FRT_ReadRegUVIntensity(void *pMsg);
/* 读 */
static u_int16_t FRT_ReadRegDeviceAddr(void *pMsg); static u_int16_t FRT_ReadRegDeviceAddr(void *pMsg);
static u_int16_t FRT_ReadRegCommuBaudRate(void *pMsg); static u_int16_t FRT_ReadRegCommuBaudRate(void *pMsg);
static u_int16_t FRT_ReadRegSpeedAverageTime(void *pMsg); static u_int16_t FRT_ReadRegSpeedAverageTime(void *pMsg);
@ -126,6 +127,8 @@ FRT_RegProcTable_s g_RegTbl[] =
{ FRT_REGISTER_PRESSURE, FRT_ReadRegPressure }, /* 大气压 */ { FRT_REGISTER_PRESSURE, FRT_ReadRegPressure }, /* 大气压 */
{ FRT_REGISTER_RAIN, FRT_ReadRegRain }, /* 雨量 */ { FRT_REGISTER_RAIN, FRT_ReadRegRain }, /* 雨量 */
{ FRT_REGISTER_PRECIPITATION_INTENSITY, FRT_ReadRegPrecipitationIntensity }, /* 总辐射 */ { FRT_REGISTER_PRECIPITATION_INTENSITY, FRT_ReadRegPrecipitationIntensity }, /* 总辐射 */
{ FRT_REGISTER_UV_INTENSITY, FRT_ReadRegUVIntensity }, /* 紫外强度 */
{ FRT_REGISTER_DEVICE_ADDR, FRT_ReadRegDeviceAddr }, /* 设备地址 */ { FRT_REGISTER_DEVICE_ADDR, FRT_ReadRegDeviceAddr }, /* 设备地址 */
{ FRT_REGISTER_COMMU_BAUDRATE, FRT_ReadRegCommuBaudRate }, /* 波特率 */ { FRT_REGISTER_COMMU_BAUDRATE, FRT_ReadRegCommuBaudRate }, /* 波特率 */
{ FRT_REGISTER_SPEED_AVERAGE_TIME, FRT_ReadRegSpeedAverageTime }, /* 风速平均时间 */ { FRT_REGISTER_SPEED_AVERAGE_TIME, FRT_ReadRegSpeedAverageTime }, /* 风速平均时间 */
@ -396,7 +399,7 @@ static u_int16_t FRT_ReadRegPressure(void *pMsg)
*/ */
static u_int16_t FRT_ReadRegRain(void *pMsg) static u_int16_t FRT_ReadRegRain(void *pMsg)
{ {
u_int16_t value=9; u_int16_t value=0;
return FRT_swap_endian_16(value); return FRT_swap_endian_16(value);
} }
@ -407,7 +410,18 @@ static u_int16_t FRT_ReadRegRain(void *pMsg)
*/ */
static u_int16_t FRT_ReadRegPrecipitationIntensity(void *pMsg) static u_int16_t FRT_ReadRegPrecipitationIntensity(void *pMsg)
{ {
u_int16_t value=10; u_int16_t value=0;
return FRT_swap_endian_16(value);
}
/**
* @brief
* @param
* @retval
*/
static u_int16_t FRT_ReadRegUVIntensity(void *pMsg)
{
u_int16_t value=0;
return FRT_swap_endian_16(value); return FRT_swap_endian_16(value);
} }
@ -1298,7 +1312,7 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg)
u_int16_t reg_num= (data[4] << 8)| data[5]; u_int16_t reg_num= (data[4] << 8)| data[5];
if ( \ if ( \
start_reg_addr < 0x00 ||\ start_reg_addr < 0x00 ||\
(start_reg_addr > FRT_REGISTER_PRESSURE && start_reg_addr < FRT_REGISTER_THROUGH_WIND_DIRECTION) ||\ /* (start_reg_addr > FRT_REGISTER_PRESSURE && start_reg_addr < FRT_REGISTER_THROUGH_WIND_DIRECTION) ||\ */
(start_reg_addr > FRT_REGISTER_PEAK_WIND_SPEED && start_reg_addr < FRT_REGISTER_DEVICE_ADDR) ||\ (start_reg_addr > FRT_REGISTER_PEAK_WIND_SPEED && start_reg_addr < FRT_REGISTER_DEVICE_ADDR) ||\
(start_reg_addr > FRT_REGISTER_TEMPHUM_UPDATE_TIME && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ (start_reg_addr > FRT_REGISTER_TEMPHUM_UPDATE_TIME && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\
start_reg_addr > FRT_REGISTER_ID_4 \ start_reg_addr > FRT_REGISTER_ID_4 \
@ -1311,7 +1325,7 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg)
if ( \ if ( \
reg_num < 0x01 ||\ reg_num < 0x01 ||\
(((reg_num + start_reg_addr - 1) > FRT_REGISTER_PRESSURE) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_THROUGH_WIND_DIRECTION)) ||\ /* (((reg_num + start_reg_addr - 1) > FRT_REGISTER_PRESSURE) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_THROUGH_WIND_DIRECTION)) ||\ */
(((reg_num + start_reg_addr - 1) > FRT_REGISTER_PEAK_WIND_SPEED) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR)) ||\ (((reg_num + start_reg_addr - 1) > FRT_REGISTER_PEAK_WIND_SPEED) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR)) ||\
(((reg_num + start_reg_addr -1) > FRT_REGISTER_TEMPHUM_UPDATE_TIME) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\ (((reg_num + start_reg_addr -1) > FRT_REGISTER_TEMPHUM_UPDATE_TIME) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\
((reg_num + start_reg_addr -1) > FRT_REGISTER_ID_4) \ ((reg_num + start_reg_addr -1) > FRT_REGISTER_ID_4) \