guoqiang 2 роки тому
батько
коміт
8d5a91bdd5

+ 13 - 3
Inc/CollectMaster485.h

@@ -277,9 +277,19 @@ typedef union {
  char farray[4];
 }uni_LeiDaYewei;//À×´ïҺλ
 
-
-
-
+typedef struct {
+	float pressure;  //ѹÁ¦
+	float temperature; 
+	float level; 
+}Struct_Cang; 
+
+typedef struct{
+	uint8_t Door_State;
+	uint8_t Facial_Auth;
+}Struct_Tank;
+
+extern Struct_Cang  cang_data[8];
+extern Struct_Tank  tank_data;
 
 extern uni_IncliAngle uni_IncliAngle001;
 extern uni_TankVol_Tempe20 uni_TankVol_Tempe20_001,uni_TankVol_Tempe20_002,uni_TempRealtime001;

+ 3 - 1
Inc/TerminalSlave485.h

@@ -279,7 +279,9 @@ typedef struct _T2C_ALL_Sensor_Data_WholeCar
 	float    		BeiDianDianLiang;
 	uint32_t    YouQiHuiShou_State_OnOff;//开关状态
 	uint32_t    YouQiHuiShou_State_Photo;//光电状态
-	uint32_t    ResPara[13];//备用参数
+	uint32_t    Door_State;   // 门磁 
+	uint32_t    Facial_Auth;   //人脸授权  
+	uint32_t    ResPara[11];//备用参数
 	uint8_t    	chkCRCModbus_Data[2];//暂未使用
  
 }sT2C_ALL_Sensor_Data_WholeCar;

+ 2 - 2
Inc/main.h

@@ -63,8 +63,8 @@ extern "C" {
 #include <stdlib.h>
 #include "stm32f7xx_hal.h"
 
-#define REMOTE_IAP_UPDATA 		1 	//是否是远程升级 //0--本地运行版本      1---远程升级版本
-#define WATCH_DOG_ON 					1   //是否打开看门狗 //0--关闭看门狗SP706   1---打开看门狗SP706
+#define REMOTE_IAP_UPDATA 		0 	//是否是远程升级 //0--本地运行版本      1---远程升级版本
+#define WATCH_DOG_ON 					0   //是否打开看门狗 //0--关闭看门狗SP706   1---打开看门狗SP706
 #define USE_RAM_RECORD    		1   //是否启用RAM数据缓存重发机制
 #define USE_QUEUE_RECORD			1   //是否启用队列数据缓存重发机制
 

+ 2 - 7
MDK-ARM/TestF7.uvoptx

@@ -117,11 +117,6 @@
         <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name></Name>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>CMSIS_AGDI</Key>
@@ -150,7 +145,7 @@
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U69660481 -O111 -S1 -ZTIFSpeedSel10000 -A0 -C0 -JU1 -JI-JP0 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO19 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F746VGTx$CMSIS\Flash\STM32F7x_1024.FLM)</Name>
+          <Name>-U59518874 -O111 -S1 -ZTIFSpeedSel10000 -A0 -C0 -JU1 -JI-JP0 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(5BA02477) -L00(0) -TO19 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20010000 -FC1000 -FN1 -FF0STM32F7x_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F746VGTx$CMSIS\Flash\STM32F7x_1024.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -360,7 +355,7 @@
 
   <Group>
     <GroupName>Application/User</GroupName>
-    <tvExp>0</tvExp>
+    <tvExp>1</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>

+ 3 - 3
MDK-ARM/TestF7.uvprojx

@@ -16,8 +16,8 @@
         <TargetCommonOption>
           <Device>STM32F746VGTx</Device>
           <Vendor>STMicroelectronics</Vendor>
-          <PackID>Keil.STM32F7xx_DFP.2.15.0</PackID>
-          <PackURL>https://www.keil.com/pack/</PackURL>
+          <PackID>Keil.STM32F7xx_DFP.2.14.0</PackID>
+          <PackURL>http://www.keil.com/pack/</PackURL>
           <Cpu>IRAM(0x20000000-0x2004FFFF) IROM(0x8000000-0x80FFFFF) CLOCK(12000000) FPU3(SFPU) CPUTYPE("Cortex-M7") ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <StartupFile></StartupFile>
@@ -275,7 +275,7 @@
               </OCR_RVCT3>
               <OCR_RVCT4>
                 <Type>1</Type>
-                <StartAddress>0x8080000</StartAddress>
+                <StartAddress>0x8000000</StartAddress>
                 <Size>0x20000</Size>
               </OCR_RVCT4>
               <OCR_RVCT5>

+ 18 - 2
Src/CollectMaster485.c

@@ -31,6 +31,9 @@ uint8_t StoreNumber00=1;//实
 uint8_t  Array_IO_OnOff_AllStore[32];
 uint8_t  Array_IO_Exception_AllStore[32];
 
+Struct_Cang  cang_data[8];
+Struct_Tank  tank_data;
+
 
 #define MaxGuanGao		 (1831)
 
@@ -3269,6 +3272,8 @@ uint8_t tmpArr[40]=
 void Parse_AllSensor_Data_For_SingleStore(sT2C_ALL_Sensor_Data_Each_Cang* pT2C_ALL_Sensor_Data,uint16_t msgID)
 {
 	int j001ReadAll;
+	int cang_id = 0;
+
 
 	chkRetCaiJiBan = CheckInFrame_Collect485(LengthOfData_From_Caijiban_Cang_01, msgID);
 
@@ -3279,6 +3284,8 @@ void Parse_AllSensor_Data_For_SingleStore(sT2C_ALL_Sensor_Data_Each_Cang* pT2C_A
 		chkRetCaiJiBan = 0;
 		Collect485.Collect_CommError = False;
 
+		cang_id = msgID -Collector_Get_All_Sensor_Data_Cang01;
+
 		for (j001ReadAll = 0; j001ReadAll < 16; j001ReadAll++)
 		{ //帧头数据16字节
 			pT2C_ALL_Sensor_Data->FrameHead[j001ReadAll] = USART2_RX_BUF_Collector[j001ReadAll];
@@ -3310,7 +3317,7 @@ void Parse_AllSensor_Data_For_SingleStore(sT2C_ALL_Sensor_Data_Each_Cang* pT2C_A
 		}
 		__NOP();
 #endif
-		// 21个IO开关类数据--21个U32
+		// 22个IO开关类数据--21个U32
 		for (j001ReadAll = 0; j001ReadAll < 22; j001ReadAll++)
 		{
 			pT2C_ALL_Sensor_Data->IO_Valve_Data_Every_Cang[j001ReadAll] = ArrayUni_MoniLiang[j001ReadAll + 1].u32_Data;
@@ -3322,6 +3329,11 @@ void Parse_AllSensor_Data_For_SingleStore(sT2C_ALL_Sensor_Data_Each_Cang* pT2C_A
 			pT2C_ALL_Sensor_Data->MoniLiang_Data_Every_Cang[j001ReadAll] = ArrayUni_MoniLiang[j001ReadAll + 22].flo_Data;
 		}
 
+		//add for showtable
+		   cang_data[cang_id].level = pT2C_ALL_Sensor_Data->MoniLiang_Data_Every_Cang[0];
+		   cang_data[cang_id].temperature = pT2C_ALL_Sensor_Data->MoniLiang_Data_Every_Cang[1];
+		   cang_data[cang_id].pressure = pT2C_ALL_Sensor_Data->MoniLiang_Data_Every_Cang[6];
+
 		//					//增加合法性检查
 		//					if(pT2C_ALL_Sensor_Data->MoniLiang_Data_Every_Cang[0]>Max_Oil_Height)
 		//					{//液位高度上限
@@ -3390,6 +3402,10 @@ void Parse_AllSensor_Data_For_WholeCar(sT2C_ALL_Sensor_Data_WholeCar* pT2C_ALL_S
 					pT2C_ALL_Sensor_Data->tiltXYZ[0]=ArrayUni_MoniLiang[0].flo_Data;
 					pT2C_ALL_Sensor_Data->tiltXYZ[1]=ArrayUni_MoniLiang[1].flo_Data;
 					pT2C_ALL_Sensor_Data->tiltXYZ[2]=ArrayUni_MoniLiang[2].flo_Data;
+
+					// add for showtable 
+					tank_data.Door_State = ArrayUni_MoniLiang[7].farray[3];
+					tank_data.Facial_Auth = ArrayUni_MoniLiang[8].farray[3];
 					
 					
 					Stor[0].QingJiaoFlo=pT2C_ALL_Sensor_Data->tiltXYZ[0];//(float)(Stor[0].QingJiao*SCL_Angle*1);
@@ -3411,7 +3427,7 @@ void Parse_AllSensor_Data_For_WholeCar(sT2C_ALL_Sensor_Data_WholeCar* pT2C_ALL_S
 					pT2C_ALL_Sensor_Data->ResPara[0]=ArrayUni_MoniLiang[7].u32_Data;
 					
 					
-					for(j001ReadAll=0;j001ReadAll<13;j001ReadAll++)
+					for(j001ReadAll=0;j001ReadAll<11;j001ReadAll++)
 					{//帧头数据16字节
 						pT2C_ALL_Sensor_Data->ResPara[j001ReadAll]=ArrayUni_MoniLiang[j001ReadAll+7].u32_Data;
 					}//帧头数据16字节

+ 1 - 1
Src/KeySlave485.c

@@ -38,7 +38,7 @@ uint8_t product_code[20] = "JL-SIMS-CJ-V2.1";				 //
 uint8_t product_ID[20] = "20210730001";						 //产品ID
 
 char Version_software[30] = "KZB09A0_20220210_Temp1";
-uint32_t Version_Soft[8] = {2,2,3,13,1,1,0,20230109};
+uint32_t Version_Soft[8] = {2,2,3,13,1,1,0,20230527};
 
 uint8_t flag_exitReset = 0;	 //终止复位命令
 uint8_t flag_Uart4_Busy = 0; //表明打印机占用了总线,暂停语音播报

+ 3 - 1
Src/TerminalSlave485.c

@@ -275,7 +275,9 @@ sT2C_ALL_Sensor_Data_WholeCar T2C_ALL_Sensor_WholeCar01=
 	91.2,	 						//电池电量
 	0x00000001,				//壁挂油传感器霍尔传感器状态
 	0x00000001,				//壁挂油传感器光电传感器状态
-	{0x01,0x02,3,4,5,6,7,8,9,10,11,12,13},//13个浮点数  表示13个模拟量类的传感器
+	0x00000001,       // 门磁
+	0x00000001,       //人脸识别
+	{0x01,0x02,3,4,5,6,7,8,9,10,11},//13个浮点数  表示13个模拟量类的传感器
 	{0x01,0x02}//CRC
 };
 

+ 132 - 1
Src/TerminalSlave485_jt808.c

@@ -68,6 +68,9 @@ JT808_DATA_OBJ jt808_obj = {
 
 };
 
+Struct_Cang cang_data_tbak[8];
+Struct_Tank tank_data_tbak;
+
 extern uint8_t  Cang_IO_tbak[4][64];
 extern uint32_t overflow_cnt_bak;
 extern unsigned char overflow_flag_bak;
@@ -128,6 +131,7 @@ int jt808_Build_Ax_Cmd(uint8_t *pBuf, uint32_t flowID, uint8_t *pEmergencyflag)
 	unsigned char Lrc_temp;
 	unsigned char overflow_flag=0;
 	unsigned char temp_i = 0x00;
+	uint8_t cang_id = 0;
 	
 	UNUSED(Lrc_temp);
 	UNUSED(temp_i);
@@ -179,6 +183,21 @@ int jt808_Build_Ax_Cmd(uint8_t *pBuf, uint32_t flowID, uint8_t *pEmergencyflag)
 	{
 		StoreNumber = 5;
 	}
+
+	//add for showtable 
+	for(cang_id = 0; cang_id < StoreNumber; cang_id++){
+		if(memcmp(&cang_data_tbak[cang_id], &cang_data[cang_id], sizeof(Struct_Cang)))
+		{
+			emergencyflag=0x80;
+		}
+
+		memcpy(&cang_data_tbak[cang_id],&cang_data[cang_id],sizeof(Struct_Cang));
+	}
+
+	if(memcmp(&tank_data_tbak, &tank_data, sizeof(Struct_Tank))){
+		emergencyflag=0x80;
+	}
+	memcpy(&tank_data_tbak, &tank_data, sizeof(Struct_Tank));
 	
 	if((overflow_cnt==0) && (overflow_cnt==overflow_cnt_bak))
 	{
@@ -199,8 +218,16 @@ int jt808_Build_Ax_Cmd(uint8_t *pBuf, uint32_t flowID, uint8_t *pEmergencyflag)
 	pBuf[send_pos++] = emergencyflag; //紧急上报位	
 	pBuf[send_pos++] = 0x00; 					//数据状态:00正常;01未收到数据;02乱码
 	pBuf[send_pos++] = StoreNumber;
-	pBuf[send_pos++] = 0x22;
+	//防溢流插座
+	pBuf[send_pos++] = 0x22;  
 	pBuf[send_pos++] = overflow_flag;
+	//门磁
+	pBuf[send_pos++] = 0x21;  
+	pBuf[send_pos++] = 0x01;
+	pBuf[send_pos++] = tank_data_tbak.Door_State;
+	//人脸授权
+	pBuf[send_pos++] = 0x23;  
+	pBuf[send_pos++] = tank_data_tbak.Facial_Auth;
 	
 	//61	人孔大盖	开关
 	send_pos += jt808_Build_0x61_ManHole_Big_SW((uint8_t *)pBuf+send_pos);
@@ -214,6 +241,15 @@ int jt808_Build_Ax_Cmd(uint8_t *pBuf, uint32_t flowID, uint8_t *pEmergencyflag)
 	//64	底阀	开关
 	send_pos += jt808_Build_0x64_HaiDiFa((uint8_t *)pBuf+send_pos);
 
+	//65	温度
+	send_pos += jt808_Build_0x65_Temperature((uint8_t *)pBuf+send_pos);
+
+	//6B	压力
+	send_pos += jt808_Build_0x6B_Pressure((uint8_t *)pBuf+send_pos);
+
+	//6C	液位
+	send_pos += jt808_Build_0x6C_Level((uint8_t *)pBuf+send_pos);
+
 	//6D	仓状态	
 	send_pos += jt808_Build_0x6d_Cang_info((uint8_t *)pBuf+send_pos);	
 	
@@ -470,6 +506,101 @@ int jt808_Build_0x64_HaiDiFa(uint8_t *pBuf)
 		
 	return idx;
 }
+/**
+ ***************************************
+ * 构建65	温度1 		
+ * 输入:pBuf-构建数据的存放首地址
+ * 返回: 构建数据的字节总数
+ ***************************************
+ */
+int jt808_Build_0x65_Temperature(uint8_t *pBuf)
+{
+	int idx=0;
+	int i;
+	uni_float uni;
+	
+	pBuf[idx++] = 0x65;
+	for (i = 0; i < StoreNumber; i++)
+	{
+		uni.flo_Data = cang_data_tbak[i].temperature;
+		if((uni.array_u8[0]== 0xAB) && (uni.array_u8[1] == 0xAB) && (uni.array_u8[2] == 0xAB) && (uni.array_u8[3] == 0xAB)){
+			pBuf[idx++] = 0x01;
+		}else{
+			pBuf[idx++] = 0x00;
+		}
+		pBuf[idx++] = uni.array_u8[3];
+		pBuf[idx++] = uni.array_u8[2];
+		pBuf[idx++] = uni.array_u8[1];
+		pBuf[idx++] = uni.array_u8[0];
+	}
+		
+	return idx;
+}
+
+/**
+ ***************************************
+ * 构建6B	压力		
+ * 输入:pBuf-构建数据的存放首地址
+ * 返回: 构建数据的字节总数
+ ***************************************
+ */
+int jt808_Build_0x6B_Pressure(uint8_t *pBuf)
+{
+	int idx=0;
+	int i;
+	uni_float uni;
+	
+	pBuf[idx++] = 0x6B;
+	for (i = 0; i < StoreNumber; i++)
+	{
+		uni.flo_Data = cang_data_tbak[i].pressure;
+
+		if((uni.array_u8[0]== 0xAC) && (uni.array_u8[1] == 0xAC) && (uni.array_u8[2] == 0xAC) && (uni.array_u8[3] == 0xAC)){
+			pBuf[idx++] = 0x01;
+		}else{
+			pBuf[idx++] = 0x00;
+		}
+
+		pBuf[idx++] = uni.array_u8[3];
+		pBuf[idx++] = uni.array_u8[2];
+		pBuf[idx++] = uni.array_u8[1];
+		pBuf[idx++] = uni.array_u8[0];
+	}
+		
+	return idx;
+}
+
+/**
+ ***************************************
+ * 构建6C	液位 		
+ * 输入:pBuf-构建数据的存放首地址
+ * 返回: 构建数据的字节总数
+ ***************************************
+ */
+int jt808_Build_0x6C_Level(uint8_t *pBuf)
+{
+	int idx=0;
+	int i;
+	uni_float uni;
+	
+	pBuf[idx++] = 0x6C;
+	for (i = 0; i < StoreNumber; i++)
+	{
+		uni.flo_Data = cang_data_tbak[i].level;
+		if((uni.array_u8[0]== 0xAA) && (uni.array_u8[1] == 0xAA) && (uni.array_u8[2] == 0xAA) && (uni.array_u8[3] == 0xAA)){
+			pBuf[idx++] = 0x01;
+		}else{
+			pBuf[idx++] = 0x00;
+		}
+		pBuf[idx++] = uni.array_u8[3];
+		pBuf[idx++] = uni.array_u8[2];
+		pBuf[idx++] = uni.array_u8[1];
+		pBuf[idx++] = uni.array_u8[0];
+	}
+		
+	return idx;
+}
+
 /**
  ***************************************
  * 构建70	铅封状态		

+ 26 - 5
Src/freertos.c

@@ -848,7 +848,7 @@ void Task_Usart3_LCD_Update(void const *argument)
 			StartUpdate_Screen_Flag = False;
 			Dispaly_CarAndValveState();
 		}
-		if ((i00task_usart3 % 60) == 0)
+		if ((i00task_usart3 % 30) == 0)
 		{ 
 			//偶数的时候显示模拟量类传感器信息--开始
 			if ((DisplaySensorData_En) && (flag_Sw_DisplaySensorData == 1))
@@ -3106,6 +3106,7 @@ void DisplaySensorInfo(void)
 		Auto_sealedOK_ID_bak=Full_Oil_allinfo.Auto_sealedOK_ID;
 	}
 #endif
+#if 0
 	switch (CangNum_tskUart3)
 	{
 	case 1:
@@ -3129,10 +3130,10 @@ void DisplaySensorInfo(void)
 		Vt_Local_Disp = Vt_Local[0];
 		break;
 	}
-
+#endif 
 	//taskENTER_CRITICAL();
 	//显示模拟量类传感器信息----开始
-	memset(bufTextSensorInfo, ' ', sizeof(bufTextSensorInfo));
+	//memset(bufTextSensorInfo, ' ', sizeof(bufTextSensorInfo));
 	//						Stor[0].Temperature=123.34;
 	//						Len002=formatStrSensor(bufTextSensorInfo,&Stor[0].Temperature,1);
 	//						memset(bufTextSensorInfo+Len002,' ',sizeof(bufTextSensorInfo)-Len002);
@@ -3171,8 +3172,26 @@ void DisplaySensorInfo(void)
 	; //V20_Local_Disp+=10000.1301*CangNum_tskUart3;
 	if(Config_info_all.Config_fun_id&0xC0)
 	{
-		Len003 = sprintf((char *)bufTextSensorInfo, "仓%d:",CangNum_tskUart3);	
+		Len003 = sprintf((char *)bufTextSensorInfo, " %d :",CangNum_tskUart3);	
+#if 1
+		Len003 += sprintf((char *)bufTextSensorInfo + Len003, " %6.1f %6.1f %6.1f",
+					 cang_data[CangNum_tskUart3-1].level,       //液位
+					 cang_data[CangNum_tskUart3-1].temperature, //温度 
+					 cang_data[CangNum_tskUart3-1].pressure);   //压力
+					 #else 
+					 Len003 += sprintf((char *)bufTextSensorInfo + Len003, " ");   
+					 Len003 += sprintf((char *)bufTextSensorInfo + Len003, "%05.2f",cang_data[CangNum_tskUart3-1].level);   //压力
+					 Len003 += sprintf((char *)bufTextSensorInfo + Len003, " "); 
+					 Len003 += sprintf((char *)bufTextSensorInfo + Len003, "%05.2f",cang_data[CangNum_tskUart3-1].temperature);//温度 
+					 Len003 += sprintf((char *)bufTextSensorInfo + Len003, " "); 
+					 Len003 += sprintf((char *)bufTextSensorInfo + Len003, "%05.2f",cang_data[CangNum_tskUart3-1].pressure);   //压力
+
+					 #endif 
+
 	}
+	WrDwinBuf(0x1A00+0x100*CangNum_tskUart3, &bufTextSensorInfo[0],Len003, 1);
+	return;
+
 #if 0	
 	if(Config_info_all.Config_fun_id&0x80) //液位
 	{
@@ -3186,7 +3205,7 @@ void DisplaySensorInfo(void)
 		Len003 += sprintf((char *)bufTextSensorInfo + Len003, "Pressure:%5.4f\r\n",
 					 pT2C_ALL_Sensor_Data_Disp->MoniLiang_Data_Every_Cang[6]);
 	}
-#else
+//#else
 	if(Config_info_all.Config_fun_id&0x80) //液位
 	{
 		Len003 += sprintf((char *)bufTextSensorInfo + Len003, " %5.4f  %5.2f  %5.2f",
@@ -3197,6 +3216,8 @@ void DisplaySensorInfo(void)
 	WrDwinBuf(0x1A00+0x100*CangNum_tskUart3, &bufTextSensorInfo[0],Len003, 1);
 	return;
 #endif	
+
+
 #if 0	
 	Len003 = sprintf((char *)bufTextSensorInfo + Len002, "仓号:%d;h:%5.4f;Ta:%5.2f;T1,%5.2f ℃;T2:%5.2f;T3:%5.2f;\r\nVt:%5.2f L;V20:%5.2f L;\r\n",
 					 CangNum_tskUart3,