From a12102b90bda2f409babc8c241bfc66118a8cb70 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Thu, 25 Apr 2024 20:01:19 +0800
Subject: [PATCH] 继续完善485采集

---
 Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c |  156 +++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 123 insertions(+), 33 deletions(-)

diff --git a/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c b/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
index a83c0a0..06361b7 100644
--- a/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
+++ b/Function/FLOW_METER_DATA_COLLECT/rs485_read_data.c
@@ -1,49 +1,144 @@
 #include "rs485_read_data.h"
 #include "rs485_data_analysis_pro.h"
-__IO RS485_COM_STATUS_T	rs485_com_status_g = RS485_COM_IDLE;
+#include "tim.h"
 
 
+//__IO RS485_COM_STATUS_T	rs485_com_status_g = RS485_COM_IDLE;
 
-//�����豸���봦�������ع�����ʱʱ��ms
-uint16_t rs485GetDelayTime(uint16_t device_code)
+//__IO FlagStatus	rs485_pwr_delay_status_g = RESET; //����ʱ�䵽���־
+
+//static uint8_t	rs485_pwr_delay_time_out_cnt =0;
+
+__IO RS485_COM_CTRL_PARA_T rs485_com_ctrl_pata_g={
+	.status = RS485_COM_IDLE,                        \
+	.reread_num_cnt =0,                   					 \
+};
+
+RS485_COM_UART_PARA_T	rs485_com_uart_data_g ={
+	.recv_flag = RESET,                     \
+};
+
+//�����豸���봦�������ع�����ʱʱ��������
+uint8_t rs485GetDelayTime(uint16_t device_code)
 {
+
 	//���ڱ�����������1��һ�Σ�������ʱ�IJ�����1000ms�� ������ֵ��0-1000ms֮�䣬ʵ����ʱ��Ϊ1�����ң� ��ֵ��1000-2000ms֮�䣬ʵ����ʱ��Ϊ2������
 	switch (device_code){
 		
-				case SIZHUMODBUS1:		return 900;
-				case SIZHUMODBUS2:	return 900;
-				case SIZHUMODBUS3:	return 900;
-        case SIZHUMODBUSV2_0:		return 900;
-        case TIANXINCUSTOM:		return 900;
-				case TIANXINMODBUS:	return 900;
+				case SIZHUMODBUS1:		return 1;
+				case SIZHUMODBUS2:	return 1;
+				case SIZHUMODBUS3:	return 1;
+        case SIZHUMODBUSV2_0:		return 1;
+        case TIANXINCUSTOM:		return 1;
+				case TIANXINMODBUS:	return 1;
 				//��Ҫ����......
         default:return 100;
     }
 	
 }
 
-
-
-
-RS485_COM_STATUS_T	rs485ComPwrOnHandle(void)
+//�����豸���뷢�Ͷ�ȡ֡
+void rs485SendReadData(uint16_t device_code,uint8_t slaveAddress)
 {
-	uint16_t delay_time;
-	//IO�ڳ�ʼ��
-	
-	
-	//�򿪹���
-	
-	//�򿪶�ʱ���жϣ���ͬ�豸������ʱ���ȣ�Ҫ��Ҫ���ǹ������������ȡ�������
-	delay_time = rs485GetDelayTime(SIZHUMODBUSV2_0);
-	
+
+	switch (device_code){
+		
+				case SIZHUMODBUS1:		sendModbusReadFrame(slaveAddress,501,50);break;
+				case SIZHUMODBUS2:	break;
+				case SIZHUMODBUS3:	break;
+        case SIZHUMODBUSV2_0:		break;
+        case TIANXINCUSTOM:		break;
+				case TIANXINMODBUS:	break;
+				//��Ҫ����......
+        default:break;
+    }
 	
 }
 
 
+RS485_COM_STATUS_T	rs485ComPwrOnHandle(void)
+{
+	uint8_t delay_time_s;
+	
+	//IO�ڳ�ʼ��
+	
+	//�򿪹���
+	
+	//�򿪶�ʱ���жϣ���ͬ�豸������ʱ���ȣ�Ҫ��Ҫ���ǹ������������ȡ�������
+	delay_time_s = rs485GetDelayTime(SIZHUMODBUSV2_0);
+	rs485_com_ctrl_pata_g.pwr_delay_status = RESET;
+	rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt = 0;
+	
+	
+	//����״̬��λ
+	rs485_com_ctrl_pata_g.reread_num_cnt = RS485_REREAD_NUM;
+	rs485_com_ctrl_pata_g.reread_wait_time_cnt = RS485_REREAD_WATI_TIME;
+	
+	rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt = delay_time_s;
+	
+	return RS485_COM_SEND;
+		
+}
+
+
+RS485_COM_STATUS_T	rs485ComSendHandle(void)
+{
+	//��ʱ��--�� �����ʱ1�룬��--�͵���0�ˣ� ���ж�==0�Ϳ��Զ�ȡ���ݡ���Ϊ�ϵ絽�������ݰ�״̬��ִ�У�����Ͳ���һ��ѭ�����ڵ�ʱ�䣨����1�룩
+	if(rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt)
+	{
+		rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt--;
+	}
+	
+	
+	if(rs485_com_ctrl_pata_g.pwr_delay_time_out_cnt == 0)  //��ʱ��0�Ϳ��Է��Ͷ�ȡָ��
+	{		
+		rs485SendReadData(SIZHUMODBUSV2_0,1); //�˴����Ҫ��
+		return RS485_COM_WAIT_ANSWER;
+	}
+	
+		
+}
 
 
 
+RS485_COM_STATUS_T	rs485ComWaitAnswerHandle(void)
+{
+	ErrorStatus	read_ok = FAIL;
+	//��鴮������
+	
+	
+	//��������,����ɹ���������read_ok = PASS
+	if(rs485_com_uart_data_g.recv_flag == SET)
+	{
+		rs485_com_uart_data_g.recv_flag =RESET;
+	}
+	
+	
+	if(read_ok==PASS)
+	{
+		return RS485_COM_IDLE;
+	}
+	
+	if((--rs485_com_ctrl_pata_g.reread_wait_time_cnt)==0)
+	{
+		if((--rs485_com_ctrl_pata_g.reread_num_cnt)==0)
+		{
+			//��ʱ���ض��������꣬���س�ʱ����
+			
+			//�رյ�Դ���رմ��ڣ�RS485ͨѶʧ��+1,
+			
+			return RS485_COM_IDLE;
+		}else
+		{
+			//��ʱ�����ظ��������У��������·��Ͷ�ȡ����
+			return RS485_COM_SEND;
+		}
+		
+	}
 
+	return RS485_COM_WAIT_ANSWER;
+		
+}
 
 
 
@@ -52,27 +147,22 @@
 	
 	
 	if(1)//�ж�485�ɼ���ʶ
-	{
-		
-		if(rs485_com_status_g == RS485_COM_IDLE)
+	{	
+		if(rs485_com_ctrl_pata_g.status == RS485_COM_IDLE)
 		{
-			rs485_com_status_g = RS485_COM_PWR_ON;
+			rs485_com_ctrl_pata_g.status = RS485_COM_PWR_ON;
 		}
-		
-		
-		
+	
 	}
 	
 	
-	switch (rs485_com_status_g){
+	switch (rs485_com_ctrl_pata_g.status){
 		
 				case RS485_COM_IDLE:		break;
 				case RS485_COM_PWR_ON:	break;
 				case RS485_COM_SEND:	break;
         case RS485_COM_WAIT_ANSWER:		break;
-        case RS485_COM_TIMEOUT:		break;
-				case RS485_COM_OFF:	break;
-		
+	
         default:;
     }
 	

--
Gitblit v1.9.3