From e61d1595ebb1fa76b499cddec2df4bd66ec92b97 Mon Sep 17 00:00:00 2001
From: jinlicong <493886250@qq.com>
Date: Mon, 20 May 2024 20:02:47 +0800
Subject: [PATCH] 继续完善

---
 Function/FLOW_METER_DATA_COLLECT/rs485_data_analysis_pro.c |  149 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 119 insertions(+), 30 deletions(-)

diff --git a/Function/FLOW_METER_DATA_COLLECT/rs485_data_analysis_pro.c b/Function/FLOW_METER_DATA_COLLECT/rs485_data_analysis_pro.c
index c9f1ba2..5e45e42 100644
--- a/Function/FLOW_METER_DATA_COLLECT/rs485_data_analysis_pro.c
+++ b/Function/FLOW_METER_DATA_COLLECT/rs485_data_analysis_pro.c
@@ -1,6 +1,7 @@
 #include "rs485_data_analysis_pro.h"
 #include "rs485_read_data.h"
-#include "mbcrc.h"
+#include "mbcrc1.h"
+#include "uart.h"
 
 FLOW_METER_DATA_T	flow_meter_data_g;
 
@@ -21,14 +22,11 @@
   sendFrame[7] = crc>>8;               //CRC16У���8λ
 	
 	//���ڷ���
-//  RS485_Send_Data(sendFrame,8);
+	RS485_SEND_NORMAL(sendFrame,8);
 	
-	
-	
-	
-	
+
 	//����DMA����
-	
+	RS485_read_data_RX_DMA_CH3_reload();
 	
 }
 
@@ -63,48 +61,137 @@
 }
 
 
-ErrorStatus	SIZHUMODBUSV2_0_dataAnalysis(uint8_t * buf_p,uint8_t slaveAddress)
+ErrorStatus	SIZHUMODBUSV2_0_dataAnalysis(uint8_t * buf_p,uint8_t slaveAddress,RS485_COM_CTRL_PARA_T rs485_com_ctrl_pata_l)
 {
-	uint32_t SC_Accumulation_zs;
-	uint16_t SC_Accumulation_xs;
-	uint32_t WC_Accumulation_zs;
-	uint16_t  WC_Accumulation_xs;
-	uint32_t SC_Accumulation_zs_reverse;
-	uint16_t SC_Accumulation_xs_reverse;
-	uint32_t WC_Accumulation_zs_reverse;
-	uint16_t  WC_Accumulation_xs_reverse;
-	
-	double WC_Accumulation_reverse;
-	double SC_Accumulation_reverse;
-	
+	uint32_t u32temp_zs;
+	uint16_t u16temp_xs;
+	uint8_t	status[12];
+
 	if(modbus03AnswerCheck(buf_p,slaveAddress) == FAIL)
 		return FAIL;
 	
+	buf_p+=3;
+	arrayA_2_arrayB(buf_p, (uint8_t *)&flow_meter_data_g.time_BCD.year, 6, LITTLE_ENDIAN) ;
+
+	arrayA_2_arrayB(buf_p + 6 , (uint8_t *)&u32temp_zs, 4, BIG_ENDIAN) ;
+	arrayA_2_arrayB(buf_p + 10 , (uint8_t *)&u16temp_xs, 2, BIG_ENDIAN) ;	
+	flow_meter_data_g.cumulate_s.forward_cumulate_wc = ZS_2XS_2_DOUBLE(u32temp_zs,u16temp_xs);
+	arrayA_2_arrayB(buf_p + 12 , (uint8_t *)&u32temp_zs, 4, BIG_ENDIAN) ;	
+	arrayA_2_arrayB(buf_p + 16 , (uint8_t *)&u16temp_xs, 2, BIG_ENDIAN) ;	
+	flow_meter_data_g.cumulate_s.forward_cumulate_sc = ZS_2XS_2_DOUBLE(u32temp_zs,u16temp_xs);
 	
-	arrayA_2_arrayB(buf_p + 3 , (uint8_t *)&WC_Accumulation_zs, 4, BIG_ENDIAN) ;
-	arrayA_2_arrayB(buf_p + 7 , (uint8_t *)&WC_Accumulation_xs, 2, BIG_ENDIAN) ;	
-	arrayA_2_arrayB(buf_p + 14 , (uint8_t *)&WC_Accumulation_xs, 2, BIG_ENDIAN) ;	
-		
+	arrayA_2_arrayB(buf_p + 18 , (uint8_t *)&flow_meter_data_g.instant_wc, 4, BIG_ENDIAN) ;	
+	arrayA_2_arrayB(buf_p + 22 , (uint8_t *)&flow_meter_data_g.instant_sc, 4, BIG_ENDIAN) ;	
+	arrayA_2_arrayB(buf_p + 26 , (uint8_t *)&flow_meter_data_g.temperature, 4, BIG_ENDIAN) ;	
+	arrayA_2_arrayB(buf_p + 30, (uint8_t *)&flow_meter_data_g.pressure, 4, BIG_ENDIAN) ;	
+	
+	arrayA_2_arrayB(buf_p + 34 , (uint8_t *)&u32temp_zs, 4, BIG_ENDIAN) ;
+	arrayA_2_arrayB(buf_p + 38 , (uint8_t *)&u16temp_xs, 2, BIG_ENDIAN) ;	
+	flow_meter_data_g.cumulate_s.err_forward_cumulate_wc = ZS_2XS_2_DOUBLE(u32temp_zs,u16temp_xs);
+	
+	arrayA_2_arrayB(buf_p + 40 , (uint8_t *)&u32temp_zs, 4, BIG_ENDIAN) ;
+	arrayA_2_arrayB(buf_p + 44 , (uint8_t *)&u16temp_xs, 2, BIG_ENDIAN) ;	
+	flow_meter_data_g.cumulate_s.err_forward_cumulate_sc = ZS_2XS_2_DOUBLE(u32temp_zs,u16temp_xs);
+	
+	arrayA_2_arrayB(buf_p + 70 , (uint8_t *)&flow_meter_data_g.cumulate_s.cal_cumulate_wc, 8, BIG_ENDIAN) ;
+	arrayA_2_arrayB(buf_p + 78 , (uint8_t *)&flow_meter_data_g.cumulate_s.cal_cumulate_sc, 8, BIG_ENDIAN) ;
+	
+	/*****״̬�֡������ֽ�������������Э��ӳ�䵽˼���Ķ����******/
+	arrayA_2_arrayB(buf_p + 86 , status, 8, LITTLE_ENDIAN) ;
+	
+	
+	
+	
+	
+	
+	
+	if(rs485_com_ctrl_pata_l.modbus_step_status >=rs485_com_ctrl_pata_l.modbus_last_status) //ȫ����ȡ���
+	{
+	}
+	
 	return PASS;
+}
+
+
+
+
+
+
+
+//EK����˹�أ��ֽ�˳��Ƚ�������0x��2����3����0����1��
+ErrorStatus	EKMODBUS_dataAnalysis(uint8_t * buf_p,uint8_t slaveAddress,RS485_COM_CTRL_PARA_T rs485_com_ctrl_pata_l)
+{
+	uint32_t u32temp_zs;
+//	uint16_t u16temp_xs;
+//	uint8_t	status[12];
+
+	if(modbus03AnswerCheck(buf_p,slaveAddress) == FAIL)
+		return FAIL;
 	
+	buf_p+=3;
+	if(rs485_com_ctrl_pata_l.modbus_step_status ==MODBUS_STEP1)
+	{
+		(*(uint8_t *)(&u32temp_zs))=buf_p[1];
+		(*((uint8_t *)(&u32temp_zs) + 1))=buf_p[0];
+		(*((uint8_t *)(&u32temp_zs) + 2))=buf_p[3];
+		(*((uint8_t *)(&u32temp_zs) + 3))=buf_p[2];
+		flow_meter_data_g.cumulate_s.forward_cumulate_wc = u32temp_zs;
+		(*(uint8_t *)(&u32temp_zs))=buf_p[5];
+		(*((uint8_t *)(&u32temp_zs) + 1))=buf_p[4];
+		(*((uint8_t *)(&u32temp_zs) + 2))=buf_p[7];
+		(*((uint8_t *)(&u32temp_zs) + 3))=buf_p[6];
+		flow_meter_data_g.cumulate_s.forward_cumulate_sc = u32temp_zs;
+		
+	}else if(rs485_com_ctrl_pata_l.modbus_step_status ==MODBUS_STEP2)
+	{
+		(*(uint8_t *)(&flow_meter_data_g.pressure))=buf_p[1];
+		(*((uint8_t *)(&flow_meter_data_g.pressure) + 1))=buf_p[0];
+		(*((uint8_t *)(&flow_meter_data_g.pressure) + 2))=buf_p[3];
+		(*((uint8_t *)(&flow_meter_data_g.pressure) + 3))=buf_p[2];
+		
+		(*(uint8_t *)(&flow_meter_data_g.temperature))=buf_p[5];
+		(*((uint8_t *)(&flow_meter_data_g.temperature) + 1))=buf_p[4];
+		(*((uint8_t *)(&flow_meter_data_g.temperature) + 2))=buf_p[7];
+		(*((uint8_t *)(&flow_meter_data_g.temperature) + 3))=buf_p[6];
+		
+	}else if(rs485_com_ctrl_pata_l.modbus_step_status ==MODBUS_STEP3)
+	{
+		(*(uint8_t *)(&flow_meter_data_g.instant_wc))=buf_p[1];
+		(*((uint8_t *)(&flow_meter_data_g.instant_wc) + 1))=buf_p[0];
+		(*((uint8_t *)(&flow_meter_data_g.instant_wc) + 2))=buf_p[3];
+		(*((uint8_t *)(&flow_meter_data_g.instant_wc) + 3))=buf_p[2];
+		
+		(*(uint8_t *)(&flow_meter_data_g.instant_sc))=buf_p[5];
+		(*((uint8_t *)(&flow_meter_data_g.instant_sc) + 1))=buf_p[4];
+		(*((uint8_t *)(&flow_meter_data_g.instant_sc) + 2))=buf_p[7];
+		(*((uint8_t *)(&flow_meter_data_g.instant_sc) + 3))=buf_p[6];
+	}	
+	/*****״̬�֡������ֽ�������������Э��ӳ�䵽˼���Ķ����******/
+	
+	if(rs485_com_ctrl_pata_l.modbus_step_status >=rs485_com_ctrl_pata_l.modbus_last_status) //ȫ����ȡ���
+	{
+		
+	}
+	
+	return PASS;
 }
 
 
 
 
 /**********************�������ݷ���*******************************/
-ErrorStatus	rs485ComDataAnalysis(RS485_COM_UART_PARA_T * uart_para_p,uint16_t device_code,uint8_t slaveAddress)
+ErrorStatus	rs485ComDataAnalysis(RS485_COM_UART_PARA_T  uart_para_p,uint16_t device_code,uint8_t slaveAddress,RS485_COM_CTRL_PARA_T rs485_com_ctrl_pata_l )
 {
 	uint8_t *buf_p;
-	if(uart_para_p->recv_length < 6)  //ĿǰӦ��û������������������6�ֽڵ�
+	if(uart_para_p.recv_length < 6)  //ĿǰӦ��û������������������6�ֽڵ�
 		return FAIL;
 	
 	//ȥ0
 	for(uint16_t count_i=0;count_i< RS485_COM_REC_BUF_LENGTH;count_i ++)
 	{
-		if(uart_para_p->recv_buf[count_i] !=0)
+		if(uart_para_p.recv_buf[count_i] !=0)
 		{
-			buf_p = &uart_para_p->recv_buf[count_i];
+			buf_p = &uart_para_p.recv_buf[count_i];
 			break;
 		}else
 		{
@@ -121,10 +208,12 @@
 				case SIZHUMODBUS1:		return FAIL;
 				case SIZHUMODBUS2:	return FAIL;
 				case SIZHUMODBUS3:	return FAIL;
-        case SIZHUMODBUSV2_0:		return SIZHUMODBUSV2_0_dataAnalysis(buf_p,slaveAddress);
+        case SIZHUMODBUSV2_0:		return SIZHUMODBUSV2_0_dataAnalysis(buf_p,slaveAddress,rs485_com_ctrl_pata_l);
         case TIANXINCUSTOM:		return FAIL;
 				case TIANXINMODBUS:	return FAIL;
-				//��Ҫ����......
+		
+				case	EKMODBUS:	return EKMODBUS_dataAnalysis(buf_p,slaveAddress,rs485_com_ctrl_pata_l);
+				//?��Ҫ����......
         default:return FAIL;
     }
 	

--
Gitblit v1.9.3