雨量与光照添加进协议,采集暂时与LED放一起,1S一次,电源控制逻辑需要捋一下

This commit is contained in:
95384 2025-01-15 17:28:16 +08:00
parent d6e066b87b
commit 1041bc976e
6 changed files with 86 additions and 21 deletions

View File

@ -38,7 +38,8 @@ typedef enum
FRT_REGISTER_HUMIDITY = 13, /* 大气湿度 */ FRT_REGISTER_HUMIDITY = 13, /* 大气湿度 */
FRT_REGISTER_PRESSURE = 14, /* 大气压 */ FRT_REGISTER_PRESSURE = 14, /* 大气压 */
FRT_REGISTER_RAIN = 15, /* 雨量 */ FRT_REGISTER_RAIN = 15, /* 雨量 */
FRT_REGISTER_PRECIPITATION_INTENSITY = 16, /* ×Ü·øÉä */ FRT_REGISTER_LIGHT_INTENSITY_HIGH = 16, /* 光照高位 */
FRT_REGISTER_LIGHT_INTENSITY_LOW = 17, /* 光照低位 */
FRT_REGISTER_DEVICE_ADDR = 20, /* 设备地址 */ FRT_REGISTER_DEVICE_ADDR = 20, /* 设备地址 */
FRT_REGISTER_COMMU_BAUDRATE = 21, /* 波特率 */ FRT_REGISTER_COMMU_BAUDRATE = 21, /* 波特率 */

View File

@ -31,6 +31,7 @@ typedef struct _usr_config_info{
u_int16_t uart_baud; /* 串口波特率 */ u_int16_t uart_baud; /* 串口波特率 */
u_int16_t speed_average_time; /* 风速平均时间 */ u_int16_t speed_average_time; /* 风速平均时间 */
u_int16_t temp_hum_update_time; /* 温湿度平均时间 */ u_int16_t temp_hum_update_time; /* 温湿度平均时间 */
u_int16_t rainPowr; /* 雨量电源 */
u_int16_t temp0; /* 占位留待升级 */ u_int16_t temp0; /* 占位留待升级 */
u_int16_t temp1; /* 占位留待升级 */ u_int16_t temp1; /* 占位留待升级 */
u_int16_t temp2; /* 占位留待升级 */ u_int16_t temp2; /* 占位留待升级 */
@ -39,6 +40,8 @@ typedef struct _usr_config_info{
u_int16_t temp5; /* 占位留待升级 */ u_int16_t temp5; /* 占位留待升级 */
u_int16_t temp6; /* 占位留待升级 */ u_int16_t temp6; /* 占位留待升级 */
u_int16_t temp7; /* 占位留待升级 */ u_int16_t temp7; /* 占位留待升级 */
u_int16_t temp8; /* 占位留待升级 */
u_int16_t temp9; /* 占位留待升级 */
u_int8_t flag_end; u_int8_t flag_end;
}usr_config_info; }usr_config_info;

View File

@ -5,6 +5,7 @@
#include "anemometer_dev.h" #include "anemometer_dev.h"
#include "sht30.h" #include "sht30.h"
#include "hp203b.h" #include "hp203b.h"
#include "rain.h"
extern u_int8_t rs485_out_buff[50]; extern u_int8_t rs485_out_buff[50];
extern uart_device_info uart_devices[]; extern uart_device_info uart_devices[];
@ -31,8 +32,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_ReadRegLightHigh(void *pMsg);
static u_int16_t FRT_ReadRegLightLow(void *pMsg);
/* 读 */ /* 读 */
static u_int16_t FRT_ReadRegPrecipitationIntensity(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);
@ -43,6 +45,8 @@ static u_int16_t FRT_WriteRegDeviceAddr(void *pMsg);
static u_int16_t FRT_WriteRegCommuBaudRate(void *pMsg); static u_int16_t FRT_WriteRegCommuBaudRate(void *pMsg);
static u_int16_t FRT_WriteRegSpeedAverageTime(void *pMsg); static u_int16_t FRT_WriteRegSpeedAverageTime(void *pMsg);
static u_int16_t FRT_WriteRegTempHumUpdateTime(void *pMsg); static u_int16_t FRT_WriteRegTempHumUpdateTime(void *pMsg);
static u_int16_t FRT_WriteRegRainPowr(void *pMsg);
static u_int16_t FRT_WriteRegRainReset(void *pMsg);
static u_int16_t FRT_WriteRegSoftReset(void *pMsg); static u_int16_t FRT_WriteRegSoftReset(void *pMsg);
static u_int16_t FRT_WriteRegResetDefault(void *pMsg); static u_int16_t FRT_WriteRegResetDefault(void *pMsg);
/* 读配置 */ /* 读配置 */
@ -125,12 +129,13 @@ FRT_RegProcTable_s g_RegTbl[] =
{ FRT_REGISTER_HUMIDITY, FRT_ReadRegHumidity }, /* 大气湿度 */ { FRT_REGISTER_HUMIDITY, FRT_ReadRegHumidity }, /* 大气湿度 */
{ 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_LIGHT_INTENSITY_HIGH, FRT_ReadRegLightHigh }, /* 光照高位 */
{ FRT_REGISTER_LIGHT_INTENSITY_LOW, FRT_ReadRegLightLow }, /* 光照低位 */
{ 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 }, /* 风速平均时间 */
{ FRT_REGISTER_TEMPHUM_UPDATE_TIME, FRT_ReadRegTempHumUpdateTime }, /* 温湿度更新时间 */ { FRT_REGISTER_TEMPHUM_UPDATE_TIME, FRT_ReadRegTempHumUpdateTime }, /* 温湿度更新时间 */
{ FRT_REGISTER_RAIN_POWER_CONTROL, FRT_ReadRegRainPowerCtl }, /* 雨量电源时间 */ { FRT_REGISTER_RAIN_POWER_CONTROL, FRT_ReadRegRainPowerCtl }, /* 雨量电源控制 */
{ FRT_REGISTER_TRANSDUCER_CFG_1R5, FRT_ReadRegTransducerCFG1R5 }, /* 读换能器参数寄存器值1R5 */ { FRT_REGISTER_TRANSDUCER_CFG_1R5, FRT_ReadRegTransducerCFG1R5 }, /* 读换能器参数寄存器值1R5 */
{ FRT_REGISTER_TRANSDUCER_CFG_4R5, FRT_ReadRegTransducerCFG4R5 }, /* 读换能器参数寄存器值4R5 */ { FRT_REGISTER_TRANSDUCER_CFG_4R5, FRT_ReadRegTransducerCFG4R5 }, /* 读换能器参数寄存器值4R5 */
{ FRT_REGISTER_TRANSDUCER_CFG_8R0, FRT_ReadRegTransducerCFG8R0 }, /* 读换能器参数寄存器值8R0 */ { FRT_REGISTER_TRANSDUCER_CFG_8R0, FRT_ReadRegTransducerCFG8R0 }, /* 读换能器参数寄存器值8R0 */
@ -169,6 +174,8 @@ FRT_RegProcTable_s g_Write_RegTbl[] =
{ FRT_REGISTER_COMMU_BAUDRATE, FRT_WriteRegCommuBaudRate }, /* 写波特率 */ { FRT_REGISTER_COMMU_BAUDRATE, FRT_WriteRegCommuBaudRate }, /* 写波特率 */
{ FRT_REGISTER_SPEED_AVERAGE_TIME, FRT_WriteRegSpeedAverageTime }, /* 写风速平均时间 */ { FRT_REGISTER_SPEED_AVERAGE_TIME, FRT_WriteRegSpeedAverageTime }, /* 写风速平均时间 */
{ FRT_REGISTER_TEMPHUM_UPDATE_TIME, FRT_WriteRegTempHumUpdateTime }, /* 写温湿度更新时间 */ { FRT_REGISTER_TEMPHUM_UPDATE_TIME, FRT_WriteRegTempHumUpdateTime }, /* 写温湿度更新时间 */
{ FRT_REGISTER_RAIN_POWER_CONTROL, FRT_WriteRegRainPowr }, /* 写雨量电源 */
{ FRT_REGISTER_RAIN_REST, FRT_WriteRegRainReset }, /* 写雨量复位 */
{ FRT_REGISTER_SOFT_REST, FRT_WriteRegSoftReset }, /* 软件复位 */ { FRT_REGISTER_SOFT_REST, FRT_WriteRegSoftReset }, /* 软件复位 */
{ FRT_REGISTER_REST_DEFAULT_SETTING, FRT_WriteRegResetDefault }, /* 恢复出厂设置 */ { FRT_REGISTER_REST_DEFAULT_SETTING, FRT_WriteRegResetDefault }, /* 恢复出厂设置 */
{ FRT_REGISTER_TRANSDUCER_CFG_1R5, FRT_WriteRegTransducerCFG1R5 }, /* 写换能器参数寄存器值1R5 */ { FRT_REGISTER_TRANSDUCER_CFG_1R5, FRT_WriteRegTransducerCFG1R5 }, /* 写换能器参数寄存器值1R5 */
@ -396,18 +403,29 @@ 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=(u_int16_t)(g_stMcs_Para.precipitation);
return FRT_swap_endian_16(value); return FRT_swap_endian_16(value);
} }
/** /**
* @brief * @brief
* @param * @param
* @retval * @retval
*/ */
static u_int16_t FRT_ReadRegPrecipitationIntensity(void *pMsg) static u_int16_t FRT_ReadRegLightHigh(void *pMsg)
{ {
u_int16_t value=10; u_int16_t value=(u_int16_t)(g_stMcs_Para.lightIntensity>>16);
return FRT_swap_endian_16(value);
}
/**
* @brief
* @param
* @retval
*/
static u_int16_t FRT_ReadRegLightLow(void *pMsg)
{
u_int16_t value=(u_int16_t)(g_stMcs_Para.lightIntensity);
return FRT_swap_endian_16(value); return FRT_swap_endian_16(value);
} }
@ -467,7 +485,9 @@ static u_int16_t FRT_ReadRegTempHumUpdateTime(void *pMsg)
*/ */
static u_int16_t FRT_ReadRegRainPowerCtl(void *pMsg) static u_int16_t FRT_ReadRegRainPowerCtl(void *pMsg)
{ {
return 0; read_config_info();
u_int16_t value=g_usrConfigInfo.rainPowr;
return FRT_swap_endian_16(value);
} }
/** /**
@ -553,6 +573,45 @@ static u_int16_t FRT_WriteRegTempHumUpdateTime(void *pMsg)
return 0; return 0;
} }
/**
* @brief
* @param
* @retval
*/
static u_int16_t FRT_WriteRegRainPowr(void *pMsg)
{
uint16_t *pMsgAddr = (uint16_t *)pMsg;
uint16_t data = *pMsgAddr;
if(data == 0x0001)
{
rainLightPowerOn();
g_usrConfigInfo.rainPowr = 1;
save_usr_config_info(g_usrConfigInfo);
}else {
rainLightPowerOff();
g_usrConfigInfo.rainPowr = 0;
save_usr_config_info(g_usrConfigInfo);
}
return 0;
}
/**
* @brief
* @param
* @retval
*/
static u_int16_t FRT_WriteRegRainReset(void *pMsg)
{
uint16_t *pMsgAddr = (uint16_t *)pMsg;
uint16_t data = *pMsgAddr;
if(data == 0x0001)
{
clearRainData();
}
return 0;
}
/** /**
* @brief * @brief
* @param * @param
@ -1298,8 +1357,8 @@ 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_DEVICE_ADDR) ||\ (start_reg_addr > FRT_REGISTER_LIGHT_INTENSITY_LOW && 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_RAIN_POWER_CONTROL && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\
start_reg_addr > FRT_REGISTER_ID_4 \ start_reg_addr > FRT_REGISTER_ID_4 \
) )
@ -1310,8 +1369,8 @@ 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_DEVICE_ADDR)) ||\ (((reg_num + start_reg_addr - 1) > FRT_REGISTER_LIGHT_INTENSITY_LOW) && ((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_RAIN_POWER_CONTROL) && ((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) \
) )
@ -1364,7 +1423,7 @@ void FRT_MsgProc_WriteRegister(device_handle device, void *pMsg)
if (start_reg_addr < FRT_REGISTER_DEVICE_ADDR ||\ if (start_reg_addr < FRT_REGISTER_DEVICE_ADDR ||\
(start_reg_addr > FRT_REGISTER_REST_DEFAULT_SETTING && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ (start_reg_addr > FRT_REGISTER_REST_DEFAULT_SETTING && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\
(start_reg_addr > FRT_REGISTER_DISTANCE_WE && start_reg_addr < FRT_REGISTER_LINEAR_POINT_Y_1) ||\ (start_reg_addr > FRT_REGISTER_DISTANCE_WE && start_reg_addr < FRT_REGISTER_LINEAR_POINT_Y_1) ||\
(start_reg_addr > FRT_REGISTER_LINEAR_POINT_Y_5) && (start_reg_addr < FRT_REGISTER_ENCRYPT_1) ||\ (start_reg_addr > FRT_REGISTER_LINEAR_ENABLE) && (start_reg_addr < FRT_REGISTER_ENCRYPT_1) ||\
(start_reg_addr > FRT_REGISTER_ENCRYPT_4) (start_reg_addr > FRT_REGISTER_ENCRYPT_4)
) )
{ {
@ -1375,7 +1434,7 @@ void FRT_MsgProc_WriteRegister(device_handle device, void *pMsg)
((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR) ||\ ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR) ||\
(((reg_num + start_reg_addr -1) > FRT_REGISTER_REST_DEFAULT_SETTING) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\ (((reg_num + start_reg_addr -1) > FRT_REGISTER_REST_DEFAULT_SETTING) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_TRANSDUCER_CFG_1R5)) ||\
(((reg_num + start_reg_addr -1) > FRT_REGISTER_DISTANCE_WE) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_LINEAR_POINT_Y_1)) ||\ (((reg_num + start_reg_addr -1) > FRT_REGISTER_DISTANCE_WE) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_LINEAR_POINT_Y_1)) ||\
(((reg_num + start_reg_addr -1) > FRT_REGISTER_LINEAR_POINT_Y_5) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_ENCRYPT_1)) ||\ (((reg_num + start_reg_addr -1) > FRT_REGISTER_LINEAR_ENABLE) && ((reg_num + start_reg_addr -1) < FRT_REGISTER_ENCRYPT_1)) ||\
((reg_num + start_reg_addr -1) > FRT_REGISTER_ENCRYPT_4) ((reg_num + start_reg_addr -1) > FRT_REGISTER_ENCRYPT_4)
) )
{ {

View File

@ -11,6 +11,7 @@ usr_config_info g_usrConfigInfo={
.uart_baud = 9600, /* 默认波特率 */ .uart_baud = 9600, /* 默认波特率 */
.speed_average_time = 600, /* 平均风速默认10分钟更新 */ .speed_average_time = 600, /* 平均风速默认10分钟更新 */
.temp_hum_update_time = 600, /* 温湿度更新时间 */ .temp_hum_update_time = 600, /* 温湿度更新时间 */
.rainPowr = 1, /* モ<>ソオ釀エ */
.flag_end = FLAG_SAVE_INFLASH_END, .flag_end = FLAG_SAVE_INFLASH_END,
}; };

View File

@ -10,7 +10,7 @@ extern "C" {
void rainLightPowerOn(void); //开雨量光照电源 void rainLightPowerOn(void); //开雨量光照电源
void rainLightPowerOff(void); //关雨量光照电源 void rainLightPowerOff(void); //关雨量光照电源
void getRainData(void); //获取雨量指令 void getRainData(void); //获取雨量指令
void clearRainData(void); //헌왕黛좆든都 void clearRainData(void); //清空雨量数据
void getLightData(void); //获取光照数据 void getLightData(void); //获取光照数据
void getLightRainData(void); //获取光照与雨量 void getLightRainData(void); //获取光照与雨量
void readProcessRainData(device_handle device);//读取并解析数据 void readProcessRainData(device_handle device);//读取并解析数据

View File

@ -1486,6 +1486,7 @@
<state>$PROJ_DIR$\..\tools</state> <state>$PROJ_DIR$\..\tools</state>
<state>$PROJ_DIR$\..\App\Inc</state> <state>$PROJ_DIR$\..\App\Inc</state>
<state>$PROJ_DIR$\..\Drivers\HP203B</state> <state>$PROJ_DIR$\..\Drivers\HP203B</state>
<state>$PROJ_DIR$\..\Drivers\RainLight</state>
</option> </option>
<option> <option>
<name>CCStdIncCheck</name> <name>CCStdIncCheck</name>