Browse Source

金茂卡车测试,已成功上传至调试信息

CHENJIE-PC\QiXiang_CHENJIE 3 years ago
parent
commit
ed2042ed3c
10 changed files with 465 additions and 178 deletions
  1. 0 1
      ARMCC/Makefile
  2. 3 3
      inc/AppConfig.h
  3. 2 1
      inc/AppFunc.h
  4. 5 7
      inc/AppSignal.h
  5. 220 6
      src/AppFunc.c
  6. 3 5
      src/AppSignal.c
  7. 48 48
      src/AppTaskControl.c
  8. 19 3
      src/AppTaskMain.c
  9. 162 101
      src/AppTaskTcp.c
  10. 3 3
      src/app.c

+ 0 - 1
ARMCC/Makefile

@@ -23,7 +23,6 @@ PLAT/project/$(TARGET)/apps/qx_app/src/AppFunc.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskMain.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskMain.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskTcp.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskTcp.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskControl.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskControl.o \
-PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskUart.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskCan.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskCan.o \
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskGps.o
 PLAT/project/$(TARGET)/apps/qx_app/src/AppTaskGps.o
 
 

+ 3 - 3
inc/AppConfig.h

@@ -27,8 +27,8 @@
 #define APP_DATAINFO_FILE_NAME              "qxappDataInfo3.nvm"
 #define APP_DATAINFO_FILE_NAME              "qxappDataInfo3.nvm"
 #define BATT_SN_LEN                17
 #define BATT_SN_LEN                17
 #define BMS_OTHER_TEMP              2
 #define BMS_OTHER_TEMP              2
-
-
+#define CELL_NUM              384
+#define CELL_TEMP_NUM           64
 #define BATT_IDLE_SYM           0x00    //静置
 #define BATT_IDLE_SYM           0x00    //静置
 #define BATT_CHARGE_SYM 		0x02    //充电
 #define BATT_CHARGE_SYM 		0x02    //充电
 #define BATT_DISCHARGE_SYM      0x01    //放电
 #define BATT_DISCHARGE_SYM      0x01    //放电
@@ -70,7 +70,7 @@ typedef struct _AppConfigDataType
    	BOOL   isBattLocked;		//0:not locked;	1:locked
    	BOOL   isBattLocked;		//0:not locked;	1:locked
     UINT8  chargEndWorkTime;     //
     UINT8  chargEndWorkTime;     //
     UINT8  BattTempCount;       //电池温度个数
     UINT8  BattTempCount;       //电池温度个数
-    UINT8  BattCellCount;       //电池电压串数
+    UINT16  BattCellCount;       //电池电压串数
     UINT8  BmsHwVersion;
     UINT8  BmsHwVersion;
     UINT8  BmsSwVersion;
     UINT8  BmsSwVersion;
     UINT32 BLSwVersion;
     UINT32 BLSwVersion;

+ 2 - 1
inc/AppFunc.h

@@ -35,7 +35,8 @@ void SaveAppConfig(void);
 void LoadAppConfig(void);
 void LoadAppConfig(void);
 static void setDefaultAppConfigData(void);
 static void setDefaultAppConfigData(void);
 static void setDefaultAppDataInfo(void);
 static void setDefaultAppDataInfo(void);
-
+void TcpDataAssemble(UINT8 Tcptype,UINT8 *SendBuffer,UTC8TimeType UTC8TimeTcp);
+void canRxMsgSetInvalidValue(UINT32 ID);
 void Fota_Func(UINT8 *DataPtr,INT32 connectId);
 void Fota_Func(UINT8 *DataPtr,INT32 connectId);
 static UINT8 bcc_chk_fota(UINT8* data, UINT8 length);
 static UINT8 bcc_chk_fota(UINT8* data, UINT8 length);
 static UINT8 Fota_crc_chk(UINT8* data,UINT8 length);
 static UINT8 Fota_crc_chk(UINT8* data,UINT8 length);

+ 5 - 7
inc/AppSignal.h

@@ -50,6 +50,7 @@ extern UINT8 canRxErrorCounter[133];
 extern UINT8 canRxFlag[133];
 extern UINT8 canRxFlag[133];
 
 
 //declear the UINT8 vars
 //declear the UINT8 vars
+extern  UINT8   csq;
 extern	UINT8	bmsStatus;
 extern	UINT8	bmsStatus;
 extern	UINT8	bmsErrClass;
 extern	UINT8	bmsErrClass;
 extern	UINT8	chrgConctStatus;
 extern	UINT8	chrgConctStatus;
@@ -71,9 +72,8 @@ extern	UINT8	numOfChrgableSubsys;
 extern	UINT8	lengthOfChrgableSysCode;
 extern	UINT8	lengthOfChrgableSysCode;
 extern	UINT8	chrgableSysCode;
 extern	UINT8	chrgableSysCode;
 extern	UINT8	chrgableSubsysCode;
 extern	UINT8	chrgableSubsysCode;
-extern	UINT8	numOfCellTemp;
 extern	UINT8	numOfBattErr;
 extern	UINT8	numOfBattErr;
-extern	UINT8	battCellTemp[64];
+extern	UINT8	battCellTemp[CELL_TEMP_NUM];
 extern	UINT8	mainPosRlyStatus;
 extern	UINT8	mainPosRlyStatus;
 extern	UINT8	preRlyStatus;
 extern	UINT8	preRlyStatus;
 extern	UINT8	mainNegRlyStatus;
 extern	UINT8	mainNegRlyStatus;
@@ -143,8 +143,7 @@ extern	UINT8	mainElectricityErrorClass;
 extern	UINT8	pumpWorkStatus;
 extern	UINT8	pumpWorkStatus;
 extern	UINT8	elecAirCompressorErrorStatus;
 extern	UINT8	elecAirCompressorErrorStatus;
 extern	UINT8	elecAirCompressorWrokStatus;
 extern	UINT8	elecAirCompressorWrokStatus;
-
-
+extern  UINT8   numOfCellTemp;
 
 
 //declear the UINT16 vars
 //declear the UINT16 vars
 extern	UINT16	maxChrgCurrAllowed;
 extern	UINT16	maxChrgCurrAllowed;
@@ -156,10 +155,9 @@ extern	UINT16	maxCellVol;
 extern	UINT16	minCellVol;
 extern	UINT16	minCellVol;
 extern	UINT16	maxVolCellCode;
 extern	UINT16	maxVolCellCode;
 extern	UINT16	minVoCelllCode;
 extern	UINT16	minVoCelllCode;
-extern	UINT16	numOfCells;
-extern	UINT16	battCellU[384];
+extern	UINT16	battCellU[CELL_NUM];
 extern	UINT16	vcuDCVol;
 extern	UINT16	vcuDCVol;
-
+extern  UINT16  numOfCells;
 
 
 
 
 //declear the UINT32 vars
 //declear the UINT32 vars

+ 220 - 6
src/AppFunc.c

@@ -11,10 +11,10 @@
 #include "hal_module_adapter.h"
 #include "hal_module_adapter.h"
 
 
 
 
-UINT8 bcc_chk(UINT8* data, UINT8 length)
+UINT8 bcc_chk(UINT8* data, UINT16 length)
 {
 {
     UINT8 bcc_chk_return = 0x00;
     UINT8 bcc_chk_return = 0x00;
-    UINT8 count = 0;
+    UINT16 count = 0;
     while (count<length)
     while (count<length)
     {
     {
         bcc_chk_return^=data[count];
         bcc_chk_return^=data[count];
@@ -992,7 +992,7 @@ void DecodeFunction(UINT32 ID,UINT8* rawData)
 		
 		
 	switch (ID)
 	switch (ID)
 	{
 	{
-	/*
+	
 		case	0x18FF06F3:
 		case	0x18FF06F3:
 			bmsStatus = (UINT8)(((*(UINT8*)(rawData +0)))&0x0F);
 			bmsStatus = (UINT8)(((*(UINT8*)(rawData +0)))&0x0F);
 			bmsErrClass = (UINT8)(((*(UINT8*)(rawData +0))>>4)&0xF);
 			bmsErrClass = (UINT8)(((*(UINT8*)(rawData +0))>>4)&0xF);
@@ -1857,7 +1857,7 @@ void DecodeFunction(UINT32 ID,UINT8* rawData)
 			break;
 			break;
 		default:
 		default:
 			break;
 			break;
-			*/
+		/*
 		case	0x18FF06F3:
 		case	0x18FF06F3:
 			bmsStatus = (UINT8)(((*(UINT8*)(rawData +0)))&0xF);
 			bmsStatus = (UINT8)(((*(UINT8*)(rawData +0)))&0xF);
 			printf("bmsStatus=%d\n",bmsStatus);
 			printf("bmsStatus=%d\n",bmsStatus);
@@ -3309,6 +3309,7 @@ void DecodeFunction(UINT32 ID,UINT8* rawData)
 			break;
 			break;
 		default:
 		default:
 			break;
 			break;
+			*/
 	}
 	}
 }
 }
 
 
@@ -4284,8 +4285,221 @@ void canRxMsgSetInvalidValue(UINT32 ID)
 			break;
 			break;
 	}
 	}
 }
 }
-
-
+void TcpDataAssemble(UINT8 Tcptype,UINT8 *SendBuffer,UTC8TimeType UTC8TimeTcp)
+{
+	//msg 90 data
+	switch(Tcptype)
+	{
+		case 0x90:
+		{
+			*(SendBuffer + 0 ) = TCP_START_SYM1;
+			*(SendBuffer + 1 ) = TCP_START_SYM2;
+			*(SendBuffer + 2 ) = TCP_CMD_SYM;
+			*(SendBuffer + 3 ) = TCP_ANS_SYM;
+			memcpy(SendBuffer + 4,AppNVMData.battSN,BATT_SN_LEN);
+			*(SendBuffer+0x15)	=	((TCP_ENCPT_DISABLE>>8)&0xFF);		//uint16	TCP_ENCPT_DISABLE
+			*(SendBuffer+0x16)	=	(TCP_ENCPT_DISABLE&0xFF);
+			UINT16 DataLen =0x3D ;
+			*(SendBuffer+0x17)	=	((DataLen>>8)&0xFF);		//uint16	DataLen
+			*(SendBuffer+0x18)	=	(DataLen&0xFF);
+			*(SendBuffer+0x19)	=	(UTC8TimeTcp.year - 0x07D0&0xFF);		//uint8	year
+			*(SendBuffer+0x1A)	=	(UTC8TimeTcp.month&0xFF);		//uint8	month
+			*(SendBuffer+0x1B)	=	(UTC8TimeTcp.day&0xFF);		//uint8	day
+			*(SendBuffer+0x1C)	=	(UTC8TimeTcp.hour&0xFF);		//uint8	hour
+			*(SendBuffer+0x1D)	=	(UTC8TimeTcp.minute&0xFF);		//uint8	minute
+			*(SendBuffer+0x1E)	=	(UTC8TimeTcp.second&0xFF);		//uint8	second
+			*(SendBuffer+0x1F)	=	(Tcptype&0xFF);		//uint8	BATTMSG
+			*(SendBuffer+0x20)	=	(UTC8TimeTcp.year - 0x07D0&0xFF);		//uint8	year
+			*(SendBuffer+0x21)	=	(UTC8TimeTcp.month&0xFF);		//uint8	month
+			*(SendBuffer+0x22)	=	(UTC8TimeTcp.day&0xFF);		//uint8	day
+			*(SendBuffer+0x23)	=	(UTC8TimeTcp.hour&0xFF);		//uint8	hour
+			*(SendBuffer+0x24)	=	(UTC8TimeTcp.minute&0xFF);		//uint8	minute
+			*(SendBuffer+0x25)	=	(UTC8TimeTcp.second&0xFF);		//uint8	second
+			memcpy(SendBuffer+0x26,VIN,17);
+			*(SendBuffer+0x37)	=	(vehicleStatus&0xFF);		//uint8	整车状态
+			*(SendBuffer+0x38)	=	(bmsHVOn&0xFF);		//uint8	BMS上高压指令
+			*(SendBuffer+0x39)	=	(currentGearPosition&0xFF);		//uint8	当前挡位
+			*(SendBuffer+0x3A)	=	(parkingBreakStatus&0xFF);		//uint8	手刹信号
+			*(SendBuffer+0x3B)	=	(breakingStatus&0xFF);		//uint8	制动开关
+			*(SendBuffer+0x3C)	=	((ODB>>24)&0xFF);		//uint32	总里程
+			*(SendBuffer+0x3D)	=	((ODB>>16)&0xFF);
+			*(SendBuffer+0x3E)	=	((ODB>>8)&0xFF);
+			*(SendBuffer+0x3F)	=	(ODB&0xFF);
+			*(SendBuffer+0x40)	=	(dcdcWorkStatus&0xFF);		//uint8	DCDC状态
+			*(SendBuffer+0x41)	=	(numOfChrgableSubsys&0xFF);		//uint8	可充电子系统数
+			*(SendBuffer+0x42)	=	(chrgableSubsysCode&0xFF);		//uint8	可充电储能子系统号
+			*(SendBuffer+0x43)	=	(maxTempSubsysCode&0xFF);		//uint8	最高温度子系统号
+			*(SendBuffer+0x44)	=	(maxTempCellCode&0xFF);		//uint8	最高温度探针单体代号
+			*(SendBuffer+0x45)	=	(minTempSubsysCode&0xFF);		//uint8	最低温度子系统号
+			*(SendBuffer+0x46)	=	(minTempCellCode&0xFF);		//uint8	最低温度探针子系统代号
+			*(SendBuffer+0x47)	=	(maxVolSubsysCode&0xFF);		//uint8	最高电压电池子系统号
+			*(SendBuffer+0x48)	=	((maxVolCellCode>>8)&0xFF);		//uint16	最高电压电池单体代号
+			*(SendBuffer+0x49)	=	(maxVolCellCode&0xFF);
+			*(SendBuffer+0x4A)	=	(minVolSubsysCode&0xFF);		//uint8	最低电压电池子系统号
+			*(SendBuffer+0x4B)	=	((minVoCelllCode>>8)&0xFF);		//uint16	最低电压电池单体代号
+			*(SendBuffer+0x4C)	=	(minVoCelllCode&0xFF);
+			*(SendBuffer+0x4D)	=	(ebcStatus&0xFF);		//uint8	换电控制器状态
+			*(SendBuffer+0x4E)	=	(ebcAskHVOn&0xFF);		//uint8	禁止高压上电
+			*(SendBuffer+0x4F)	=	(ebcAskHVOff&0xFF);		//uint8	请求高压下电
+			*(SendBuffer+0x50)	=	(retainLockSignal&0xFF);		//uint8	锁紧机构锁止信号
+			*(SendBuffer+0x51)	=	(dischargeLockSignal&0xFF);		//uint8	放电互锁信号
+			*(SendBuffer+0x52)	=	(chargeLockSignal&0xFF);		//uint8	充电互锁信号
+			*(SendBuffer+0x53)	=	(chargeFlag&0xFF);		//uint8	充电标志位
+			*(SendBuffer+0x54)	=	((vcuDCVol>>8)&0xFF);		//uint16	电机控制器直流母线电压
+			*(SendBuffer+0x55)	=	(vcuDCVol&0xFF);
+			break;
+		}
+		case 0x91:
+		{
+			//msg 91 data
+			*(SendBuffer + 0 ) = TCP_START_SYM1;
+			*(SendBuffer + 1 ) = TCP_START_SYM2;
+			*(SendBuffer + 2 ) = TCP_CMD_SYM;
+			*(SendBuffer + 3 ) = TCP_ANS_SYM;
+			memcpy(SendBuffer + 4,AppNVMData.battSN,BATT_SN_LEN);
+			*(SendBuffer+0x15)	=	((TCP_ENCPT_DISABLE>>8)&0xFF);		//uint16	TCP_ENCPT_DISABLE
+			*(SendBuffer+0x16)	=	(TCP_ENCPT_DISABLE&0xFF);
+			UINT16 DataLen =0x3A + numOfCells*2 + numOfCellTemp  ;
+			*(SendBuffer+0x17)	=	((DataLen>>8)&0xFF);		//uint16	DataLen
+			*(SendBuffer+0x18)	=	(DataLen&0xFF);
+			*(SendBuffer+0x19)	=	(UTC8TimeTcp.year - 0x07D0&0xFF);		//uint8	year
+			*(SendBuffer+0x1A)	=	(UTC8TimeTcp.month&0xFF);		//uint8	month
+			*(SendBuffer+0x1B)	=	(UTC8TimeTcp.day&0xFF);		//uint8	day
+			*(SendBuffer+0x1C)	=	(UTC8TimeTcp.hour&0xFF);		//uint8	hour
+			*(SendBuffer+0x1D)	=	(UTC8TimeTcp.minute&0xFF);		//uint8	minute
+			*(SendBuffer+0x1E)	=	(UTC8TimeTcp.second&0xFF);		//uint8	second
+			*(SendBuffer+0x1F)	=	(Tcptype&0xFF);		//uint8	BATTMSG
+			*(SendBuffer+0x20)	=	(UTC8TimeTcp.year - 0x07D0&0xFF);		//uint8	year
+			*(SendBuffer+0x21)	=	(UTC8TimeTcp.month&0xFF);		//uint8	month
+			*(SendBuffer+0x22)	=	(UTC8TimeTcp.day&0xFF);		//uint8	day
+			*(SendBuffer+0x23)	=	(UTC8TimeTcp.hour&0xFF);		//uint8	hour
+			*(SendBuffer+0x24)	=	(UTC8TimeTcp.minute&0xFF);		//uint8	minute
+			*(SendBuffer+0x25)	=	(UTC8TimeTcp.second&0xFF);		//uint8	second
+			*(SendBuffer+0x26)	=	(csq&0xFF);		//uint8	csq
+			*(SendBuffer+0x27)	=	(bmsStatus&0xFF);		//uint8	BMS状态
+			*(SendBuffer+0x28)	=	(chrgConctStatus&0xFF);		//uint8	充电连接状态
+			*(SendBuffer+0x29)	=	(bmsErrClass&0xFF);		//uint8	BMS故障等级
+			*(SendBuffer+0x2A)	=	(bmsErrNum&0xFF);		//uint8	BMS故障码
+			*(SendBuffer+0x2B)	=	(highVolPwrDwnReq&0xFF);		//uint8	下高压请求
+			*(SendBuffer+0x2C)	=	(chrgStatus&0xFF);		//uint8	充电状态
+			*(SendBuffer+0x2D)	=	(battSoc&0xFF);		//uint8	SOC
+			*(SendBuffer+0x2E)	=	(battSOH&0xFF);		//uint8	电池SOH
+			*(SendBuffer+0x2F)	=	((packTotalVol>>8)&0xFF);		//uint16	电池总电压
+			*(SendBuffer+0x30)	=	(packTotalVol&0xFF);
+			*(SendBuffer+0x31)	=	((packTotalCurr>>8)&0xFF);		//uint16	电池总电流
+			*(SendBuffer+0x32)	=	(packTotalCurr&0xFF);
+			*(SendBuffer+0x33)	=	((insulationR>>8)&0xFF);		//uint16	绝缘电阻
+			*(SendBuffer+0x34)	=	(insulationR&0xFF);
+			*(SendBuffer+0x35)	=	(mainPosRlyStatus&0xFF);		//uint8	主正继电器开闭状态
+			*(SendBuffer+0x36)	=	(preRlyStatus&0xFF);		//uint8	预充继电器开闭状态
+			*(SendBuffer+0x37)	=	(mainNegRlyStatus&0xFF);		//uint8	总负继电器开闭状态
+			*(SendBuffer+0x38)	=	(thrRlyStatus&0xFF);		//uint8	三合一继电器开闭状态
+			*(SendBuffer+0x39)	=	(ptc1RlyStatus&0xFF);		//uint8	PTC1继电器开闭状态
+			*(SendBuffer+0x3A)	=	(airCondRlyStatus&0xFF);		//uint8	空调继电器开闭状态
+			*(SendBuffer+0x3B)	=	(dcChrg1PosRlyStatus&0xFF);		//uint8	快充1正继电器开闭状态
+			*(SendBuffer+0x3C)	=	(dcChrg1NegRlyStatus&0xFF);		//uint8	快充1负继电器开闭状态
+			*(SendBuffer+0x3D)	=	(dcChrg2PosRlyStatus&0xFF);		//uint8	快充2正继电器开闭状态
+			*(SendBuffer+0x3E)	=	(dcChrg2NegRlyStatus&0xFF);		//uint8	快充2负继电器开闭状态
+			*(SendBuffer+0x3F)	=	(heatPosRlyStatus&0xFF);		//uint8	加热正继电器开闭状态
+			*(SendBuffer+0x40)	=	(heatNegRlyStatus&0xFF);		//uint8	加热负继电器开闭状态
+			*(SendBuffer+0x41)	=	(coolRlyStatus&0xFF);		//uint8	水冷继电器开闭状态
+			*(SendBuffer+0x42)	=	(ptc2RlyStatus&0xFF);		//uint8	PTC2继电器开闭状态
+			*(SendBuffer+0x43)	=	(mainPosRlyErrStatus&0xFF);		//uint8	主正继电器故障状态
+			*(SendBuffer+0x44)	=	(preRlyErrStatus&0xFF);		//uint8	预充继电器故障状态
+			*(SendBuffer+0x45)	=	(mainNegRlyErrStatus&0xFF);		//uint8	总负继电器故障状态
+			*(SendBuffer+0x46)	=	(thrRlyErrStatus&0xFF);		//uint8	三合一继电器故障状态
+			*(SendBuffer+0x47)	=	(ptc1RlyErrStatus&0xFF);		//uint8	PTC1电器故障状态
+			*(SendBuffer+0x48)	=	(airCondRlyErrStatus&0xFF);		//uint8	空调电器故障状态
+			*(SendBuffer+0x49)	=	(dcChrg1PosRlyErrStatus&0xFF);		//uint8	快充1正电器故障状态
+			*(SendBuffer+0x4A)	=	(dcChrg1NegRlyErrStatus&0xFF);		//uint8	快充1负电器故障状态
+			*(SendBuffer+0x4B)	=	(dcChrg2PosRlyErrStatus&0xFF);		//uint8	快充2正电器故障状态
+			*(SendBuffer+0x4C)	=	(dcChrg2NegRlyErrStatus&0xFF);		//uint8	快充2负电器故障状态
+			*(SendBuffer+0x4D)	=	(heatPosRlyErrStatus&0xFF);		//uint8	加热正电器故障状态
+			*(SendBuffer+0x4E)	=	(heatNegRlyErrStatus&0xFF);		//uint8	加热负电器故障状态
+			*(SendBuffer+0x4F)	=	(coolRlyErrStatus&0xFF);		//uint8	水冷电器故障状态
+			*(SendBuffer+0x50)	=	(ptc2RlyErrStatus&0xFF);		//uint8	PTC2电器故障状态
+			*(SendBuffer+0x51)	=	((numOfCells>>8)&0xFF);		//uint16	单体电池总数
+			*(SendBuffer+0x52)	=	(numOfCells&0xFF);
+			for(UINT16 index = 0; index < numOfCells;index++)
+			{
+				*(SendBuffer+0x53 + index*2)	=	((battCellU[index]>>8)&0xFF);
+				*(SendBuffer+0x53 + index*2 +1)	=	((battCellU[index])&0xFF);
+			}
+			*(SendBuffer+0x353)	= numOfCellTemp;		//uint8	可充电储能温度探针个数
+			memcpy(SendBuffer+0x354,battCellTemp,numOfCellTemp);
+			break;
+		}
+		case 0x92:
+		{
+			//msg 92 data
+			*(SendBuffer + 0 ) = TCP_START_SYM1;
+			*(SendBuffer + 1 ) = TCP_START_SYM2;
+			*(SendBuffer + 2 ) = TCP_CMD_SYM;
+			*(SendBuffer + 3 ) = TCP_ANS_SYM;
+			memcpy(SendBuffer + 4,AppNVMData.battSN,BATT_SN_LEN);
+			*(SendBuffer+0x15)	=	((TCP_ENCPT_DISABLE>>8)&0xFF);		//uint16	TCP_ENCPT_DISABLE
+			*(SendBuffer+0x16)	=	(TCP_ENCPT_DISABLE&0xFF);
+			UINT16 DataLen =0x35 ;
+			*(SendBuffer+0x17)	=	((DataLen>>8)&0xFF);		//uint16	DataLen
+			*(SendBuffer+0x18)	=	(DataLen&0xFF);
+			*(SendBuffer+0x19)	=	(UTC8TimeTcp.year - 0x07D0&0xFF);		//uint8	year
+			*(SendBuffer+0x1A)	=	(UTC8TimeTcp.month&0xFF);		//uint8	month
+			*(SendBuffer+0x1B)	=	(UTC8TimeTcp.day&0xFF);		//uint8	day
+			*(SendBuffer+0x1C)	=	(UTC8TimeTcp.hour&0xFF);		//uint8	hour
+			*(SendBuffer+0x1D)	=	(UTC8TimeTcp.minute&0xFF);		//uint8	minute
+			*(SendBuffer+0x1E)	=	(UTC8TimeTcp.second&0xFF);		//uint8	second
+			*(SendBuffer+0x1F)	=	(Tcptype&0xFF);		//uint8	BATTMSG
+			*(SendBuffer+0x20)	=	(UTC8TimeTcp.year - 0x07D0&0xFF);		//uint8	year
+			*(SendBuffer+0x21)	=	(UTC8TimeTcp.month&0xFF);		//uint8	month
+			*(SendBuffer+0x22)	=	(UTC8TimeTcp.day&0xFF);		//uint8	day
+			*(SendBuffer+0x23)	=	(UTC8TimeTcp.hour&0xFF);		//uint8	hour
+			*(SendBuffer+0x24)	=	(UTC8TimeTcp.minute&0xFF);		//uint8	minute
+			*(SendBuffer+0x25)	=	(UTC8TimeTcp.second&0xFF);		//uint8	second
+			*(SendBuffer+0x26)	=	((accChrgAh>>24)&0xFF);		//uint32	累计充入Ah数
+			*(SendBuffer+0x27)	=	((accChrgAh>>16)&0xFF);
+			*(SendBuffer+0x28)	=	((accChrgAh>>8)&0xFF);
+			*(SendBuffer+0x29)	=	(accChrgAh&0xFF);
+			*(SendBuffer+0x2A)	=	((accDischrgAh>>24)&0xFF);		//uint32	累计放出Ah数
+			*(SendBuffer+0x2B)	=	((accDischrgAh>>16)&0xFF);
+			*(SendBuffer+0x2C)	=	((accDischrgAh>>8)&0xFF);
+			*(SendBuffer+0x2D)	=	(accDischrgAh&0xFF);
+			*(SendBuffer+0x2E)	=	((accChrgkWh>>24)&0xFF);		//uint32	累计充入kWh数
+			*(SendBuffer+0x2F)	=	((accChrgkWh>>16)&0xFF);
+			*(SendBuffer+0x30)	=	((accChrgkWh>>8)&0xFF);
+			*(SendBuffer+0x31)	=	(accChrgkWh&0xFF);
+			*(SendBuffer+0x32)	=	((accDischrgkWh>>24)&0xFF);		//uint32	累计放出kWh数
+			*(SendBuffer+0x33)	=	((accDischrgkWh>>16)&0xFF);
+			*(SendBuffer+0x34)	=	((accDischrgkWh>>8)&0xFF);
+			*(SendBuffer+0x35)	=	(accDischrgkWh&0xFF);
+			*(SendBuffer+0x36)	=	((accRecvryChrgAh>>24)&0xFF);		//uint32	累计动能回馈充入Ah数
+			*(SendBuffer+0x37)	=	((accRecvryChrgAh>>16)&0xFF);
+			*(SendBuffer+0x38)	=	((accRecvryChrgAh>>8)&0xFF);
+			*(SendBuffer+0x39)	=	(accRecvryChrgAh&0xFF);
+			*(SendBuffer+0x3A)	=	((accRecvryChrgkWh>>24)&0xFF);		//uint32	累计动能回馈充入kWh数
+			*(SendBuffer+0x3B)	=	((accRecvryChrgkWh>>16)&0xFF);
+			*(SendBuffer+0x3C)	=	((accRecvryChrgkWh>>8)&0xFF);
+			*(SendBuffer+0x3D)	=	(accRecvryChrgkWh&0xFF);
+			*(SendBuffer+0x3E)	=	((accStationChrgAh>>24)&0xFF);		//uint32	累计换电站充入Ah数
+			*(SendBuffer+0x3F)	=	((accStationChrgAh>>16)&0xFF);
+			*(SendBuffer+0x40)	=	((accStationChrgAh>>8)&0xFF);
+			*(SendBuffer+0x41)	=	(accStationChrgAh&0xFF);
+			*(SendBuffer+0x42)	=	((accStationChrgkWh>>24)&0xFF);		//uint32	累计换电站充入kWh数
+			*(SendBuffer+0x43)	=	((accStationChrgkWh>>16)&0xFF);
+			*(SendBuffer+0x44)	=	((accStationChrgkWh>>8)&0xFF);
+			*(SendBuffer+0x45)	=	(accStationChrgkWh&0xFF);
+			*(SendBuffer+0x46)	=	((accGunChrgAh>>24)&0xFF);		//uint32	累计插枪充电充入Ah数
+			*(SendBuffer+0x47)	=	((accGunChrgAh>>16)&0xFF);
+			*(SendBuffer+0x48)	=	((accGunChrgAh>>8)&0xFF);
+			*(SendBuffer+0x49)	=	(accGunChrgAh&0xFF);
+			*(SendBuffer+0x4A)	=	((accGunChrgkWh>>24)&0xFF);		//uint32	累计插枪充电充入kWh数
+			*(SendBuffer+0x4B)	=	((accGunChrgkWh>>16)&0xFF);
+			*(SendBuffer+0x4C)	=	((accGunChrgkWh>>8)&0xFF);
+			*(SendBuffer+0x4D)	=	(accGunChrgkWh&0xFF);
+			break;
+		}
+	}
+	return;
+}
 
 
 
 
 
 

+ 3 - 5
src/AppSignal.c

@@ -193,6 +193,7 @@ UINT8 canRxFlag[133] = {0};
 
 
 
 
 //declear the UINT8 vars
 //declear the UINT8 vars
+UINT8   csq = 0x00;
 UINT8	bmsStatus= 0x00;
 UINT8	bmsStatus= 0x00;
 UINT8	bmsErrClass= 0x00;
 UINT8	bmsErrClass= 0x00;
 UINT8	chrgConctStatus= 0x00;
 UINT8	chrgConctStatus= 0x00;
@@ -214,7 +215,6 @@ UINT8	numOfChrgableSubsys= 0x00;
 UINT8	lengthOfChrgableSysCode= 0x00;
 UINT8	lengthOfChrgableSysCode= 0x00;
 UINT8	chrgableSysCode= 0x00;
 UINT8	chrgableSysCode= 0x00;
 UINT8	chrgableSubsysCode= 0x00;
 UINT8	chrgableSubsysCode= 0x00;
-UINT8	numOfCellTemp= 0x00;
 UINT8	numOfBattErr= 0x00;
 UINT8	numOfBattErr= 0x00;
 UINT8	battCellTemp[64] = {0x00};
 UINT8	battCellTemp[64] = {0x00};
 UINT8	mainPosRlyStatus= 0x00;
 UINT8	mainPosRlyStatus= 0x00;
@@ -286,8 +286,7 @@ UINT8	mainElectricityErrorClass= 0x00;
 UINT8	pumpWorkStatus= 0x00;
 UINT8	pumpWorkStatus= 0x00;
 UINT8	elecAirCompressorErrorStatus= 0x00;
 UINT8	elecAirCompressorErrorStatus= 0x00;
 UINT8	elecAirCompressorWrokStatus= 0x00;
 UINT8	elecAirCompressorWrokStatus= 0x00;
-
-
+UINT8   numOfCellTemp = CELL_TEMP_NUM;
 
 
 //declear the UINT16 vars
 //declear the UINT16 vars
 UINT16	maxChrgCurrAllowed = 0x00;
 UINT16	maxChrgCurrAllowed = 0x00;
@@ -299,10 +298,9 @@ UINT16	maxCellVol = 0x00;
 UINT16	minCellVol = 0x00;
 UINT16	minCellVol = 0x00;
 UINT16	maxVolCellCode = 0x00;
 UINT16	maxVolCellCode = 0x00;
 UINT16	minVoCelllCode = 0x00;
 UINT16	minVoCelllCode = 0x00;
-UINT16	numOfCells = 0x00;
 UINT16	battCellU[384] = {0x00};
 UINT16	battCellU[384] = {0x00};
 UINT16	vcuDCVol = 0x00;
 UINT16	vcuDCVol = 0x00;
-
+UINT16  numOfCells = CELL_NUM;
 
 
 
 
 //declear the UINT32 vars
 //declear the UINT32 vars

+ 48 - 48
src/AppTaskControl.c

@@ -13,7 +13,7 @@ static UINT8                        gProcess_Control_TaskStack[PROC_CONTROL_TASK
 static osThreadId_t                 ControlTaskId = NULL;
 static osThreadId_t                 ControlTaskId = NULL;
 static process_control 		        gProcess_Control_Task = PROCESS_CONTROL_STATE_IDLE;
 static process_control 		        gProcess_Control_Task = PROCESS_CONTROL_STATE_IDLE;
 #define PROC_CONTROL_STATE_SWITCH(a)    (gProcess_Control_Task = a)
 #define PROC_CONTROL_STATE_SWITCH(a)    (gProcess_Control_Task = a)
-void GetAdcValue(UINT8 num);
+// void GetAdcValue(UINT8 num);
 static void ControlTask(void* arg)
 static void ControlTask(void* arg)
 {
 {
     /*AD采样初始化*/
     /*AD采样初始化*/
@@ -45,24 +45,24 @@ static void ControlTask(void* arg)
                 {
                 {
                     LEDDisplay();
                     LEDDisplay();
                     CurrentTime = TimeCounter;
                     CurrentTime = TimeCounter;
-                    if(AppDataInfo.BattLock==FALSE && getbit(UartCmdRecvFlag,0) ==1)
-                    {
-                        relayControlFunc(3,0.4);
-                        clrbit(UartCmdRecvFlag,0);
-                    }
-                    else if (AppDataInfo.BattLock==TRUE && getbit(UartCmdRecvFlag,0)==1)
-                    {
-                        relayControlFunc(2,0.4);
-                        clrbit(UartCmdRecvFlag,0);
-                    }
-                    else if(BuzzerControl==TRUE && TimeCounter%10==0)
-                    {
-                        relayControlFunc(1,0.4);
-                    }
+                    // if(AppDataInfo.BattLock==FALSE && getbit(UartCmdRecvFlag,0) ==1)
+                    // {
+                    //     relayControlFunc(3,0.4);
+                    //     clrbit(UartCmdRecvFlag,0);
+                    // }
+                    // else if (AppDataInfo.BattLock==TRUE && getbit(UartCmdRecvFlag,0)==1)
+                    // {
+                    //     relayControlFunc(2,0.4);
+                    //     clrbit(UartCmdRecvFlag,0);
+                    // }
+                    // else if(BuzzerControl==TRUE && TimeCounter%10==0)
+                    // {
+                    //     relayControlFunc(1,0.4);
+                    // }
                 }
                 }
                 if(TimeCounter%10==0)
                 if(TimeCounter%10==0)
                 {
                 {
-                    GetAdcValue(AdcOrder);
+                    //GetAdcValue(AdcOrder);
                     AdcOrder++;
                     AdcOrder++;
                     if(AdcOrder>5)
                     if(AdcOrder>5)
                     {
                     {
@@ -86,7 +86,7 @@ static void ControlTask(void* arg)
                 osDelay(100);
                 osDelay(100);
                 if(TimeCounter%(10*60)==0)
                 if(TimeCounter%(10*60)==0)
                 {
                 {
-                    GetAdcValue(AdcOrder);
+                    //GetAdcValue(AdcOrder);
                     AdcOrder++;
                     AdcOrder++;
                     if(AdcOrder>5)
                     if(AdcOrder>5)
                     {
                     {
@@ -120,34 +120,34 @@ void AppTaskControlDeInit(void *arg)
     osThreadTerminate(ControlTaskId);
     osThreadTerminate(ControlTaskId);
     ControlTaskId = NULL;
     ControlTaskId = NULL;
 }
 }
-void GetAdcValue(UINT8 num)
-{
-    UINT32 adcValue = 0;
-    switch (num)
-    {
-        case FAST_CHARGE_TEMP:
-            NB_ADC_Get(&adcValue,FAST_CHARGE_TEMP);
-            fastChargeTemp = LookUpRTtable(adcValue);
-            break;
-        case NORMAL_CHARGE_TEMP:
-            NB_ADC_Get(&adcValue,NORMAL_CHARGE_TEMP);
-            normalChargeTemp = LookUpRTtable(adcValue);
-            break;
-        case OTHER_TEMP_1:
-            NB_ADC_Get(&adcValue,OTHER_TEMP_1);
-            heatTemp1 = LookUpRTtable(adcValue);                      
-            break;
-        case OTHER_TEMP_2:
-            NB_ADC_Get(&adcValue,OTHER_TEMP_2);
-            heatTemp2 = LookUpRTtable(adcValue);                       
-            break;
-        case  VBAT:
-            NB_ADC_Get(&adcValue,VBAT);    
-            #ifdef USING_PRINTF1
-                printf("VBAT:%d\n",adcValue);
-            #endif	                    
-            break;
-        default:
-            break;
-    }
-}
+// void GetAdcValue(UINT8 num)
+// {
+//     UINT32 adcValue = 0;
+//     switch (num)
+//     {
+//         case FAST_CHARGE_TEMP:
+//             NB_ADC_Get(&adcValue,FAST_CHARGE_TEMP);
+//             fastChargeTemp = LookUpRTtable(adcValue);
+//             break;
+//         case NORMAL_CHARGE_TEMP:
+//             NB_ADC_Get(&adcValue,NORMAL_CHARGE_TEMP);
+//             normalChargeTemp = LookUpRTtable(adcValue);
+//             break;
+//         case OTHER_TEMP_1:
+//             NB_ADC_Get(&adcValue,OTHER_TEMP_1);
+//             heatTemp1 = LookUpRTtable(adcValue);                      
+//             break;
+//         case OTHER_TEMP_2:
+//             NB_ADC_Get(&adcValue,OTHER_TEMP_2);
+//             heatTemp2 = LookUpRTtable(adcValue);                       
+//             break;
+//         case  VBAT:
+//             NB_ADC_Get(&adcValue,VBAT);    
+//             #ifdef USING_PRINTF1
+//                 printf("VBAT:%d\n",adcValue);
+//             #endif	                    
+//             break;
+//         default:
+//             break;
+//     }
+// }

+ 19 - 3
src/AppTaskMain.c

@@ -82,15 +82,31 @@ static void MainTask(void* arg)
                 //状态转换延时
                 //状态转换延时
                 if(TimeCounter%10==0)
                 if(TimeCounter%10==0)
                 {
                 {
-                    BattWorkDelayFunc(battWorkState);
+                    //BattWorkDelayFunc(battWorkState);
                     #ifdef USING_PRINTF1
                     #ifdef USING_PRINTF1
                         printf("[%d]-%x",__LINE__,battWorkState);
                         printf("[%d]-%x",__LINE__,battWorkState);
                         printf("[%d]%x - %x - %x - %x - %x\n",__LINE__,WorkTimerEnd,BMS_Fota_update_flag,TCPWorkState,BattWorkStateDelay,PadInterrupt);
                         printf("[%d]%x - %x - %x - %x - %x\n",__LINE__,WorkTimerEnd,BMS_Fota_update_flag,TCPWorkState,BattWorkStateDelay,PadInterrupt);
                     #endif
                     #endif
+                    if(strcmp(AppNVMData.battSN,SN)!=0&&SN[0]!=0xFF&&SN[0]!=0x00&&SN[15]!=0xFF&&SN[15]!=0x00)
+                    {
+                        AppNVMData.appDataModify = TRUE;
+                        AppNVMData.battSN[0] = 'J';
+                        AppNVMData.battSN[1] = 'M';
+                        MEMCPY(AppNVMData.battSN,SN,15);
+                        AppNVMData.EOLState=1;
+                    }
                 }
                 }
-                if((WorkTimerEnd==TRUE)&&(BMS_Fota_update_flag==FALSE)&&(TCPWorkState==0x00)&&(BattWorkStateDelay==BATT_IDLE_SYM)&&(PadInterrupt==0x00))//从工作转换为监听的条件
+                if(AppDataInfo.appDataModify)
                 {
                 {
-                    PROC_MAIN_STATE_SWITCH(PROCESS_STATE_LISTEN);
+                    SaveAppData();
+                }
+                if(AppNVMData.appDataModify)
+                {
+                    SaveAppConfig();
+                }
+                if((WorkTimerEnd==TRUE)&&(TCPWorkState==0x00)&&(PadInterrupt==0x00))//从工作转换为监听的条件
+                {
+                    PROC_MAIN_STATE_SWITCH(PROCESS_STATE_IDLE);
                     xTimerStop(work_timer,0);
                     xTimerStop(work_timer,0);
                     xTimerStart(sleep_timer, 0);
                     xTimerStart(sleep_timer, 0);
                     WorkTimerEnd = FALSE;
                     WorkTimerEnd = FALSE;

+ 162 - 101
src/AppTaskTcp.c

@@ -223,7 +223,7 @@ static void TcpTask(void* arg)
 static void TcpDataInfoAssembleSend()
 static void TcpDataInfoAssembleSend()
 {   
 {   
     OsaUtcTimeTValue TimeStracture;
     OsaUtcTimeTValue TimeStracture;
-    UINT8 csq=0;
+
     INT8 snr=0;
     INT8 snr=0;
     INT8 rsnr=0;
     INT8 rsnr=0;
 
 
@@ -237,34 +237,9 @@ static void TcpDataInfoAssembleSend()
 	UINT8 i = 0;
 	UINT8 i = 0;
 	INT16 len = -1;
 	INT16 len = -1;
     UINT8 *SendBuffer = NULL;
     UINT8 *SendBuffer = NULL;
-    //电池工作模式的延迟转换由Maintask负责,发送频率调节由tcp负责
-    switch (BattWorkStateDelay)
-    {
-        case BATT_IDLE_SYM:
-        {
-            BattSendFreq = AppDataInfo.BattInfoSendFreqLow;
-            GpsSendFreq = AppDataInfo.PosInfoSendFreqLow;
-            break;
-        }
-        case BATT_CHARGE_SYM:
-        {
-            BattSendFreq = AppDataInfo.BattInfoSendFreqHigh;
-            GpsSendFreq = AppDataInfo.PosInfoSendFreqLow;
-            break;
-        }
-        case BATT_DISCHARGE_SYM:
-        {
-            BattSendFreq = AppDataInfo.BattInfoSendFreqNomal;
-            GpsSendFreq = AppDataInfo.PosInfoSendFreqHigh;
-            break;
-        }
-        default:
-        {
-            BattSendFreq = AppDataInfo.BattInfoSendFreqNomal;
-            GpsSendFreq = AppDataInfo.PosInfoSendFreqNormal;
-            break;
-        }
-    }
+    appGetSignalInfoSync(&csq,&snr,&rsnr);
+    BattSendFreq = AppDataInfo.BattInfoSendFreqNomal;
+    GpsSendFreq = AppDataInfo.PosInfoSendFreqNormal;
     if(getbit(PadInterrupt,3)==1||getbit(PadInterrupt,4)==1)//有震动产生,提高位置信息发送频率
     if(getbit(PadInterrupt,3)==1||getbit(PadInterrupt,4)==1)//有震动产生,提高位置信息发送频率
     {
     {
         GpsSendFreq = AppDataInfo.PosInfoSendFreqHigh;
         GpsSendFreq = AppDataInfo.PosInfoSendFreqHigh;
@@ -274,7 +249,8 @@ static void TcpDataInfoAssembleSend()
             clrbit(PadInterrupt,4);
             clrbit(PadInterrupt,4);
         }
         }
     }
     }
-    if(send_counter%BattSendFreq==0 && send_counter!=0)
+    /*
+    if(FALSE)
     {
     {
         UINT16 ErrorTemp = 0x00;
         UINT16 ErrorTemp = 0x00;
         UINT8 ProtocolHeaderLen = 25;       //电池信息协议头部加校验码长度,此长度不更改
         UINT8 ProtocolHeaderLen = 25;       //电池信息协议头部加校验码长度,此长度不更改
@@ -382,6 +358,7 @@ static void TcpDataInfoAssembleSend()
         }
         }
         SendBuffer=NULL;
         SendBuffer=NULL;
     }
     }
+    */
     if(send_counter%GpsSendFreq==0 && send_counter!=0)
     if(send_counter%GpsSendFreq==0 && send_counter!=0)
     {
     {
         GPSInfo *GpsRecvData=NULL;
         GPSInfo *GpsRecvData=NULL;
@@ -542,12 +519,73 @@ static void TcpDataInfoAssembleSend()
             }
             }
         }
         }
     }
     }
-    if(send_counter%30==0)//调试信息暂时不发,需调整之后发送
+    if((send_counter)%10==0)//90发送
     {
     {
+        appGetSystemTimeUtcSync(&TimeStracture);
+        year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
+        month=(TimeStracture.UTCtimer1&0xff00)>>8;
+        day=TimeStracture.UTCtimer1&0xff;
+        hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
+        minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
+        sec=(TimeStracture.UTCtimer2&0xff00)>>8;
+        UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
         DebugMsgtoTcpType DebugMsgInfo;
         DebugMsgtoTcpType DebugMsgInfo;
-        UINT16 BufferLen = 1000;
+        UINT8 Tcptype =0x90;
+        UINT16 BufferLen1 = 0x55,BufferLen = 0;
+        UINT8 *rbuf = NULL;
+        rbuf = malloc(BufferLen1);
+        BufferLen = BufferLen1*2;
         SendBuffer = malloc(BufferLen+sizeof(DebugMsgInfo));
         SendBuffer = malloc(BufferLen+sizeof(DebugMsgInfo));
-        memset(SendBuffer+sizeof(DebugMsgInfo)-1, 0x41,BufferLen);
+        TcpDataAssemble(Tcptype,rbuf,UTC8TimeTcp);
+        for(UINT16 i=0;i<BufferLen1;i++)
+        {
+            sprintf((char *)(SendBuffer+sizeof(DebugMsgInfo)-1+i*2),"%02x",*(rbuf+i));
+        }
+        if(rbuf!=NULL)
+        {
+            free(rbuf);
+        }
+        rbuf=NULL;
+        DataLen=sizeof(DebugMsgInfo.DebugInfo) + BufferLen;
+        DebugMsgInfo.startSymbol[0] = TCP_START_SYM1;
+	    DebugMsgInfo.startSymbol[1] = TCP_START_SYM2;
+	    DebugMsgInfo.cmdSymbol = TCP_CMD_SYM;
+	    DebugMsgInfo.ansSymbol = TCP_ANS_SYM;
+        memcpy(DebugMsgInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
+        DebugMsgInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
+	    DebugMsgInfo.dataLength[0] = (DataLen>>8) & 0xFF;
+	    DebugMsgInfo.dataLength[1] = DataLen & 0xFF;
+        DebugMsgInfo.DebugInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF;	//year
+        DebugMsgInfo.DebugInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF;								//month
+        DebugMsgInfo.DebugInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF;									//day
+        DebugMsgInfo.DebugInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF;  						    //hour
+        DebugMsgInfo.DebugInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF;						    //mins
+        DebugMsgInfo.DebugInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF;							//sec
+        DebugMsgInfo.DebugInfo.msgMark = DEBUGMSG;
+        DebugMsgInfo.DebugInfo.DebugLen[0] = BufferLen>>8;
+        DebugMsgInfo.DebugInfo.DebugLen[1] = BufferLen;
+        memcpy(SendBuffer,(UINT8 *)&DebugMsgInfo,sizeof(DebugMsgInfo)-1);
+        DebugMsgInfo.CRC = bcc_chk(SendBuffer, BufferLen+sizeof(DebugMsgInfo)-1);
+        memcpy(SendBuffer+BufferLen+sizeof(DebugMsgInfo)-1,&DebugMsgInfo.CRC,1);
+        len = tcpipConnectionSend(socContext.id, SendBuffer, BufferLen+sizeof(DebugMsgInfo), 0, 0, 0);
+        #ifdef USING_PRINTF
+            printf("[%d]DebugMsg-[%d]-[%d]:\n",__LINE__,BufferLen,len);
+        #endif
+        #ifdef USING_PRINTF1
+            printf("[%d]DebugMsg-[%d]:\n",__LINE__,len);
+            for (UINT16 i = 0; i < BufferLen*2+sizeof(DebugMsgInfo); i++)
+            {
+                printf("%02x ",*(SendBuffer + i));
+            }
+        #endif
+        if(SendBuffer!=NULL)
+        {
+            free(SendBuffer);
+        }
+        SendBuffer=NULL;
+    }
+    if((send_counter+1)%10==0)//91发送
+    {
         appGetSystemTimeUtcSync(&TimeStracture);
         appGetSystemTimeUtcSync(&TimeStracture);
         year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
         year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
         month=(TimeStracture.UTCtimer1&0xff00)>>8;
         month=(TimeStracture.UTCtimer1&0xff00)>>8;
@@ -556,6 +594,23 @@ static void TcpDataInfoAssembleSend()
         minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
         minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
         sec=(TimeStracture.UTCtimer2&0xff00)>>8;
         sec=(TimeStracture.UTCtimer2&0xff00)>>8;
         UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
         UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
+        DebugMsgtoTcpType DebugMsgInfo;
+        UINT8 Tcptype =0x91;
+        UINT16 BufferLen1 = 0x52 + numOfCells*2 + numOfCellTemp,BufferLen = 0;
+        UINT8 *rbuf = NULL;
+        BufferLen = BufferLen1*2;
+        rbuf = malloc(BufferLen1);
+        SendBuffer = malloc(BufferLen+sizeof(DebugMsgInfo));
+        TcpDataAssemble(Tcptype,rbuf,UTC8TimeTcp);
+        for(UINT16 i=0;i<BufferLen1;i++)
+        {
+            sprintf((char *)(SendBuffer+sizeof(DebugMsgInfo)-1+i*2),"%02x",*(rbuf+i));
+        }
+        if(rbuf!=NULL)
+        {
+            free(rbuf);
+        }
+        rbuf=NULL;
         DataLen=sizeof(DebugMsgInfo.DebugInfo) + BufferLen;
         DataLen=sizeof(DebugMsgInfo.DebugInfo) + BufferLen;
         DebugMsgInfo.startSymbol[0] = TCP_START_SYM1;
         DebugMsgInfo.startSymbol[0] = TCP_START_SYM1;
 	    DebugMsgInfo.startSymbol[1] = TCP_START_SYM2;
 	    DebugMsgInfo.startSymbol[1] = TCP_START_SYM2;
@@ -579,10 +634,13 @@ static void TcpDataInfoAssembleSend()
         memcpy(SendBuffer+BufferLen+sizeof(DebugMsgInfo)-1,&DebugMsgInfo.CRC,1);
         memcpy(SendBuffer+BufferLen+sizeof(DebugMsgInfo)-1,&DebugMsgInfo.CRC,1);
         len = tcpipConnectionSend(socContext.id, SendBuffer, BufferLen+sizeof(DebugMsgInfo), 0, 0, 0);
         len = tcpipConnectionSend(socContext.id, SendBuffer, BufferLen+sizeof(DebugMsgInfo), 0, 0, 0);
         #ifdef USING_PRINTF
         #ifdef USING_PRINTF
-            printf("DebugMsg-[%d]:\n",len);
-            for (int i = 0; i < BufferLen+sizeof(DebugMsgInfo); i++)
+            printf("[%d]DebugMsg-[%d]-[%d]:\n",__LINE__,BufferLen,len);
+        #endif
+        #ifdef USING_PRINTF1
+            printf("[%d]DebugMsg-[%d]:\n",__LINE__,len);
+            for (UINT16 i = 0; i < BufferLen*2+sizeof(DebugMsgInfo); i++)
             {
             {
-                printf("%02x ",*(SendBuffer + i));
+                printf("%c ",*(SendBuffer + i));
             }
             }
         #endif
         #endif
         if(SendBuffer!=NULL)
         if(SendBuffer!=NULL)
@@ -591,6 +649,72 @@ static void TcpDataInfoAssembleSend()
         }
         }
         SendBuffer=NULL;
         SendBuffer=NULL;
     }
     }
+    if((send_counter+2)%60==0)//92发送
+    {
+        appGetSystemTimeUtcSync(&TimeStracture);
+        year=(TimeStracture.UTCtimer1&0xffff0000)>>16;
+        month=(TimeStracture.UTCtimer1&0xff00)>>8;
+        day=TimeStracture.UTCtimer1&0xff;
+        hour=(TimeStracture.UTCtimer2&0xff000000)>>24;
+        minute=(TimeStracture.UTCtimer2&0xff0000)>>16;
+        sec=(TimeStracture.UTCtimer2&0xff00)>>8;
+        UTCToBeijing((UTC8TimeType *)&UTC8TimeTcp,year,month,day,hour,minute,sec);
+        DebugMsgtoTcpType DebugMsgInfo;
+        UINT8 Tcptype =0x92;
+        UINT16 BufferLen1 = 0x4D,BufferLen = 0;
+        UINT8 *rbuf = NULL;
+        rbuf = malloc(BufferLen1);
+        BufferLen = BufferLen1*2;
+        SendBuffer = malloc(BufferLen+sizeof(DebugMsgInfo));
+        TcpDataAssemble(Tcptype,rbuf,UTC8TimeTcp);
+        for(UINT16 i=0;i<BufferLen1;i++)
+        {
+            sprintf((char *)(SendBuffer+sizeof(DebugMsgInfo)-1+i*2),"%02x",*(rbuf+i));
+        }
+        if(rbuf!=NULL)
+        {
+            free(rbuf);
+        }
+        rbuf=NULL;
+        #ifdef USING_PRINTF
+            printf("[%d]DebugMsg-[%d]:\n",__LINE__,BufferLen);
+        #endif        
+        DataLen=sizeof(DebugMsgInfo.DebugInfo) + BufferLen;
+        DebugMsgInfo.startSymbol[0] = TCP_START_SYM1;
+	    DebugMsgInfo.startSymbol[1] = TCP_START_SYM2;
+	    DebugMsgInfo.cmdSymbol = TCP_CMD_SYM;
+	    DebugMsgInfo.ansSymbol = TCP_ANS_SYM;
+        memcpy(DebugMsgInfo.SN, AppNVMData.battSN,BATT_SN_LEN);
+        DebugMsgInfo.encryptMethod = TCP_ENCPT_DISABLE; //not encrypt
+	    DebugMsgInfo.dataLength[0] = (DataLen>>8) & 0xFF;
+	    DebugMsgInfo.dataLength[1] = DataLen & 0xFF;
+        DebugMsgInfo.DebugInfo.sendTimeUTC[0] = (UTC8TimeTcp.year - 0x07D0) & 0xFF;	//year
+        DebugMsgInfo.DebugInfo.sendTimeUTC[1] = UTC8TimeTcp.month & 0xFF;								//month
+        DebugMsgInfo.DebugInfo.sendTimeUTC[2] = UTC8TimeTcp.day & 0xFF;									//day
+        DebugMsgInfo.DebugInfo.sendTimeUTC[3] = UTC8TimeTcp.hour & 0xFF;  						    //hour
+        DebugMsgInfo.DebugInfo.sendTimeUTC[4] = UTC8TimeTcp.minute & 0xFF;						    //mins
+        DebugMsgInfo.DebugInfo.sendTimeUTC[5] = UTC8TimeTcp.second & 0xFF;							//sec
+        DebugMsgInfo.DebugInfo.msgMark = DEBUGMSG;
+        DebugMsgInfo.DebugInfo.DebugLen[0] = BufferLen>>8;
+        DebugMsgInfo.DebugInfo.DebugLen[1] = BufferLen;
+        memcpy(SendBuffer,(UINT8 *)&DebugMsgInfo,sizeof(DebugMsgInfo)-1);
+        DebugMsgInfo.CRC = bcc_chk(SendBuffer, BufferLen+sizeof(DebugMsgInfo)-1);
+        memcpy(SendBuffer+BufferLen+sizeof(DebugMsgInfo)-1,&DebugMsgInfo.CRC,1);
+        len = tcpipConnectionSend(socContext.id, SendBuffer, BufferLen+sizeof(DebugMsgInfo), 0, 0, 0);
+        #ifdef USING_PRINTF1
+            printf("[%d]DebugMsg-[%d]:\n",__LINE__,len);
+            for (UINT16 i = 0; i < BufferLen*2+sizeof(DebugMsgInfo); i++)
+            {
+                printf("%c ",*(SendBuffer + i));
+            }
+        #endif
+        if(SendBuffer!=NULL)
+        {
+            free(SendBuffer);
+        }
+        SendBuffer=NULL;
+    }
+    /*
     if(FALSE)//调试信息暂时不发,需调整之后发送
     if(FALSE)//调试信息暂时不发,需调整之后发送
     {
     {
         DebugMsgtoTcpType DebugMsgInfo;
         DebugMsgtoTcpType DebugMsgInfo;
@@ -598,7 +722,7 @@ static void TcpDataInfoAssembleSend()
         slpManWakeSrc_e Wakeup_source;
         slpManWakeSrc_e Wakeup_source;
         Wakeup_source =  slpManGetWakeupSrc();//获取唤醒源
         Wakeup_source =  slpManGetWakeupSrc();//获取唤醒源
         #ifdef DEBUGLOG
         #ifdef DEBUGLOG
-            Debug_printf("[%d,%d,%d]\n",Wakeup_source,AppDataInfo.SysReStartCount,AppDataInfo.AccMileage);
+            Debug_printf("[%d]\n",Wakeup_source);
         #endif
         #endif
         BufferLen = Debug_GetSize();
         BufferLen = Debug_GetSize();
         if(BufferLen==0)
         if(BufferLen==0)
@@ -665,6 +789,7 @@ static void TcpDataInfoAssembleSend()
         }
         }
         SendBuffer=NULL;
         SendBuffer=NULL;
     }
     }
+    */
     if(send_counter>0xffff)
     if(send_counter>0xffff)
     {
     {
         send_counter = 0;
         send_counter = 0;
@@ -734,70 +859,6 @@ static void TcpDataInfoRecvHandle()
                     {
                     {
                         Fota_Func(Ptr,socContext.id);
                         Fota_Func(Ptr,socContext.id);
                     }
                     }
-                    else if(*(Ptr+30)==0x80)//远程锁定命令
-                    {
-                        TcpCmdAnswer[3] = 0x01;
-                        memcpy(&TcpCmdAnswer[4],(Ptr+4),BATT_SN_LEN);
-                        TcpCmdAnswer[21] = TCP_ENCPT_DISABLE;
-                        TcpCmdAnswer[22] = 0x00;
-                        TcpCmdAnswer[23] = 0x06;
-                        memcpy(&TcpCmdAnswer[24],(Ptr+24),6);
-                        TcpCmdAnswer[30] = bcc_chk(TcpCmdAnswer,30);
-                        if(*(Ptr+31)==0x01)//0x01代表锁定
-                        {
-                            AppDataInfo.appDataModify = TRUE;
-                            AppDataInfo.BattLock = TRUE;
-                            tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
-                        }
-                        else if(*(Ptr+31)==0x02)              //0x02代表解锁
-                        {
-                            AppDataInfo.appDataModify = TRUE;
-                            AppDataInfo.BattLock = FALSE;
-                            tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
-                        }
-                    }
-                    else if(*(Ptr+30)==0x8A)//继电器控制
-                    {
-                        TcpCmdAnswer[3] = 0x01;
-                        memcpy(&TcpCmdAnswer[4],(Ptr+4),BATT_SN_LEN);
-                        TcpCmdAnswer[21] = TCP_ENCPT_DISABLE;
-                        TcpCmdAnswer[22] = 0x00;
-                        TcpCmdAnswer[23] = 0x06;
-                        memcpy(&TcpCmdAnswer[24],(Ptr+24),6);
-                        TcpCmdAnswer[30] = bcc_chk(TcpCmdAnswer,30);
-                        if(*(Ptr+31)==0x01)//0x01代表断开
-                        {
-                            AppDataInfo.appDataModify = TRUE;
-                            AppDataInfo.RelayControl = TRUE;
-                            tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
-                        }
-                        else if(*(Ptr+31)==0x00)             //0x00代表关闭
-                        {
-                            AppDataInfo.appDataModify = TRUE;
-                            AppDataInfo.RelayControl = FALSE;
-                            tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
-                        }
-                    }
-                    else if(*(Ptr+30)==0x89)//蜂鸣器控制
-                    {
-                        TcpCmdAnswer[3] = 0x01;
-                        memcpy(&TcpCmdAnswer[4],(Ptr+4),BATT_SN_LEN);
-                        TcpCmdAnswer[21] = TCP_ENCPT_DISABLE;
-                        TcpCmdAnswer[22] = 0x00;
-                        TcpCmdAnswer[23] = 0x06;
-                        memcpy(&TcpCmdAnswer[24],(Ptr+24),6);
-                        TcpCmdAnswer[30] = bcc_chk(TcpCmdAnswer,30);
-                        if(*(Ptr+31)==0x01)                 //0x01代表断开
-                        {
-                            BuzzerControl = TRUE;
-                            tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
-                        }
-                        else if(*(Ptr+31)==0x00)             //0x00代表关闭
-                        {
-                            BuzzerControl = FALSE;
-                            tcpipConnectionSend(socContext.id,TcpCmdAnswer,31,0,0,0);
-                        }   
-                    }
                     else
                     else
                     {
                     {
                         TcpCmdAnswer[3] = 0x0f;
                         TcpCmdAnswer[3] = 0x0f;

+ 3 - 3
src/app.c

@@ -10,9 +10,9 @@
 void appInit(void *arg)
 void appInit(void *arg)
 {
 {
     AppTaskMainInit(arg);
     AppTaskMainInit(arg);
-    //AppTaskTcpInit(arg);
-    //AppTaskControlInit(arg);
-    AdcTaskInit();
+    AppTaskTcpInit(arg);
+    AppTaskControlInit(arg);
+    //AdcTaskInit();
     AppTaskGpsInit(arg);
     AppTaskGpsInit(arg);
     //AppTaskUartInit(arg);
     //AppTaskUartInit(arg);
     AppTaskCanInit(arg);
     AppTaskCanInit(arg);