diff --git a/App/Inc/frt_protocol.h b/App/Inc/frt_protocol.h index 961e9fb..1a539fe 100644 --- a/App/Inc/frt_protocol.h +++ b/App/Inc/frt_protocol.h @@ -38,7 +38,8 @@ typedef enum FRT_REGISTER_HUMIDITY = 13, /* 大气湿度 */ FRT_REGISTER_PRESSURE = 14, /* 大气压 */ 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_COMMU_BAUDRATE = 21, /* 波特率 */ diff --git a/App/Inc/inflash.h b/App/Inc/inflash.h index 40f9d99..4cf3243 100644 --- a/App/Inc/inflash.h +++ b/App/Inc/inflash.h @@ -31,6 +31,7 @@ typedef struct _usr_config_info{ u_int16_t uart_baud; /* 涓插彛娉㈢壒鐜 */ u_int16_t speed_average_time; /* 椋庨熷钩鍧囨椂闂 */ u_int16_t temp_hum_update_time; /* 娓╂箍搴﹀钩鍧囨椂闂 */ + u_int16_t rainPowr; /* 闆ㄩ噺鐢垫簮 */ u_int16_t temp0; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int16_t temp1; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int16_t temp2; /* 鍗犱綅鐣欏緟鍗囩骇 */ @@ -39,6 +40,8 @@ typedef struct _usr_config_info{ u_int16_t temp5; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int16_t temp6; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int16_t temp7; /* 鍗犱綅鐣欏緟鍗囩骇 */ + u_int16_t temp8; /* 鍗犱綅鐣欏緟鍗囩骇 */ + u_int16_t temp9; /* 鍗犱綅鐣欏緟鍗囩骇 */ u_int8_t flag_end; }usr_config_info; diff --git a/App/Src/frt_protocol.c b/App/Src/frt_protocol.c index 32e7a16..3bb2da3 100644 --- a/App/Src/frt_protocol.c +++ b/App/Src/frt_protocol.c @@ -5,6 +5,7 @@ #include "anemometer_dev.h" #include "sht30.h" #include "hp203b.h" +#include "rain.h" extern u_int8_t rs485_out_buff[50]; 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_ReadRegPressure(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_ReadRegCommuBaudRate(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_WriteRegSpeedAverageTime(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_WriteRegResetDefault(void *pMsg); /* 璇婚厤缃 */ @@ -125,12 +129,13 @@ FRT_RegProcTable_s g_RegTbl[] = { FRT_REGISTER_HUMIDITY, FRT_ReadRegHumidity }, /* 澶ф皵婀垮害 */ { FRT_REGISTER_PRESSURE, FRT_ReadRegPressure }, /* 澶ф皵鍘 */ { 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_COMMU_BAUDRATE, FRT_ReadRegCommuBaudRate }, /* 娉㈢壒鐜 */ { FRT_REGISTER_SPEED_AVERAGE_TIME, FRT_ReadRegSpeedAverageTime }, /* 椋庨熷钩鍧囨椂闂 */ { 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_4R5, FRT_ReadRegTransducerCFG4R5 }, /* 璇绘崲鑳藉櫒鍙傛暟瀵勫瓨鍣ㄥ4R5 */ { 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_SPEED_AVERAGE_TIME, FRT_WriteRegSpeedAverageTime }, /* 鍐欓閫熷钩鍧囨椂闂 */ { 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_REST_DEFAULT_SETTING, FRT_WriteRegResetDefault }, /* 鎭㈠鍑哄巶璁剧疆 */ { FRT_REGISTER_TRANSDUCER_CFG_1R5, FRT_WriteRegTransducerCFG1R5 }, /* 鍐欐崲鑳藉櫒鍙傛暟瀵勫瓨鍣ㄥ1R5 */ @@ -396,19 +403,30 @@ static u_int16_t FRT_ReadRegPressure(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); +} + +/** + * @brief 璇诲厜鐓ч珮浣嶅瘎瀛樺櫒鍊 + * @param + * @retval + */ +static u_int16_t FRT_ReadRegLightHigh(void *pMsg) +{ + u_int16_t value=(u_int16_t)(g_stMcs_Para.lightIntensity>>16); return FRT_swap_endian_16(value); } /** - * @brief 璇诲厜杈愬皠寮哄害瀵勫瓨鍣ㄥ + * @brief 璇诲厜鐓т綆浣嶅瘎瀛樺櫒鍊 * @param * @retval */ -static u_int16_t FRT_ReadRegPrecipitationIntensity(void *pMsg) +static u_int16_t FRT_ReadRegLightLow(void *pMsg) { - u_int16_t value=10; - return FRT_swap_endian_16(value); + u_int16_t value=(u_int16_t)(g_stMcs_Para.lightIntensity); + return FRT_swap_endian_16(value); } /** @@ -466,8 +484,10 @@ static u_int16_t FRT_ReadRegTempHumUpdateTime(void *pMsg) * @retval */ 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; } +/** + * @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 杞欢澶嶄綅 * @param @@ -1298,9 +1357,9 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg) u_int16_t reg_num= (data[4] << 8)| data[5]; if ( \ start_reg_addr < 0x00 ||\ - (start_reg_addr > FRT_REGISTER_PRESSURE && 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_ID_4 \ + (start_reg_addr > FRT_REGISTER_LIGHT_INTENSITY_LOW && start_reg_addr < FRT_REGISTER_DEVICE_ADDR) ||\ + (start_reg_addr > FRT_REGISTER_RAIN_POWER_CONTROL && start_reg_addr < FRT_REGISTER_TRANSDUCER_CFG_1R5) ||\ + start_reg_addr > FRT_REGISTER_ID_4 \ ) { @@ -1310,9 +1369,9 @@ void FRT_MsgProc_ReadRegister(device_handle device, void *pMsg) if ( \ 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_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_LIGHT_INTENSITY_LOW) && ((reg_num + start_reg_addr - 1) < FRT_REGISTER_DEVICE_ADDR)) ||\ + (((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) \ ) { @@ -1363,8 +1422,8 @@ void FRT_MsgProc_WriteRegister(device_handle device, void *pMsg) // 鏍¢獙 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_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_DISTANCE_WE && start_reg_addr < FRT_REGISTER_LINEAR_POINT_Y_1) ||\ + (start_reg_addr > FRT_REGISTER_LINEAR_ENABLE) && (start_reg_addr < FRT_REGISTER_ENCRYPT_1) ||\ (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_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_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) ) { diff --git a/App/Src/inflash.c b/App/Src/inflash.c index 4393da6..8638aa7 100644 --- a/App/Src/inflash.c +++ b/App/Src/inflash.c @@ -11,6 +11,7 @@ usr_config_info g_usrConfigInfo={ .uart_baud = 9600, /* 默认波特率 */ .speed_average_time = 600, /* 平均风速默认10分钟更新 */ .temp_hum_update_time = 600, /* 温湿度更新时间 */ + .rainPowr = 1, /* 雨量电源 */ .flag_end = FLAG_SAVE_INFLASH_END, }; diff --git a/Drivers/RainLight/rain.h b/Drivers/RainLight/rain.h index d4856b2..9478ca0 100644 --- a/Drivers/RainLight/rain.h +++ b/Drivers/RainLight/rain.h @@ -10,7 +10,7 @@ extern "C" { void rainLightPowerOn(void); //开雨量光照电源 void rainLightPowerOff(void); //关雨量光照电源 void getRainData(void); //获取雨量指令 -void clearRainData(void); //清空雨量电源 +void clearRainData(void); //清空雨量数据 void getLightData(void); //获取光照数据 void getLightRainData(void); //获取光照与雨量 void readProcessRainData(device_handle device);//读取并解析数据 diff --git a/EWARM/micro_climate.ewp b/EWARM/micro_climate.ewp index 2339eeb..478b05e 100644 --- a/EWARM/micro_climate.ewp +++ b/EWARM/micro_climate.ewp @@ -1486,6 +1486,7 @@ $PROJ_DIR$\..\tools $PROJ_DIR$\..\App\Inc $PROJ_DIR$\..\Drivers\HP203B + $PROJ_DIR$\..\Drivers\RainLight