From 65062d0d5b21f838aa0043a15ce54cfab8d72c43 Mon Sep 17 00:00:00 2001
From: wujiazhi <1147861305@qq.com>
Date: Tue, 11 Jun 2024 14:23:53 +0800
Subject: [PATCH] 1.Fixed communication failure between MCU and wireless module 2.Fix the wrong judgment of alkaline lithium power

---
 Soft/check_out.c |  166 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 166 insertions(+), 0 deletions(-)

diff --git a/Soft/check_out.c b/Soft/check_out.c
new file mode 100644
index 0000000..6174d59
--- /dev/null
+++ b/Soft/check_out.c
@@ -0,0 +1,166 @@
+#include "check_out.h"
+#include "gpio.h"
+
+#define				LOW_FLOW_CNT				3
+#define				CHECK_PERIOD				250
+#define				WORK_FLOW_PARA			14400
+
+CHECK_CAL_INF 	check_cal_g = {
+	.device_type = G10
+};
+
+uint8_t	get_led_para_output_flag(void)
+{
+	return	check_cal_g.pluse_flag;
+}
+
+
+void set_led_para_output_flag(uint8_t flag)
+{
+	check_cal_g.pluse_flag = flag;
+}
+/*����ϵͳ�궨֮ǰ�ij�ʼ������*/
+void  led_para_output_init(void)
+{
+	
+	switch (check_cal_g.device_type)
+	{
+		case G6: 	check_cal_g.check_fre 			= 0.005; 
+							check_cal_g.check_fre_low 	= 0.001;
+							check_cal_g.check_fre_flow 	= 0.9;
+							break;
+		case G10:  check_cal_g.check_fre 			= 0.01; 
+							check_cal_g.check_fre_low 	= 0.005;
+							check_cal_g.check_fre_flow 	= 1.45;
+							break;
+		case G16: check_cal_g.check_fre 			= 0.01; 
+							check_cal_g.check_fre_low 	= 0.005;
+							check_cal_g.check_fre_flow 	= 2.3;
+							break;
+		case G25: check_cal_g.check_fre 			= 0.01; 
+							check_cal_g.check_fre_low 	= 0.005;
+							check_cal_g.check_fre_flow 	= 3.70;
+							break;
+	
+		default:	break;
+
+	}
+	
+	
+		check_cal_g.check_utotal		= 0.1;
+		check_cal_g.low_pluse_out 	= check_cal_g.check_utotal;
+		check_cal_g.pluse_flag			= 0;
+		check_cal_g.low_pluse_cnt		=	0;
+		check_cal_g.work_period			= CHECK_PERIOD;
+		LED_LOW;
+		//LOWER_PLUSE_LOW
+	
+}
+
+
+uint16_t led_pluse_out(double flow)
+{
+	uint8_t		new_pluse;
+	double		data_differ;
+	double		led_data_delay;
+	uint16_t   time;
+	/*��Ƶ����ͨ��һ���õ��ۼƼ�¼ԭ�ȵ��ۼ���*/
+	
+	check_cal_g.uvol		=		flow;
+	check_cal_g.check_utotal = check_cal_g.check_utotal + check_cal_g.uvol;//�ۼ�����
+	check_cal_g.workConInstantFlow = check_cal_g.uvol * WORK_FLOW_PARA;
+	
+	/*�ж����������趨����Ƶ��,С�����л�*/
+	if(check_cal_g.workConInstantFlow < check_cal_g.check_fre_flow)
+	{
+		/*�໥��������*/
+		if(check_cal_g.low_pluse_cnt == LOW_FLOW_CNT)
+		{
+			data_differ = check_cal_g.check_fre_low;
+		}else
+		{
+			check_cal_g.low_pluse_cnt ++;
+		}
+	}else
+	{
+		/*�໥��������*/
+		if(check_cal_g.low_pluse_cnt == 0)
+		{
+			data_differ = check_cal_g.check_fre;
+		}else
+		{
+			check_cal_g.low_pluse_cnt --;
+		}
+	}
+	
+	//data_differ = cal_gas_struct_g.check_fre;
+	if(check_cal_g.low_pluse_out <= 0)
+	{
+		check_cal_g.low_pluse_out = check_cal_g.check_utotal;
+	}
+	
+	//��������� ��������ô��ǰԤ�����led���źš�
+	if((check_cal_g.check_utotal) >= (check_cal_g.low_pluse_out + data_differ))
+	{
+		
+			if(check_cal_g.uvol > data_differ)	//�쳣����·���,���Ʊ궨
+			{
+				check_cal_g.pluse_flag	= 0;
+				return 0;
+			}
+			//Test_101_P
+		//	if(check_cal_g.pluse_flag	== 0)
+			{
+				led_data_delay = check_cal_g.check_utotal - (check_cal_g.low_pluse_out + data_differ) ;
+				led_data_delay = 1 - (led_data_delay / check_cal_g.uvol);
+				led_data_delay = check_cal_g.work_period * led_data_delay;//Ԥ��ʱ�䡣�ڴﵽ����ʱ��ʱ���ơ�
+				/*Ԥ��ʱ���Ƿ�ﵽ���Ƶ������㡣*/
+				//Test_001_P	
+				if(led_data_delay <= 0)
+				{
+					//	Test_011_P
+						LED_HIGH;
+						delay_ms(35);
+						LED_LOW;
+						time = 0;
+						//Test_011_P
+				}else if(led_data_delay  < (double) (check_cal_g.work_period - 60))
+				{
+					
+						
+						//Test_111_P
+						if(led_data_delay < 2)
+							time = 1;
+						else
+							time = (uint16_t)led_data_delay;
+						
+						delay_ms(time);
+						//Test_100_P
+						LED_HIGH;
+						delay_ms(35);
+						LED_LOW;
+						
+				}else
+				{
+						//Test_100_P
+						delay_ms(check_cal_g.work_period - 60);
+						LED_HIGH;
+						delay_ms(35);
+						LED_LOW;
+						time = check_cal_g.work_period - 60;
+						
+				}
+				//Test_110_P
+				check_cal_g.low_pluse_out = check_cal_g.low_pluse_out + data_differ;
+				check_cal_g.pluse_flag		= 1;//�����һ�����ڴﵽҪ���˻��߳��ֳ���10L/s��������Ȳ����ǡ�
+			
+
+			}
+			
+				return (36 + time);
+	}
+	return 1;
+	
+}
+
+

--
Gitblit v1.9.3