Przeglądaj źródła

传感器添加完成,测试通过

guoqiang 2 lat temu
rodzic
commit
0b799f107a
10 zmienionych plików z 302 dodań i 247 usunięć
  1. 5 4
      Core/Inc/hdf.h
  2. 24 11
      Core/Inc/tem.h
  3. 15 1
      Core/Src/hdf.c
  4. 88 75
      Core/Src/kzq.c
  5. 4 2
      Core/Src/level.c
  6. 50 137
      Core/Src/main.c
  7. 5 5
      Core/Src/pressure.c
  8. 105 1
      Core/Src/tem.c
  9. 5 10
      MDK-ARM/caijiqiV001.uvoptx
  10. 1 1
      MDK-ARM/caijiqiV001.uvprojx

+ 5 - 4
Core/Inc/hdf.h

@@ -42,11 +42,12 @@ extern int flagU1Rx,flagU2Rx,flagU3Rx;
 extern uint8_t USART3_RX_BUF002_print[Uart3_BUF_SIZE];
 
 
+typedef struct{
+   uint8_t  Door_Status;         // ÃÅ´Å¿ª¹Ø 
+   uint8_t  Facial_Auth;  // ÈËÁ³ÊÚȨ
+} Tank_Inf;
 
-
-
-
-
+extern Tank_Inf tank_inf;
 
 extern HDF_Inf hdf_inf[SENSOR_DEEP];
 extern uint8_t Get_DFState(uint8_t Cang_Num);

+ 24 - 11
Core/Inc/tem.h

@@ -3,19 +3,32 @@
 
 #include "cang.h"
 
-#define TEM_BUF_DEP 20
+#define TEM_STARTADDR  (0x61)
+
+typedef enum{
+	Tem_NONE = 0,
+	Tem_FST100_611,
+    Tem_HUATIAN_THREE=3,
+}Tem_Tpye;
+
 
 typedef struct{
-int16_t TEM_HData[TEM_BUF_DEP];								//顶部温度数据
-int16_t TEM_MData[TEM_BUF_DEP];								//中间温度数据
-int16_t TEM_LData[TEM_BUF_DEP];								//底部温度数据
-uint16_t TEM_ErrorCnt;								//错误计数		
-uint16_t TEM_Error;										//错误状态
-uint16_t TEM_StateKeepNum;						//判断次数	
-uint16_t RTData_Num;      //8仓,每仓三点测温
-}TEM_Inf;
-
-extern TEM_Inf tem_inf[SENSOR_DEEP];
+float temperature1;										//温度 顶部
+float temperature2;										//温度 中间
+float temperature3;										//温度 底部
+float zero;	
+uint16_t ErrorCnt;								//液位错误计数	
+uint16_t Error;										//错误状态		
+uint16_t StateKeepNum;						//判断次数
+uint16_t RTData_Num;
+}Tem_Inf;
+
+
+extern Tem_Inf tem_inf[SENSOR_DEEP];
+//extern void Pressure_state(uint16_t CangNum);
+extern void Tem_Init(void);
+extern uint8_t Parse_Tem(uint8_t* data, Tem_Tpye type);
+extern void Tem_Error(uint8_t addr);
 
 
 #endif

+ 15 - 1
Core/Src/hdf.c

@@ -2,6 +2,8 @@
 void TOUCHUAN_UART_NUM(uint8_t* pTx) ;
 void Get_ZN_hdf_data(void) ;
 HDF_Inf hdf_inf[SENSOR_DEEP];
+Tank_Inf tank_inf;
+
 uint16_t Uart_len_TouChuan= 0;
 uint8_t Get_DFState(uint8_t Cang_Num)    //查询仓底阀状态
 {
@@ -106,7 +108,7 @@ void DF_State(uint8_t Cang_Num)         //
 				{
 					hit = DoPinIoHitSame(PinNo++, &status);
 					if(hit){
-						pxyf[j + 1].XYF_State2 = status;
+						pxyf[j + 1].XYF_State2 = status==0?1:0;
 					}
 				}
 			}
@@ -160,6 +162,18 @@ void DF_State(uint8_t Cang_Num)         //
 	 }*/
 
   }
+
+  // 门磁 & 人脸授权
+  hit = DoPinIoHitSame(6, &status);
+  if(hit){
+	tank_inf.Door_Status = status==0?1:0;
+ }
+
+   hit = DoPinIoHitSame(7, &status);
+  if(hit){
+	tank_inf.Facial_Auth = status==0?1:0;
+  }
+
 }
 
 void Get_ZN_hdf_data(void) 

+ 88 - 75
Core/Src/kzq.c

@@ -395,28 +395,47 @@ uint16_t Read_ZhencheSensorData1(uint8_t* pTx)
   }Hex_to_float;
   Hex_to_float hex_to_float;
 
-
+	//倾角
     uint8_t i = 0;
-    hex_to_float.float_temp = (float)pangle->Angle_DataX[0]*Angle_cs;		
-		pTx[16] = hex_to_float.arr[0];               //读取高位温度传感器数据
+    hex_to_float.float_temp = (float)pangle->Angle_DataX[0]*Angle_cs;       //倾角 x 	
+		pTx[16] = hex_to_float.arr[0];               
 		pTx[17] = hex_to_float.arr[1];
 		pTx[18] = hex_to_float.arr[2];
 		pTx[19] = hex_to_float.arr[3];	
-    hex_to_float.float_temp = (float)pangle->Angle_DataY[0]*Angle_cs;		
-		pTx[20] = hex_to_float.arr[0];               //读取高位温度传感器数据
+    hex_to_float.float_temp = (float)pangle->Angle_DataY[0]*Angle_cs;		 //倾角 y 
+		pTx[20] = hex_to_float.arr[0];             
 		pTx[21] = hex_to_float.arr[1];
 		pTx[22] = hex_to_float.arr[2];
 		pTx[23] = hex_to_float.arr[3];		
-    hex_to_float.float_temp = (float)pangle->Angle_DataZ[0]*Angle_cs;		
-		pTx[24] = hex_to_float.arr[0];               //读取高位温度传感器数据
+    hex_to_float.float_temp = (float)pangle->Angle_DataZ[0]*Angle_cs;		 //倾角 z
+		pTx[24] = hex_to_float.arr[0];    
 		pTx[25] = hex_to_float.arr[1];
 		pTx[26] = hex_to_float.arr[2];
-		pTx[27] = hex_to_float.arr[3];			
+		pTx[27] = hex_to_float.arr[3];
+
+
 		
-	  for(i = 0;i < 228;i++)                       //铅封
-    {
-	   pTx[28+i] = 0xa5;	   
-    }		
+	  for(i = 0;i < 16;i++)                       // 备电开关、备电电量、油气回收开关、油气回收卸尽
+      {
+	      pTx[28+i] = 0xa5;	   
+      }	
+
+	  //门磁
+	  pTx[44] = 0x00;
+	  pTx[45] = 0x00;
+	  pTx[46] = 0x00;
+	  pTx[47] = tank_inf.Door_Status;
+
+	  //授权
+	  pTx[48] = 0x00;
+	  pTx[49] = 0x00;
+	  pTx[50] = 0x00;
+	  pTx[51] = tank_inf.Facial_Auth;
+
+	  //其它
+	  for(i = 0;i < 28;i++){
+		pTx[52+i] = 0xa5;	
+	  }
 	
 
 	return 1;		
@@ -2734,7 +2753,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 {
   //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1
 //	Angle_Inf* pangle = &angle_inf;											
-	TEM_Inf* ptem = tem_inf;
+	Tem_Inf* ptem = tem_inf;
 //	KZQ_Inf* pkzq = &kzq_inf;
 	Level_Inf* plevel = level_inf;
 	HDF_Inf* phdf = hdf_inf;
@@ -2878,10 +2897,10 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 /*********************液位传感器数据**********************************/		
 	if(plevel[Cang_Num-1].Error)
 	{
-		pTx[95+9] = 0;
-		pTx[96+9] = 0;
-		pTx[97+9] = 0;
-		pTx[98+9] = 0;
+		pTx[95+9] = 0xAA;
+		pTx[96+9] = 0xAA;
+		pTx[97+9] = 0xAA;
+		pTx[98+9] = 0xAA;
 		
 	}
 	else
@@ -2895,17 +2914,17 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}		
 	
 /**********************平均温度传感器数据**********************************/
-	if(ptem[Cang_Num].TEM_Error)
+	if(ptem[Cang_Num-1].Error)
 	{
-		pTx[99+9] = 0;
-		pTx[100+9] = 0;
-		pTx[101+9] = 0;
-		pTx[102+9] = 0;
+		pTx[99+9] = 0xAB;
+		pTx[100+9] = 0xAB;
+		pTx[101+9] = 0xAB;
+		pTx[102+9] = 0xAB;
 		
 	}
 	else
 	{
-    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f));	
+    hex_to_float.float_temp = ptem[Cang_Num-1].temperature1;	
 		pTx[99+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
 		pTx[100+9] = hex_to_float.arr[1];
 		pTx[101+9] = hex_to_float.arr[2];
@@ -2913,7 +2932,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 		
 	}
 /**********************高温度传感器数据**********************************/
-	if(ptem[Cang_Num].TEM_Error)
+	if(ptem[Cang_Num].Error)
 	{
 		pTx[103+9] = 0;
 		pTx[104+9] = 0;
@@ -2923,7 +2942,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_HData[1]*(0.1f));	
+    hex_to_float.float_temp = ptem[Cang_Num-1].temperature1;	
 		pTx[103+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
 		pTx[104+9] = hex_to_float.arr[1];
 		pTx[105+9] = hex_to_float.arr[2];
@@ -2931,7 +2950,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 		
 	}	
 /*********************中温度传感器数据**********************************/
-	if(ptem[Cang_Num].TEM_Error)
+	if(ptem[Cang_Num].Error)
 	{
 		pTx[107+9] = 0;
 		pTx[108+9] = 0;
@@ -2941,7 +2960,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_MData[1]*(0.1f));	
+    hex_to_float.float_temp = ptem[Cang_Num-1].temperature2;	
 		pTx[107+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
 		pTx[108+9] = hex_to_float.arr[1];
 		pTx[109+9] = hex_to_float.arr[2];
@@ -2949,7 +2968,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 		
 	}		
 /**********************低温度传感器数据**********************************/
-	if(ptem[Cang_Num].TEM_Error)
+	if(ptem[Cang_Num].Error)
 	{
 		pTx[111+9] = 0;
 		pTx[112+9] = 0;
@@ -2959,7 +2978,7 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}
 	else
 	{
-    hex_to_float.float_temp = ((float)ptem[Cang_Num].TEM_LData[1]*(0.1f));		
+    hex_to_float.float_temp = ptem[Cang_Num-1].temperature3;	
 		pTx[111+9] = hex_to_float.arr[0];               //读取高位温度传感器数据
 		pTx[112+9] = hex_to_float.arr[1];
 		pTx[113+9] = hex_to_float.arr[2];
@@ -2994,10 +3013,10 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 /**************************压力*********************************/
 	if(ppressure[Cang_Num-1].Error)
 	{
-		pTx[119+9] = 0;
-		pTx[120+9] = 0;
-		pTx[121+9] = 0;
-		pTx[122+9] = 0;
+		pTx[119+9] = 0xAC;
+		pTx[120+9] = 0xAC;
+		pTx[121+9] = 0xAC;
+		pTx[122+9] = 0xAC;
 	}
 	else
 	{
@@ -3041,9 +3060,6 @@ uint16_t Read_CangSensorData_V2(uint8_t* pTx, uint8_t Cang_Num) // add by guoqia
 	}	
 
 
-//	memcpy(ptxCang01Temp,&pTx[0],150);
-	
-
 	return 1;
 }
 
@@ -3283,11 +3299,11 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 	XYF_Inf*  pxyf  = xyf_inf;
 	Level_Inf* plevel = level_inf;
 	Pressure_Inf* ppressure = pressure_inf;
-	TEM_Inf* ptem = tem_inf;
+	Tem_Inf* ptem = tem_inf;
 	RKG_Inf*  prkg  = rkg_inf;
 
 	typedef union{
-   		float float_temp;   //青鸟贵和磁致伸缩液位温度一体传感器
+   		float float_temp;   
    		uint8_t arr[4];
   	}Hex_to_float;
 	Hex_to_float hex_to_float;
@@ -3401,7 +3417,7 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 
 	//level
 	if(0 != pcang->Level){
-		if((1 == pcang->Level) || (2 == pcang->Level)){
+		if((LEVEL_CZSS == pcang->Level) || (LEVEL_LDYW == pcang->Level)){
 
 			if((offset + ANALOG_VALUE_SIZE) <= buffer_size){
 
@@ -3451,15 +3467,15 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 
 	//temperture
 	if(0 != pcang->Temperture){
-		if(1 == pcang->Temperture || 3 == pcang->Temperture){
+		if(Tem_FST100_611 == pcang->Temperture ){
 
 			if((offset + ANALOG_VALUE_SIZE) <= buffer_size){
 				buffer[offset] = SENSOR_TYPE_TEMPERATURE1;
 				buffer[offset+1] = 0;
 				buffer[offset+2] = 0x01;  //analog type
-				buffer[offset+3] = ptem[CangNo].TEM_Error? State_Error:0x00;
+				buffer[offset+3] = ptem[CangNo-1].Error? State_Error:0x00;
 
-				hex_to_float.float_temp = ((float)ptem[CangNo].TEM_HData[1]*(0.1f));	
+				hex_to_float.float_temp = ptem[CangNo-1].temperature1;	
 				buffer[offset+4] = hex_to_float.arr[0];              
 				buffer[offset+5] = hex_to_float.arr[1];
 				buffer[offset+6] = hex_to_float.arr[2];
@@ -3470,7 +3486,7 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 				return offset;
 			}
 		}
-
+#if 0
 		if(3 == pcang->Temperture){
 
 			if((offset + ANALOG_VALUE_SIZE) <= buffer_size){
@@ -3507,7 +3523,7 @@ uint16_t Get_CangData(uint8_t* buffer, uint16_t buffer_size, uint8_t CangNo) //
 				return offset;
 			}
 		}
-
+#endif 
 	}
 
 	
@@ -3598,11 +3614,18 @@ uint16_t Read_CangSensorData(uint8_t* pTx)
 {
 //传感器数据顺序为温度4字节*3,角度4字节*3,液位4字节*1,容积四字节*1
 	Angle_Inf* pangle = &angle_inf;											
-	TEM_Inf* ptem = tem_inf;
+	Tem_Inf* ptem = tem_inf;
 	KZQ_Inf* pkzq = &kzq_inf;
 	Level_Inf* plevel = level_inf;
 
 	uint8_t Cang_Num = 0;
+
+	typedef union{
+   		float float_temp;   
+   		uint8_t arr[4];
+  	}Hex_to_float;
+	Hex_to_float hex_to_float;
+
 	
 	Cang_Num = pkzq->data_buf[17];        //读取第几仓传感器数据
 	if(Cang_Num < 1 ||Cang_Num > 8)
@@ -3610,7 +3633,7 @@ uint16_t Read_CangSensorData(uint8_t* pTx)
 	pTx[11] = 32;                         //数据长度
 	pTx[17] = pkzq->data_buf[17];
 /**********************温度传感器数据**********************************/
-	if(ptem[Cang_Num].TEM_Error)
+	if(ptem[Cang_Num-1].Error)
 	{
 		pTx[18] = 0x47;
 		pTx[19] = 0x7F;
@@ -3629,20 +3652,23 @@ uint16_t Read_CangSensorData(uint8_t* pTx)
 	}
 	else
 	{
-		pTx[18] = ptem[Cang_Num].TEM_HData[0]>>24&0xFF;               //读取高位温度传感器数据
-		pTx[19] = ptem[Cang_Num].TEM_HData[0]>>16&0xFF;
-		pTx[20] = ptem[Cang_Num].TEM_HData[0]>>8&0xFF;
-		pTx[21] = ptem[Cang_Num].TEM_HData[0]&0xFF;
+		hex_to_float.float_temp = ptem[Cang_Num-1].temperature1;	//读取高位温度传感器数据
+		pTx[18] = hex_to_float.arr[0];               
+		pTx[19] = hex_to_float.arr[1];  
+		pTx[20] = hex_to_float.arr[2];  
+		pTx[21] = hex_to_float.arr[3];  
 		
-		pTx[22] = ptem[Cang_Num].TEM_MData[0]>>24&0xFF;               //读取中位温度传感器数据
-		pTx[23] = ptem[Cang_Num].TEM_MData[0]>>16&0xFF;
-		pTx[24] = ptem[Cang_Num].TEM_MData[0]>>8&0xFF;
-		pTx[25] = ptem[Cang_Num].TEM_MData[0]&0xFF;
+		hex_to_float.float_temp = ptem[Cang_Num-1].temperature2;	//读取中位温度传感器数据
+		pTx[22] = hex_to_float.arr[0]; 
+		pTx[23] = hex_to_float.arr[1]; 
+		pTx[24] = hex_to_float.arr[2]; 
+		pTx[25] = hex_to_float.arr[3]; 
 		
-		pTx[26] = ptem[Cang_Num].TEM_LData[0]>>24&0xFF;               //读取低位温度传感器数据
-		pTx[27] = ptem[Cang_Num].TEM_LData[0]>>16&0xFF;
-		pTx[28] = ptem[Cang_Num].TEM_LData[0]>>8&0xFF;
-		pTx[29] = ptem[Cang_Num].TEM_LData[0]&0xFF;
+		hex_to_float.float_temp = ptem[Cang_Num-1].temperature3;	//读取低位温度传感器数据
+		pTx[26] = hex_to_float.arr[0]; 
+		pTx[27] = hex_to_float.arr[1]; 
+		pTx[28] = hex_to_float.arr[2]; 
+		pTx[29] = hex_to_float.arr[3]; 
 	}
 
 /**********************读取角度传感器数据**********************************/
@@ -4158,7 +4184,7 @@ uint16_t Sensor_SetJudgefNum(uint8_t* pTx)
 uint16_t Read_Sensor(uint8_t* pTx)
 {
 	Angle_Inf* pangle = &angle_inf;											
-	TEM_Inf* ptem = tem_inf;
+	Tem_Inf* ptem = tem_inf;
 	Level_Inf* plevel = level_inf;
 	KZQ_Inf* pkzq = &kzq_inf;
 	
@@ -4181,7 +4207,7 @@ uint16_t Read_Sensor(uint8_t* pTx)
 	}
 	else if(pkzq->data_buf[17] > 0x60 && pkzq->data_buf[17] < 0x6F)				//温度传感器
 	{
-		if(ptem[pTx[17] - 0x60].TEM_Error)
+		//if(ptem[pTx[17] - 0x61].Error)
 		{
 			pTx[18] = 0x47;
 			pTx[19] = 0x7F;
@@ -4199,20 +4225,7 @@ uint16_t Read_Sensor(uint8_t* pTx)
 			pTx[29] = 0x00;	
 		
 		}
-		pTx[18] = ptem[pTx[17] - 0x60].TEM_HData[0]>>24&0xff;
-		pTx[19] = ptem[pTx[17] - 0x60].TEM_HData[0]>>16&0xff;
-		pTx[20] = ptem[pTx[17] - 0x60].TEM_HData[0]>>8&0xff;
-		pTx[21] = ptem[pTx[17] - 0x60].TEM_HData[0]&0xff;
-		
-		pTx[22] = ptem[pTx[17] - 0x60].TEM_MData[0]>>24&0xff;
-		pTx[23] = ptem[pTx[17] - 0x60].TEM_MData[0]>>16&0xff;
-		pTx[24] = ptem[pTx[17] - 0x60].TEM_MData[0]>>8&0xff;
-		pTx[25] = ptem[pTx[17] - 0x60].TEM_MData[0]&0xff;
-		
-		pTx[26] = ptem[pTx[17] - 0x60].TEM_LData[0]>>24&0xff;
-		pTx[27] = ptem[pTx[17] - 0x60].TEM_LData[0]>>16&0xff;
-		pTx[28] = ptem[pTx[17] - 0x60].TEM_LData[0]>>8&0xff;
-		pTx[29] = ptem[pTx[17] - 0x60].TEM_LData[0]&0xff;
+
 	}
 	else if(pkzq->data_buf[17] > 0x70 && pkzq->data_buf[17] < 0x7F)				//压力传感器
 	{
@@ -4576,7 +4589,7 @@ uint16_t Tem_SetType(uint8_t* pTx)
 		return 0;
 }
 
-uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 0, 20221125};
+uint32_t Version_Soft[8] = {2, 2, 3, 13, 1, 1, 0, 20230526};
 uint16_t Read_SoftVersion(uint8_t *pTx)
 {
 	int i;

+ 4 - 2
Core/Src/level.c

@@ -3020,7 +3020,8 @@ uint8_t Prase_Level(uint8_t* data, Level_Type type)
 	{
 		level_inf[cang_id].RTData_Num = 1;//液位计信息数量  
 		level_inf[cang_id].ErrorCnt = 0;
-
+		level_inf[cang_id].Error = 0;
+	
 		if(data[1]!=0x04)              //校验功能码USART1_RX_BUF002[1]!=0x04&&..
 		{
 			error = 1;	
@@ -3072,6 +3073,7 @@ uint8_t Prase_Level(uint8_t* data, Level_Type type)
 	{
 		level_inf[cang_id].RTData_Num = 1;//液位计信息数量  
 		level_inf[cang_id].ErrorCnt = 0;
+		level_inf[cang_id].Error = 0;
 
 		if(data[1]!=0x04)              //校验功能码USART1_RX_BUF002[1]!=0x04&&..
 		{
@@ -3093,7 +3095,7 @@ uint8_t Prase_Level(uint8_t* data, Level_Type type)
 			hex_to_float.arr[1] = data[3];
 			hex_to_float.arr[2] = data[6];
 			hex_to_float.arr[3] = data[5];					
-			level_inf[cang_id].Data = hex_to_float.value;
+			level_inf[cang_id].Data = 900.0 - hex_to_float.value*1000;
 		}
 		
 	}

+ 50 - 137
Core/Src/main.c

@@ -43,7 +43,7 @@
 #include "pressure.h"
 #include "iap.h"
 /* USER CODE END Includes */
-#if 0
+#if 1
 #define IR_ROM1   0x08000000
 #else
 #define IR_ROM1   0x08020000
@@ -129,8 +129,7 @@ uint8_t CMD_GetTempAndYewei[8]={0x51, 0x04, 00, 00, 00, 0x10, 0x03 ,0xae};//
 //61-6f 03 00 04 00 01 C6 8A----读取华天传感器的第1个温度点,地址为x10;最接近电子仓的温度点
 uint8_t CMD_GetTempHuaTian[8]={0x61, 0x03, 00, 04, 00, 01,0,0};//读取华天传感器的第一个温度点
 
-
-
+uint8_t CMD_TemAng[8]={TEM_STARTADDR, 0x03, 00, 00, 00, 02,0,0};//FST100-611  通过模拟量模块,读取温度
 uint8_t CMD_Pressure[8]={PRESSURE_STARTADDR, 0x03, 0x00, 0x00, 0x00, 0x02,0,0}; //FST800-801 读取压力数据, 没有标零指令
 
 
@@ -629,7 +628,7 @@ void Cang_Init(void)
 	HDF_Inf*  phdf  = hdf_inf;
 	Angle_Inf* pangle = &angle_inf;
 	Level_Inf* plevel = level_inf;
-	TEM_Inf* ptem = tem_inf;
+	Tem_Inf* ptem = tem_inf;
 
   
 	uint16_t Flash_buff[64] = {0};
@@ -795,7 +794,7 @@ void Cang_Init(void)
 	
 	Flash_ReadBytes(Flash_buff,ADDR_SENSOR_BUS_MAX_RETRY,1);
 	if(Flash_buff[0] == 0xffff)
-		pcang->sensorBusMaxReTry = 3;
+		pcang->sensorBusMaxReTry = 10;
 	else
 		pcang->sensorBusMaxReTry = Flash_buff[0];
 
@@ -826,13 +825,16 @@ void Cang_Init(void)
 		{
 			prkg[i].RKG_StateKeepNum = 5;           //默认人孔盖角度传感器
 			pxyf[i].XYF_StateKeepNum = 5;
+
+			plevel[i].StateKeepNum = 5;
+			ptem[i].StateKeepNum = 5;
 		}
 		
 		
 		phdf->HDF_StateKeepNum = 5;
 		pangle->Angle_StateKeepNum = 5;
-		plevel->StateKeepNum = 5;
-		ptem->TEM_StateKeepNum = 5;
+		//plevel->StateKeepNum = 5;
+		//ptem->TEM_StateKeepNum = 5;
 	}
 	else
 	{
@@ -840,14 +842,18 @@ void Cang_Init(void)
 		{
 			prkg[i].RKG_StateKeepNum = Flash_buff[0];         
 			pxyf[i].XYF_StateKeepNum = Flash_buff[0]; 
+
+			plevel[i].StateKeepNum = Flash_buff[0];
+			ptem[i].StateKeepNum = Flash_buff[0];
+
 		}
 		pxyf->XYF_StateKeepNum = Flash_buff[0];
 		phdf->HDF_StateKeepNum = Flash_buff[0];
 		
 		__NOP();
 		pangle->Angle_StateKeepNum = Flash_buff[0];
-		plevel->StateKeepNum = Flash_buff[0];
-		ptem->TEM_StateKeepNum = Flash_buff[0];
+		//plevel->StateKeepNum = Flash_buff[0];
+		//ptem->TEM_StateKeepNum = Flash_buff[0];
 	}	
 }
 
@@ -1776,6 +1782,7 @@ void StartTask02(void *argument)				 															//卸
 
 			if(i001==0)  	//发送卸油阀传感器命令轮询
 			{
+				//pcang->XYF_Type=2;
 				if ((pcang->XYF_INSTALL != 0) && (pcang->XYF_Type != 2))
 				{
 
@@ -1908,7 +1915,7 @@ void StartTask02(void *argument)				 															//卸
 					CMD_Pressure[7] = ModbusCRC & 0xff;
 					HAL_GPIO_WritePin(GPIOB, con02_uart3_xieyoufa_Pin, GPIO_PIN_RESET);
 					delay_sys_us(80);
-					HAL_UART_Transmit(&huart3, CMD_Pressure, 8, 100); //只支持单指令读角度取传感器数据
+					HAL_UART_Transmit(&huart3, CMD_Pressure, 8, 200); //只支持单指令读角度取传感器数据
 					delay_sys_us(80);
 					HAL_GPIO_WritePin(GPIOB, con02_uart3_xieyoufa_Pin, GPIO_PIN_SET);
 
@@ -1919,6 +1926,7 @@ void StartTask02(void *argument)				 															//卸
 					else
 						CMD_Pressure[0] = PRESSURE_STARTADDR;
 					
+					
 				}else{
 					i001=0;
 					continue;
@@ -2053,8 +2061,8 @@ void StartTask02(void *argument)				 															//卸
 																																											//清除控制器占用标志																																								
 						//整理卸油阀协议后添加
 					}
-					i001=3;
-					continue;
+					i001=12;
+					//continue;
 				}
 			}
 			else if(USART3_RX_BUF002[0] >=0x70 && USART3_RX_BUF002[0] <= 0x7f)	                        //姿态数据,目前最多支持3轴
@@ -2128,8 +2136,8 @@ void StartTask02(void *argument)				 															//卸
 			}else if(USART3_RX_BUF002[0] >= 0x91 && USART3_RX_BUF002[0] <= 0x9F)
 			{
 				if(0 == Prase_Pressure(USART3_RX_BUF002, 9)){
-					i001 = 0;
-					continue;
+					//i001 = 0;
+					//continue;
 				}
 			}
 
@@ -2159,7 +2167,7 @@ void StartTask02(void *argument)				 															//卸
 		}
 		
 		
-		if(i001<18)
+		if(i001< 18)
 			i001++;
 		else
 			i001 = 0;
@@ -2200,11 +2208,11 @@ void StartTask03(void *argument)															//
 	RKG_Inf* prkg = rkg_inf;
 	Cang_Inf* pcang = &cang_inf;
 	Level_Inf* plevel = level_inf;
-	TEM_Inf* ptem = tem_inf;
-		typedef union{
-   float QDGH_data_temp;   //青鸟贵和磁致伸缩液位温度一体传感器
-   uint8_t arr[4];
-  }Hex_to_float;
+	Tem_Inf* ptem = tem_inf;
+	typedef union{
+		float QDGH_data_temp;   //青鸟贵和磁致伸缩液位温度一体传感器
+		uint8_t arr[4];
+	}Hex_to_float;
 	static Hex_to_float hex_to_float;
 	leveladdr_max=0;
 	if(pcang->Temperture==2)
@@ -2213,23 +2221,13 @@ void StartTask03(void *argument)															//
 	{
 		rkgaddr_max += pcang->RKG_Num[i];										//人孔盖最大地址							
 		leveladdr_max++;
+		temaddr_max++;
 	}
 	/*if(pcang->RKG_Type==0)
 	{
 		rkgaddr_max += 1;
 	}*/
-	//if(((pcang->Level)|0xff) == 0)
-	{
-			if(((pcang->Temperture)&0xff) == 0)
-			{
-				temaddr_max = leveladdr_max;										//温度最大集成地址	
-			}
-			else
-			{
-				temaddr_max = leveladdr_max*(pcang->Temperture&0xff);      //温度最大离散地址	
-			}
-	}
-	
+
 	i = 0;
 	
 	
@@ -2247,28 +2245,19 @@ void StartTask03(void *argument)															//
 		{
 			rkgaddr_max = 0;
 			leveladdr_max=0;
+			temaddr_max = 0;
 			if(pcang->Temperture==2)
 				pcang->Temperture=3;
 			for(i = 0;i < pcang->Cang_Num;i++)
 			{
 				rkgaddr_max += pcang->RKG_Num[i];										//人孔盖最大地址							
 				leveladdr_max++;
+				temaddr_max++;
 			}
 			/*if(pcang->RKG_Type==0)
 			{
 				rkgaddr_max += 1;
 			}*/
-			//if(((pcang->Level>)|0xff) == 0)
-			{
-					if(((pcang->Temperture)&0xff) == 0)
-					{
-						temaddr_max = leveladdr_max;										//温度最大集成地址	
-					}
-					else
-					{
-						temaddr_max = leveladdr_max*(pcang->Temperture&0xff);      //温度最大离散地址	
-					}
-			}
 			Flash_Change = 0;
 		}
 		
@@ -2379,11 +2368,7 @@ void StartTask03(void *argument)															//
 			
 			if(i001==6)  					  //发送磁致伸缩液位计命令轮询  邵磊明增加
 			{
-				if(pcang->Level == LEVEL_NONE)					       //没有液位传感器
-				{
-					i001=9;
-				}
-				else if(pcang->Level == LEVEL_CZSS)					//磁致伸缩传感器轮询 邵磊明增加
+				if(pcang->Level == LEVEL_CZSS)					//磁致伸缩传感器轮询 邵磊明增加
 				{
 					ModbusCRC = LIB_CRC_MODBUS(CMD_GetTempAndYewei,6);
 					CMD_GetTempAndYewei[6] = ModbusCRC>>8;
@@ -2436,7 +2421,7 @@ void StartTask03(void *argument)															//
 				else*/
 					plevel[CMD_LDYW[0] - LEVEL_STARTADDR].RTData_Num++;
 
-				if (CMD_LDYW[0] < (LEVEL_STARTADDR + leveladdr_max))
+				if ((CMD_LDYW[0] - LEVEL_STARTADDR+1) < leveladdr_max)
 					CMD_LDYW[0]++;
 				else
 					CMD_LDYW[0] = LEVEL_STARTADDR;
@@ -2447,17 +2432,16 @@ void StartTask03(void *argument)															//
 			
 			if(i001==9)  					  //发送华天三点式温度传感器命令轮询  邵磊明增加
 			{
-				if(pcang->Temperture != 0)					
+				if(Tem_FST100_611 == pcang->Temperture )					
 				{
 				     	//	taskENTER_CRITICAL();		
-					ModbusCRC = LIB_CRC_MODBUS(CMD_GetTempHuaTian,6);
-					CMD_GetTempHuaTian[6] = ModbusCRC>>8;
-					CMD_GetTempHuaTian[7] = ModbusCRC&0xff;
+					ModbusCRC = LIB_CRC_MODBUS(CMD_TemAng,6);
+					CMD_TemAng[6] = ModbusCRC>>8;
+					CMD_TemAng[7] = ModbusCRC&0xff;
 	
-				
 					HAL_GPIO_WritePin(GPIOB,Con01_uart1_rankonggai_Pin,GPIO_PIN_RESET);//
 					delay_sys_us(80);
-					HAL_UART_Transmit_IT(&huart1,CMD_GetTempHuaTian,8);		
+					HAL_UART_Transmit_IT(&huart1,CMD_TemAng,8);		
 					while (huart1.gState == HAL_UART_STATE_BUSY_TX)
 					{
 						osDelay(1);
@@ -2466,21 +2450,14 @@ void StartTask03(void *argument)															//
 					//delay_sys_us(80);
 					HAL_GPIO_WritePin(GPIOB,Con01_uart1_rankonggai_Pin,GPIO_PIN_SET);//
 				    // taskEXIT_CRITICAL();	
-#if 0									
-					if(ptem[CMD_GetTempHuaTian[0] - 0x60].RTData_Num > RT_ERRORCNT)				//每个传感器每发送一帧  基准角度为0x30
-					{
-						ptem[CMD_GetTempHuaTian[0] - 0x60].RTData_Num = RT_ERRORCNT;
-						ptem[CMD_GetTempHuaTian[0] - 0x60].TEM_ErrorCnt = RT_ERRORCNT;
-					}
+
+					ptem[CMD_TemAng[0] - TEM_STARTADDR].RTData_Num++; 	
+					ptem[CMD_TemAng[0] - TEM_STARTADDR+1].RTData_Num++; 	
+
+					if((CMD_TemAng[0] - TEM_STARTADDR+1)*2 < temaddr_max)
+						CMD_TemAng[0] = CMD_TemAng[0]+1;
 					else
-#endif					
-					{
-						ptem[CMD_GetTempHuaTian[0] - 0x60].RTData_Num++; 		
-					}						
-						if(CMD_GetTempHuaTian[0] - 0x60 < temaddr_max)
-							CMD_GetTempHuaTian[0] = CMD_GetTempHuaTian[0]+1;
-						else
-							CMD_GetTempHuaTian[0] = 0x61;
+						CMD_TemAng[0] = TEM_STARTADDR;
 
 				}
 				else
@@ -2685,74 +2662,8 @@ void StartTask03(void *argument)															//
 			}
 			else if(USART1_RX_BUF002[0] >=0x60 && USART1_RX_BUF002[0] <= 0x6f)	            //华天三点式温度传感器接收数据 邵磊明增加
 			{
-				ptem[CMD_GetTempHuaTian[0] - 0x60].RTData_Num = 1;//三点测温
-				ptem[CMD_GetTempHuaTian[0] - 0x60].TEM_ErrorCnt = 0;
-				if(USART1_RX_BUF002[1]!=0x03&&USART1_RX_BUF002[1]!=0x06)              //校验读写属性
-				{
-					receive_error = 1;
-				}
-				else if(USART1_RX_BUF002[2] != 0x02)			//校验数据长度
-				{
-					receive_error = 1;
-				}
-				else if(ModbusCRC != LIB_CRC_MODBUS(USART1_RX_BUF002,5))		//校验CRC
-				{
-					receive_error = 1;
-				}
-				else if((USART1_RX_BUF002[head+1] == 0x03)&&(receive_error == 0))
-				{
-					if(pcang->Temperture==1) //1点
-					{
-						ptem[USART1_RX_BUF002[head]-0x60].TEM_HData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-						ptem[USART1_RX_BUF002[head]-0x60].TEM_MData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-						ptem[USART1_RX_BUF002[head]-0x60].TEM_LData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-					}
-					else if(pcang->Temperture==3) //1点
-					{
-						i = USART1_RX_BUF002[head]-0x61;
-						switch (i%3)
-						{
-						case 0:
-							ptem[(i/3)+1].TEM_HData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-							break;
-						case 1:
-							ptem[(i/3)+1].TEM_MData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-							break;
-						case 2:
-							ptem[(i/3)+1].TEM_LData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-							break;
-						default:
-							break;
-						}
-					}
-#if 0
-						switch(USART1_RX_BUF002[head])//pcang->Temperture&0xFF
-						{
-							case 0x61:
-								ptem[USART1_RX_BUF002[head]-0x60].TEM_HData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];								
-								break;
-							case 0x62:
-								ptem[USART1_RX_BUF002[head]-0x61].TEM_MData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-							  break;
-							case 0x63:
-								ptem[USART1_RX_BUF002[head]-0x62].TEM_LData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-								break;
-							case 0x64:
-								ptem[USART1_RX_BUF002[head]-0x62].TEM_HData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];								
-								break;
-							case 0x65:
-								ptem[USART1_RX_BUF002[head]-0x63].TEM_MData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];
-							  break;
-							case 0x66:
-								ptem[USART1_RX_BUF002[head]-0x64].TEM_LData[1] =  USART1_RX_BUF002[3]<<8|USART1_RX_BUF002[4];							
-							  break;
-							default:
-								
-								break;
-					}
-#endif					
+				Parse_Tem(USART1_RX_BUF002, pcang->Temperture);
 
-				}
 				i001 = 0;
 			 	continue;
 			}
@@ -2796,6 +2707,8 @@ void StartTask03(void *argument)															//
 			if (i001 == 8) //液位错误
 			{
 				Level_Error(CMD_LDYW[0]);
+			}else if(i001 == 11){
+				Tem_Error(CMD_TemAng[0]);
 			}
 
 		}	
@@ -3164,7 +3077,7 @@ void StartTask05(void *argument)
 	{
 		HAL_GPIO_TogglePin(WDI_sp706_kanmemgou_GPIO_Port, WDI_sp706_kanmemgou_Pin);
 		AGL_JudgeState();
-		for (i = 0; i < pcang->Cang_Num+1; i++)
+		for (i = 0; i < pcang->Cang_Num; i++)
 		{
 			// Value_Manage(i);
 			// for(uint8_t i = 0;i < 5;i++)

+ 5 - 5
Core/Src/pressure.c

@@ -20,7 +20,7 @@ void Pressure_Init(void)
 
 	for(i = 0;i < pcang->Cang_Num;i++)
 	{
-			pcang->Pressure_Num[i] = 1;
+		pcang->Pressure_Num[i] = 1;
 	}
 	
 	Pressure_Max = 0;
@@ -77,10 +77,10 @@ uint8_t Prase_Pressure(uint8_t* data, Pressure_Tpye type)
 		
 		if(data[1] == 0x03){
 			
-						hex_to_float.arr[0] = data[4];
-					  hex_to_float.arr[1] = data[3];
-					  hex_to_float.arr[2] = data[6];
-					  hex_to_float.arr[3] = data[5];					
+						hex_to_float.arr[0] = data[6];
+					  hex_to_float.arr[1] = data[5];
+					  hex_to_float.arr[2] = data[4];
+					  hex_to_float.arr[3] = data[3];					
 						pressure_inf[id].pressure = hex_to_float.value;
 		}
 		

+ 105 - 1
Core/Src/tem.c

@@ -1,4 +1,108 @@
 #include "tem.h"
+#include "usart.h"
 
-TEM_Inf tem_inf[SENSOR_DEEP];
+Tem_Inf tem_inf[SENSOR_DEEP];
+//extern void Pressure_state(uint16_t CangNum);
+void Tem_Init(void)
+{
+
+}
+
+uint8_t Parse_Tem(uint8_t* data, Tem_Tpye type)
+{
+    uint8_t cang_id = data[0] - TEM_STARTADDR;
+    uint8_t error = 0;
+    uint16_t ModbusCRC;
+    uint16_t ADC_Value1, ADC_Value2;
+    float voltage1, voltage2;
+    uint8_t i=0;
+
+    //tem_inf[cang_id].RTData_Num = 1;//三点测温
+    //tem_inf[cang_id].ErrorCnt = 0;
+
+    if(Tem_FST100_611 == type){ //一次获取两个仓的温度数据
+			
+			ModbusCRC = data[7]<<8;
+			ModbusCRC |= data[8];
+			
+        if(data[1]!=0x03)              //校验读写属性
+        {
+            error = 1;
+        }
+        else if(data[2] != 0x04)			//校验数据长度
+        {
+            error = 1;
+        }
+        else if(ModbusCRC != LIB_CRC_MODBUS(data,7))		//校验CRC
+        {
+            error = 1;
+        }
+
+        if(0 == error){
+
+            tem_inf[cang_id].RTData_Num = 1;
+            tem_inf[cang_id].ErrorCnt = 0;
+            tem_inf[cang_id].Error = 0;
+
+            tem_inf[cang_id+1].RTData_Num = 1;
+            tem_inf[cang_id+1].ErrorCnt = 0;
+            tem_inf[cang_id+1].Error = 0;
+
+            ADC_Value1 = data[3]<<8|data[4];
+            ADC_Value2 = data[5]<<8|data[6];
+
+            voltage1 = ADC_Value1*(1.0)*5/4096;  // 0-5V  12bit
+            voltage2 = ADC_Value2*(1.0)*5/4096;
+
+            tem_inf[cang_id].temperature1 = (voltage1-1.5)*(120+40)/(4.5-0.5);
+            tem_inf[cang_id+1].temperature1 = (voltage2-1.5)*(120+40)/(4.5-0.5);
+
+        }
+
+    }else if(Tem_HUATIAN_THREE == type){
+
+        if(data[1]!=0x03)              //校验读写属性
+        {
+            error = 1;
+        }
+        else if(data[2] != 0x02)			//校验数据长度
+        {
+            error = 1;
+        }
+        else if(ModbusCRC != LIB_CRC_MODBUS(data,5))		//校验CRC
+        {
+            error = 1;
+        }
+
+        if(0 == error){
+            //do nothing 
+        }
+
+    }
+
+    return error;
+			
+}
+
+
+void Tem_Error(uint8_t addr)
+{
+	uint8_t id = addr - TEM_STARTADDR;
+	Cang_Inf* pcang = &cang_inf;
+	
+	if(Tem_FST100_611 == pcang->Temperture){
+
+        tem_inf[id].ErrorCnt++;
+        tem_inf[id+1].ErrorCnt++;
+	
+        if (tem_inf[id].ErrorCnt > pcang->sensorBusMaxReTry)
+        {
+            tem_inf[id].ErrorCnt = pcang->sensorBusMaxReTry + 1;
+            tem_inf[id].Error = 1;
+            tem_inf[id+1].ErrorCnt = pcang->sensorBusMaxReTry + 1;
+            tem_inf[id+1].Error = 1;
+        }
+    }
+	
+}
 

+ 5 - 10
MDK-ARM/caijiqiV001.uvoptx

@@ -103,7 +103,7 @@
         <bEvRecOn>1</bEvRecOn>
         <bSchkAxf>0</bSchkAxf>
         <bTchkAxf>0</bTchkAxf>
-        <nTsel>6</nTsel>
+        <nTsel>4</nTsel>
         <sDll></sDll>
         <sDllPa></sDllPa>
         <sDlgDll></sDlgDll>
@@ -114,18 +114,13 @@
         <tDlgDll></tDlgDll>
         <tDlgPa></tDlgPa>
         <tIfile></tIfile>
-        <pMon>STLink\ST-LINKIII-KEIL_SWO.dll</pMon>
+        <pMon>Segger\JL2CM3.dll</pMon>
       </DebugOpt>
       <TargetDriverDllRegistry>
-        <SetRegEntry>
-          <Number>0</Number>
-          <Key>DLGUARM</Key>
-          <Name>(105=-1,-1,-1,-1,0)</Name>
-        </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U69618568 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RE$Flash\STM32F10x_512.FLM)</Name>
+          <Name>-U59518874 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(1BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8001 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F10x_512.FLM -FS08000000 -FL080000 -FP0($$Device:STM32F103RE$Flash\STM32F10x_512.FLM)</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -293,7 +288,7 @@
 
   <Group>
     <GroupName>Application/MDK-ARM</GroupName>
-    <tvExp>1</tvExp>
+    <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <RteFlg>0</RteFlg>
@@ -333,7 +328,7 @@
       <GroupNumber>2</GroupNumber>
       <FileNumber>3</FileNumber>
       <FileType>1</FileType>
-      <tvExp>0</tvExp>
+      <tvExp>1</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>../Core/Src/main.c</PathWithFileName>

+ 1 - 1
MDK-ARM/caijiqiV001.uvprojx

@@ -49,7 +49,7 @@
             <InvalidFlash>1</InvalidFlash>
           </TargetStatus>
           <OutputDirectory>caijiqiV001\</OutputDirectory>
-          <OutputName>CJB_version220531_002_220711</OutputName>
+          <OutputName>CJB_version220531_002_230526</OutputName>
           <CreateExecutable>1</CreateExecutable>
           <CreateLib>0</CreateLib>
           <CreateHexFile>1</CreateHexFile>