给报警器报警加了多次触发判断
This commit is contained in:
parent
39661d1d64
commit
e55496541d
|
@ -2,7 +2,7 @@
|
||||||
* @Author: mbw
|
* @Author: mbw
|
||||||
* @Date: 2025-01-24 08:40:39
|
* @Date: 2025-01-24 08:40:39
|
||||||
* @LastEditors: mbw && 1600520629@qq.com
|
* @LastEditors: mbw && 1600520629@qq.com
|
||||||
* @LastEditTime: 2025-01-25 13:35:20
|
* @LastEditTime: 2025-01-25 14:14:51
|
||||||
* @FilePath: \JT-DT-YD4N02A_RTT_MRS-NT26K\bsp\inc\bsp_h308.h
|
* @FilePath: \JT-DT-YD4N02A_RTT_MRS-NT26K\bsp\inc\bsp_h308.h
|
||||||
* @Description:
|
* @Description:
|
||||||
* @
|
* @
|
||||||
|
@ -76,7 +76,7 @@ typedef struct __attribute__((packed))
|
||||||
rt_uint8_t checksum; // 校验
|
rt_uint8_t checksum; // 校验
|
||||||
} TsH308Data;
|
} TsH308Data;
|
||||||
|
|
||||||
typedef struct
|
typedef struct __attribute__((packed))
|
||||||
{
|
{
|
||||||
uint8_t end_of_life; // 寿命到期
|
uint8_t end_of_life; // 寿命到期
|
||||||
uint8_t last_life; // 上次状态
|
uint8_t last_life; // 上次状态
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* @Author: mbw
|
* @Author: mbw
|
||||||
* @Date: 2024-11-14 10:21:04
|
* @Date: 2024-11-14 10:21:04
|
||||||
* @LastEditors: mbw && 1600520629@qq.com
|
* @LastEditors: mbw && 1600520629@qq.com
|
||||||
* @LastEditTime: 2025-01-25 14:04:15
|
* @LastEditTime: 2025-01-25 14:34:41
|
||||||
* @FilePath: \JT-DT-YD4N02A_RTT_MRS-NT26K\bsp\src\bsp_h308.c
|
* @FilePath: \JT-DT-YD4N02A_RTT_MRS-NT26K\bsp\src\bsp_h308.c
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
|
@ -37,7 +37,7 @@ static rt_sem_t uart4_rx_ok_sem;
|
||||||
static struct rt_timer uart4_rx_timer;
|
static struct rt_timer uart4_rx_timer;
|
||||||
|
|
||||||
uint8_t sensor_rx_flag = 0; // 接收缓冲区中,已经收到的数据包数量static rt_uint8_t alarm_flag = 0, fault_flag = 0;
|
uint8_t sensor_rx_flag = 0; // 接收缓冲区中,已经收到的数据包数量static rt_uint8_t alarm_flag = 0, fault_flag = 0;
|
||||||
static rt_uint8_t alarm_flag = 0, fault_flag = 0;
|
rt_uint8_t alarm_flag = 0, fault_flag = 0;
|
||||||
TsH308 H308 = {0};
|
TsH308 H308 = {0};
|
||||||
|
|
||||||
void _UART4_RxTimeout(void *parameter)
|
void _UART4_RxTimeout(void *parameter)
|
||||||
|
@ -166,50 +166,55 @@ static uint8_t H308_Count(const rt_uint8_t *buffer, uint8_t value, uint8_t size)
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
static void H308_HandleAlarm(uint8_t count, uint8_t *flag, uint8_t threshold)
|
static void H308_HandleAlarm(uint8_t count, uint8_t threshold)
|
||||||
{
|
{
|
||||||
if (count >= threshold && *flag == 0)
|
if (count >= threshold && alarm_flag == 0)
|
||||||
{
|
{
|
||||||
if (H308.Data.lel > H308.alarm_value)
|
if (H308.Data.lel > H308.alarm_value)
|
||||||
{
|
{
|
||||||
*flag = 1;
|
alarm_flag = 1;
|
||||||
H308.detection_flag = kH308Alarm;
|
H308.detection_flag = kH308Alarm;
|
||||||
Send_Laser_Alarm_Event(kAlarmEvent);
|
Send_Laser_Alarm_Event(kAlarmEvent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (*flag == 1 && count == 0)
|
else if (alarm_flag == 1 && count == 0)
|
||||||
{
|
{
|
||||||
*flag = 0;
|
alarm_flag = 0;
|
||||||
H308.detection_flag = kH308Normal;
|
H308.detection_flag = kH308Normal;
|
||||||
Send_Laser_Alarm_Event(kAlarmRcyEvent);
|
Send_Laser_Alarm_Event(kAlarmRcyEvent);
|
||||||
}
|
}
|
||||||
|
else if ((H308.Data.lel == 0) && (count == 0))
|
||||||
|
{
|
||||||
|
alarm_flag = 0;
|
||||||
|
H308.detection_flag = kH308Alarm;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void H308_HandleFault(uint8_t count, uint8_t *flag, uint8_t threshold)
|
static void H308_HandleFault(uint8_t count, uint8_t threshold)
|
||||||
{
|
{
|
||||||
if (count >= threshold && *flag != 1)
|
if (count >= threshold && fault_flag != 1)
|
||||||
{
|
{
|
||||||
*flag = 1;
|
fault_flag = 1;
|
||||||
H308.detection_flag = kH308Fault;
|
H308.detection_flag = kH308Fault;
|
||||||
|
rt_thread_mdelay(1);
|
||||||
Send_Laser_Alarm_Event(kFaultEvent);
|
Send_Laser_Alarm_Event(kFaultEvent);
|
||||||
}
|
}
|
||||||
else if (*flag == 1 && count == 0)
|
else if (fault_flag == 1 && count == 0)
|
||||||
{
|
{
|
||||||
*flag = 0;
|
fault_flag = 0;
|
||||||
H308.detection_flag = kH308Normal;
|
H308.detection_flag = kH308Normal;
|
||||||
|
rt_thread_mdelay(1);
|
||||||
Send_Laser_Alarm_Event(kFaultRcyEvent);
|
Send_Laser_Alarm_Event(kFaultRcyEvent);
|
||||||
}
|
}
|
||||||
else if (rt_pin_read(LED_Y_PIN) == PIN_HIGH && (count == 0))
|
else if (rt_pin_read(LED_Y_PIN) == PIN_HIGH && (count == 0))
|
||||||
{
|
{
|
||||||
*flag = 0;
|
fault_flag = 0;
|
||||||
H308.detection_flag = kH308Normal;
|
H308.detection_flag = kH308Normal;
|
||||||
}
|
}
|
||||||
LOG_D(" *flag = [%d]; H308.detection_flag:[%d]", *flag, H308.detection_flag);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint8_t H308_CheckData(rt_uint8_t *alarm_flag, rt_uint8_t *fault_flag)
|
static uint8_t H308_CheckData(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
static rt_uint8_t alarm_count = 0, fault_count = 0;
|
static rt_uint8_t alarm_count = 0, fault_count = 0;
|
||||||
static rt_uint8_t index = 0;
|
static rt_uint8_t index = 0;
|
||||||
static rt_uint8_t alarm_status_buffer[H308_SAMPLING_TIMS] = {0};
|
static rt_uint8_t alarm_status_buffer[H308_SAMPLING_TIMS] = {0};
|
||||||
|
@ -222,11 +227,13 @@ static uint8_t H308_CheckData(rt_uint8_t *alarm_flag, rt_uint8_t *fault_flag)
|
||||||
{
|
{
|
||||||
index = 0;
|
index = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
alarm_count = H308_Count(alarm_status_buffer, kH308Alarm, H308_SAMPLING_TIMS);
|
alarm_count = H308_Count(alarm_status_buffer, kH308Alarm, H308_SAMPLING_TIMS);
|
||||||
|
rt_thread_mdelay(1);
|
||||||
fault_count = H308_Count(fault_buf, kH308Fault, H308_SAMPLING_TIMS);
|
fault_count = H308_Count(fault_buf, kH308Fault, H308_SAMPLING_TIMS);
|
||||||
H308_HandleAlarm(alarm_count, alarm_flag, H308_SAMPLING_TIMS);
|
rt_thread_mdelay(1);
|
||||||
H308_HandleFault(fault_count, fault_flag, H308_SAMPLING_TIMS);
|
H308_HandleAlarm(alarm_count, H308_SAMPLING_TIMS);
|
||||||
|
rt_thread_mdelay(1);
|
||||||
|
H308_HandleFault(fault_count, H308_SAMPLING_TIMS);
|
||||||
|
|
||||||
return RT_EOK;
|
return RT_EOK;
|
||||||
}
|
}
|
||||||
|
@ -235,7 +242,7 @@ static uint8_t H308_CheckData(rt_uint8_t *alarm_flag, rt_uint8_t *fault_flag)
|
||||||
uint8_t IS_H308_EndOfLife(void)
|
uint8_t IS_H308_EndOfLife(void)
|
||||||
{
|
{
|
||||||
RTC_GetTime();
|
RTC_GetTime();
|
||||||
if (RtcDateTime.year > 2035) // 至少大于2035年再检测
|
if (RtcDateTime.year >= 2035) // 至少大于2035年再检测
|
||||||
{
|
{
|
||||||
if (RTC_GetCounter() >= H308.expiration_seconds)
|
if (RTC_GetCounter() >= H308.expiration_seconds)
|
||||||
{
|
{
|
||||||
|
@ -244,11 +251,13 @@ uint8_t IS_H308_EndOfLife(void)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
H308.end_of_life = 0;
|
H308.end_of_life = 0;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
H308.end_of_life = 0;
|
H308.end_of_life = 0;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
return H308.end_of_life;
|
return H308.end_of_life;
|
||||||
}
|
}
|
||||||
|
@ -303,7 +312,13 @@ static void h308_thread_entry(void *param)
|
||||||
static uint8_t h308_rx_timout_cnt = 0;
|
static uint8_t h308_rx_timout_cnt = 0;
|
||||||
static uint8_t h308_err_cnt = 0;
|
static uint8_t h308_err_cnt = 0;
|
||||||
rt_thread_mdelay(1000);
|
rt_thread_mdelay(1000);
|
||||||
H308.alarm_value = Flash_Get_SysCfg(kAlarmLValueId); // 获取系统报警阈值
|
rt_uint8_t alarm_value = Flash_Get_SysCfg(kAlarmLValueId); // 获取系统报警阈值;
|
||||||
|
if (alarm_value > 25)
|
||||||
|
{
|
||||||
|
alarm_value = 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
H308.alarm_value = alarm_value;
|
||||||
LOG_D("报警阈值:%d%LEL", H308.alarm_value);
|
LOG_D("报警阈值:%d%LEL", H308.alarm_value);
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
@ -320,7 +335,7 @@ static void h308_thread_entry(void *param)
|
||||||
LOG_I("str:%s", str);
|
LOG_I("str:%s", str);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
{
|
{
|
||||||
H308_CheckData(&alarm_flag, &fault_flag);
|
H308_CheckData();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -330,6 +345,7 @@ static void h308_thread_entry(void *param)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
h308_err_cnt++;
|
h308_err_cnt++;
|
||||||
|
|
||||||
LOG_E("(len = %d) < 44, error data:[%s]", len, str);
|
LOG_E("(len = %d) < 44, error data:[%s]", len, str);
|
||||||
if (h308_err_cnt >= 5)
|
if (h308_err_cnt >= 5)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue