Selaa lähdekoodia

Delivery testing personnel

zack 1 vuosi sitten
vanhempi
commit
be18cd6135
11 muutettua tiedostoa jossa 314 lisäystä ja 190 poistoa
  1. 7 3
      Core/Inc/ConfigMacros.h
  2. 1 0
      Core/Inc/main.h
  3. 5 0
      Core/Inc/oledfont.h
  4. 1 1
      Core/Inc/tt808.h
  5. 73 70
      Core/Src/database.c
  6. 7 4
      Core/Src/freertos.c
  7. 9 1
      Core/Src/interface.c
  8. 2 1
      Core/Src/main.c
  9. 80 7
      Core/Src/mba32a.c
  10. 60 58
      Core/Src/ml307a.c
  11. 69 45
      Core/Src/tt808.c

+ 7 - 3
Core/Inc/ConfigMacros.h

@@ -57,9 +57,12 @@
 
 //*tt808
 #define JLPTIP		"121.199.29.128"
-#define JLPTPORT	7342			//ƽ̨
+//#define JLPTPORT	7342			//²âÊÔÆ½Ì¨
+#define JLPTPORT	9021			//Õýʽƽ̨
 
-//#define JLPTIP		"118.31.22.26"
+
+
+//#define JLPTIP		"118.31.22.26"//Ð칤ƽ̨
 //#define JLPTPORT	8901
 
 
@@ -197,7 +200,8 @@ typedef enum {
 	Nosignal =9,
 	Disconn = 0xA,
 	NoSIM = 0xB,
-	Back = 0xC
+	SendOK = 0xC,
+	Back = 0xD
 } TipsFlag;
 
 struct keys

+ 1 - 0
Core/Inc/main.h

@@ -89,6 +89,7 @@ void Error_Handler(void);
 
 /* USER CODE BEGIN Private defines */
 extern uint16_t sys_mode[2];
+extern char version[];
 /* USER CODE END Private defines */
 
 #ifdef __cplusplus

+ 5 - 0
Core/Inc/oledfont.h

@@ -456,6 +456,11 @@ const unsigned char Hzk1[][32]={
 {0x00,0xFC,0x84,0x84,0x84,0xFC,0x00,0x10,0x10,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x01,0x06,0x40,0x80,0x7F,0x00,0x00,0x00},/*"奀",49*/
 {0x00,0xFC,0x20,0x24,0xA8,0xFF,0xA8,0x24,0x00,0xFC,0x44,0x44,0xC4,0x42,0x40,0x00,0x00,0x3F,0x22,0x21,0x20,0x2F,0x20,0xA3,0x60,0x1F,0x00,0x00,0xFF,0x00,0x00,0x00},/*"剿",50*/
 {0x80,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x80,0x00,0x00,0x80,0x40,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00},/*"羲",51*/
+	
+{0x00,0x00,0x18,0x16,0x10,0xD0,0xB8,0x97,0x90,0x90,0x90,0x92,0x94,0x10,0x00,0x00,0x00,0x20,0x10,0x8C,0x83,0x80,0x41,0x46,0x28,0x10,0x28,0x44,0x43,0x80,0x80,0x00},/*"楷",52*/
+{0x40,0x40,0x42,0xCC,0x00,0x88,0x89,0x8E,0x88,0xF8,0x88,0x8C,0x8B,0x88,0x80,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x50,0x48,0x46,0x41,0x42,0x44,0x58,0x40,0x40,0x00},/*"冞",53*/
+{0x10,0x0C,0x04,0x24,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x24,0x04,0x14,0x0C,0x00,0x00,0x81,0x81,0x41,0x31,0x0F,0x01,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,0x00},/*"俇",54*/
+{0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0x08,0x08,0xFF,0x08,0x09,0x0A,0xC8,0x08,0x00,0x80,0x60,0x1F,0x00,0x10,0x20,0x1F,0x80,0x40,0x21,0x16,0x18,0x26,0x41,0xF8,0x00},/*"傖",55*/
 
 
 

+ 1 - 1
Core/Inc/tt808.h

@@ -17,7 +17,7 @@ void ReU4Proces(void);
 
 void printBytes(uint8_t *data, size_t length);
 
-
+void reconn(void);
 uint8_t testHex2Asc(const char *hex) ;
 
 void hexArrayToBcd(uint8_t* array, size_t length, uint8_t* out);

+ 73 - 70
Core/Src/database.c

@@ -81,22 +81,12 @@ void Database_Push(uint8_t object)
 {
 	if(object==0)//位置信息写入
 	{
-		if(dblocptr->headinfo.loc_pushIndex==0)//判断是否初次写入
-		{	
-			printf("1\r\n");		
-			PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart,17);//34
-			if(PushSta==HAL_OK)
-			{
-				printf("区头开始写入\r\n");
-			}
-			dblocptr->headinfo.loc_pushIndex+=1;	//入库索引
-			dblocptr->headinfo.loc_Conter+=1;		//入库总计数
-			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//向dblocptr->headinfo写入6*2个字节
-		}
+		printf("@1->%d\r\n",dblocptr->headinfo.loc_pushIndex);	
+
 #if timingPush==1
-		if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>0)//速度大于10km/h入库(100)
+		if(dblocptr->headinfo.loc_pushIndex!=0 && dblocptr->location.speed>100)//速度大于10km/h入库(100)
 #else
-		if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>10)//速度大于10km/h入库
+		if(dblocptr->temppush.loc_pushIndex!=0 && dblocptr->location.speed>100)//速度大于10km/h入库
 #endif
 		{
 		printf("2\r\n");	
@@ -106,9 +96,21 @@ void Database_Push(uint8_t object)
 			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//更新刻度
 			
 		}
+		else if(dblocptr->headinfo.loc_pushIndex==0)//判断是否初次写入
+		{		
+		printf("3\r\n");	
+			PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart,17);//34
+			if(PushSta==HAL_OK)
+			{
+				printf("区头开始写入\r\n");
+			}
+			dblocptr->headinfo.loc_pushIndex+=1;	//入库索引
+			dblocptr->headinfo.loc_Conter+=1;		//入库总计数
+			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo),LocDbHeadStart,6);//向dblocptr->headinfo写入6*2个字节
+		}
 		else if(timecount==4)//20min最少一条
 		{
-		printf("3\r\n");	
+		printf("4\r\n");	
 			timecount=0;
 			PushSta = Flash_WriteBytes((uint16_t*)&(dblocptr->location.alarmFlagH),LocDbBodyStart + (dblocptr->headinfo.loc_pushIndex*34),17);
 			dblocptr->headinfo.loc_pushIndex+=1;
@@ -117,14 +119,14 @@ void Database_Push(uint8_t object)
 		}
 		else
 		{
-		printf("4\r\n");	
+		printf("5\r\n");	
 			printf("未获取定位信息\r\n");
 		}
 	}
 
 	if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pushSize)//入库达边界值
 	{
-		printf("5\r\n");	
+		printf("6\r\n");	
 		Overwrite_loc=true;
 		dblocptr->headinfo.loc_pushIndex=0;
 		printf("@@入库操作,当前索引%d,达边界值返回覆写----%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_Conter);
@@ -132,7 +134,7 @@ void Database_Push(uint8_t object)
 	}
 	if(dblocptr->headinfo.loc_pushIndex>0)
 	{
-		printf("6\r\n");	
+		printf("7\r\n");	
 		printf("写入%d完成,准备写入->%d\r\n",dblocptr->headinfo.loc_pushIndex-1,dblocptr->headinfo.loc_pushIndex);
 	}
 }
@@ -153,26 +155,20 @@ void Database_Pull(uint8_t object)
 				
 		printf("3\r\n");
 				printf("库内已被覆写\r\n");
-				if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pullSize)//到达界限
+				if(dblocptr->headinfo.loc_pullIndex==0 && dblocptr->headinfo.loc_Conter>dblocptr->headinfo.loc_pullSize && !lastPull)//当前入库后的一组数据
 				{
 					
 		printf("4\r\n");
-					twowrite = false;
-					dblocptr->headinfo.loc_pullIndex=0;
-				}
-				else if(dblocptr->headinfo.loc_pullIndex==0)//当前入库后的一组数据
-				{
-					
-		printf("5\r\n");
 					twowrite = true;
 					printf("更新pullIndex\r\n");
 					dblocptr->headinfo.loc_pullIndex = dblocptr->headinfo.loc_pushIndex+1;
-
+					Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
+					Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
 				}
 				else if(dblocptr->headinfo.loc_pullIndex < dblocptr->headinfo.loc_pushIndex)//置0后
 				{
 					
-		printf("6\r\n");
+		printf("5\r\n");
 					printf("@@前出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
 					Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
 					dblocptr->headinfo.loc_pullIndex+=1;
@@ -181,8 +177,8 @@ void Database_Pull(uint8_t object)
 				else if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pushIndex)//置0后
 				{
 					
-		printf("7\r\n");
-					printf("@@0后出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
+		printf("6\r\n");
+					printf("@@0后出库操作,当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex);
 					Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
 					dblocptr->headinfo.loc_pullIndex+=1;
 					Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
@@ -191,28 +187,27 @@ void Database_Pull(uint8_t object)
 			else
 			{
 				
-		printf("8\r\n");
+		printf("7\r\n");
 				printf("库内未被覆写,出库\r\n");
 				Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
 				dblocptr->headinfo.loc_pullIndex+=1;
 				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
 			}
-			//*后一出库
-//			if(twowrite)
-//			{
-//				
-//		printf("9\r\n");
-//				printf("@@后出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
-//				Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
-//				dblocptr->headinfo.loc_pullIndex +=1;
-//				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
-//			}
-				
 		}
-		else if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pullIndex && Overwrite_loc  && dblocptr->headinfo.loc_Conter>=dblocptr->headinfo.loc_pushSize) //相同已返回总计数大于入库限制
+		if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pullSize)//到达界限
+		{
+			
+		printf("8\r\n");
+			twowrite = false;
+			lastPull = true;
+			dblocptr->headinfo.loc_pullIndex=0;
+			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
+			Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart + ((dblocptr->headinfo.loc_pullIndex)*34),17);//读取出库body信息
+		}
+		if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pullIndex && Overwrite_loc  && dblocptr->headinfo.loc_Conter>=dblocptr->headinfo.loc_pushSize) //相同已返回总计数大于入库限制
 		{
 			
-		printf("10\r\n");
+		printf("9\r\n");
 			printf("库内有数据并且都在头\r\n");
 			printf("@@出库操作,应出库%d当前索引%d\r\n",dblocptr->headinfo.loc_pushIndex,dblocptr->headinfo.loc_pullIndex);
 			dblocptr->headinfo.loc_pullIndex=dblocptr->headinfo.loc_pushIndex +1;
@@ -220,28 +215,35 @@ void Database_Pull(uint8_t object)
 			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
 		}
 		
-		else if(dblocptr->headinfo.loc_pullIndex > dblocptr->headinfo.loc_pullSize)
 		{
+			printf("10\r\n");
+			printf("@@出库操作当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex);
 			
-		printf("11\r\n");
-			dblocptr->headinfo.loc_pushIndex=0;
-			dblocptr->headinfo.loc_pullIndex=0;
-			Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
-		}
-		
-		if(dblocptr->headinfo.loc_pushIndex == dblocptr->headinfo.loc_pullIndex)
-		{
-		printf("12\r\n");
+			if(dblocptr->headinfo.loc_pullIndex == dblocptr->headinfo.loc_pullSize)
+			{
+			printf("11\r\n");
 
-				dblocptr->headinfo.loc_pushIndex=0;
-				dblocptr->headinfo.loc_pullIndex=0;
-				Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
-				printf("@@出库完成,库内数据更新!!!!\r\n");
-				Online=false;
-	
-		}			
-		printf("13\r\n");
-		printf("@@出库操作当前索引%d\r\n",dblocptr->headinfo.loc_pullIndex);
+					dblocptr->headinfo.loc_pushIndex=0;
+					dblocptr->headinfo.loc_pullIndex=0;
+					Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
+					printf("@@出库完成,库内数据更新!!!!\r\n");
+					Online=false;
+					lastPull=false;
+					Overwrite_loc=false;
+		
+			}
+			if(dblocptr->headinfo.loc_pullIndex == dblocptr->headinfo.loc_pushIndex)			
+			{
+			printf("12\r\n");
+					dblocptr->headinfo.loc_pushIndex=0;
+					dblocptr->headinfo.loc_pullIndex=0;
+					Flash_WriteBytes((uint16_t*)&(dblocptr->headinfo.loc_pushIndex),LocDbHeadStart,4);//更新刻度
+					printf("@@出库完成,库内数据更新!!!!\r\n");	
+					Online=false;
+					lastPull=false;
+					Overwrite_loc=false;
+			}
+		}
 	}
 }
 
@@ -334,10 +336,9 @@ void TestPrintStruct(DatabaseLoc *ptr,uint8_t temppush,uint8_t temppull)
 uint16_t timecountSec=0;
 uint16_t timecountMin=0;
 uint16_t timecount=0;
-
 void PushpullWork(void)
 {
-
+	dblocptr->location.statusFlagL = (0x2<<8)&0xFF00;//定义状态
 #if timingPush==1
 	//if(Offline && timecountMin==5)//5min入库一个信息
 	if(Offline && timecountMin==1)//1min入库一个信息
@@ -345,18 +346,20 @@ void PushpullWork(void)
 	{
 		timecountMin=0;//5min清0
 		Database_Push(0);//0:Loc信息
-
 	}
 	else if(!Offline && Online)
 	{
-		Database_Pull(0);//读取
+		Flash_ReadBytes((uint16_t*)&(dblocptr->temppull.alarmFlagH),LocDbBodyStart,17);//读取出库body信息
 		if(lastPull)
-		{lastPull=false;}
-		else
 		{
+			//lastPull=false;
+		}
+		else if(dblocptr->temppull.alarmFlagH!=0xFFFF)
+		{
+			printf("库内无有效数据\r\n");
+			Database_Pull(0);//读取
 			tt808FsFunc((uint8_t*)&(dblocptr->temppull.alarmFlagH), 39, MessageID_Retrans);//上传
 		}
-		
 	}
 }
 

+ 7 - 4
Core/Src/freertos.c

@@ -162,6 +162,7 @@ void StartScanKeyTask(void const * argument)
     OLED_Refresh(); 				//刷新界面
 	ReU5Proces();
 	  
+	Lock_OandC();
 	Test485Re();//模拟入口
 	  
 	  
@@ -204,7 +205,7 @@ void StarBT4GTask(void const * argument)
     osDelay(1);	
 	{
 
-		//Printf_u4u5logbyU1();			//打印log0
+		Printf_u4u5logbyU1();			//打印log0
 		ReMIPURC();						//各式接收处理1
 		ReU4Proces();					//2
 		MIPURCHandle();					//平台接收处理(鉴权应答等)3 
@@ -257,23 +258,25 @@ void StartloginfoTaskTask(void const * argument)
 		USART_SendString(&huart4, "AT+CSQ\r\n");
 		USART_SendString(&huart4, "AT+MGNSSLOC\r\n");
 		
-		PushpullWork();
 	}
 #endif
 	
+	PushpullWork();
+	
+	
 	//*30s上传信息
 	nomalCount+=1;
 	if(nomalCount==3)
 	{
 		nomalCount=0;
-		if(uploaweork)
+		if(uploaweork && dblocptr->location.longitudeH!=0)
 		{
 			tt808FsFunc((uint8_t*)&(dblocptr->location.alarmFlagH), 34, MessageID_location);
 		}
 	}
 #if timingPush ==1
 	timecountSec+=1;
-	if(timecountSec==6)//1min
+	if(timecountSec==30)//5min
 	{
 		timecountSec=0;//清0
 		timecountMin+=1;//加1min

+ 9 - 1
Core/Src/interface.c

@@ -198,7 +198,7 @@ void Jump_interface(void)
 				OLED_ShowPicture(0,0,128,64,BMP7,1);    
 				if(!btconn_dtu)
 				{
-					OLED_ShowString(70, 0, "NoConnect", 12, 1);
+					//OLED_ShowString(70, 0, "NoConnect", 12, 1);
 				}
 				break;
 			}
@@ -584,6 +584,14 @@ void WarningTip(void)
 			OLED_ShowChinese(64,32,44,16,1);//³É
 			OLED_ShowChinese(81,32,45,16,1);//¹¦
             break;
+		}
+		case SendOK:
+		{
+			OLED_ShowChinese(30,32,52,16,1);//²Ù
+			OLED_ShowChinese(47,32,53,16,1);//×÷
+			OLED_ShowChinese(64,32,54,16,1);//³É
+			OLED_ShowChinese(81,32,55,16,1);//¹¦
+            break;	
 		}
 		case Fail4G:
 		{

+ 2 - 1
Core/Src/main.c

@@ -54,6 +54,7 @@ void Jump_interface_PDA(void);
 uint16_t sys_mode[2];
 bool wdiFlag = false;
 
+char version[] = "\r\nVER:dtu-20240419-1434\r\n";
 /* USER CODE END PM */
 
 /* Private variables ---------------------------------------------------------*/
@@ -125,7 +126,7 @@ int main(void)
   __HAL_UART_ENABLE_IT(&huart5, UART_IT_RXNE);//¿ªÆôBT½ÓÊÕÖжÏ
 
   START_PROCESS();
-  Database_init(0x5,0x5,0x5,0x5);//760
+  Database_init(0x760,0x760,0x5,0x5);//760
   
   MBA32A_Init();
   reset4Gmodule = true;

+ 80 - 7
Core/Src/mba32a.c

@@ -82,7 +82,6 @@ void Start_Read_resetFlag16(void)
   */
 void MBA32A_Init(void)
 {
-	
 	btframe.userId 	  = 0x64747531; 
 	btframe.Autoseal  = 0xFF; //自动施封时间
 	
@@ -184,7 +183,7 @@ void USART_SendString(UART_HandleTypeDef *huart,char *str)
 {
 	//printf("\r\nAT_CMD:\t");
 	HAL_UART_Transmit(huart, (uint8_t*)str, strlen(str), 0xFFFF);		//工作信息串口发送
-    //HAL_UART_Transmit(&huart1, (uint8_t*)str, strlen(str), 0xFFFF);		//485打印log
+    HAL_UART_Transmit(&huart1, (uint8_t*)str, strlen(str), 0xFFFF);		//485打印log
     //HAL_UART_Transmit(&huart3, (uint8_t*)str, strlen(str), 0xFFFF);	//TTL打印log
 	
 }
@@ -239,7 +238,7 @@ void event_lock(void)
   */
 void close_lock(void)		//蓝牙关锁信息帧
 {
-	Time_inquiry(1);
+	printf("施封\r\n");
 	uint8_t header[2] 	= {0x66, 0x01};//Jl_lock帧头
 	uint8_t close_CMD[] = {0x03, 0x0B, 0x00,0x00,0x00,0x00,		0x00,0x00,0x00,0x00, \
 												0x00,0x00,0x00,0x00};//关锁命令帧
@@ -293,7 +292,7 @@ void open_lock(void)			//
 {
 	uint8_t header[2] 	= {0x66, 0x01};//Jl_lock帧头
 	uint8_t open_CMD[] = {0x02, 0x0C, 	0x00,0x00,0x00,0x00,		0x00,0x00,0x00,0x00, \
-												0x00,0x00,0x00,0x00,   0x00};//开锁命令帧
+	0x00,0x00,0x00,0x00,   0x00};//开锁命令帧
 	
 	uint32_t serialNum;
 	if(menu.current==4)
@@ -335,6 +334,9 @@ void open_lock(void)			//
 	//Echo_BT(20);
 }
 uint16_t serialNum1[2];
+uint16_t serialNum2[2];
+uint16_t serialNum3[2];
+uint16_t serialNum4[2];
 void Lock_OandC(void)
 {
     if(L1Working)		//在四个界面,按下确认
@@ -342,11 +344,15 @@ void Lock_OandC(void)
 		if(presjfUp==1)//施封
 		{
 			close_lock(); //施封操作需要写入0x40
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
 
 		}
 		else if(presjfUp==0)//施封
 		{
 			open_lock(); //解封操作 需要写入0x60
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
 
 
 		}
@@ -355,9 +361,76 @@ void Lock_OandC(void)
 		
 		Flash_WriteBytes(serialNum1,serialNum1Addr,2);
 		L1Working = false;
+	}
+    if(L2Working)		//在四个界面,按下确认
+    {	
+		if(presjfUp==1)//施封
+		{
+			close_lock(); //施封操作需要写入0x40
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
+
+		}
+		else if(presjfUp==0)//施封
+		{
+			open_lock(); //解封操作 需要写入0x60
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
+
+
+		}
+		serialNum2[0] = (uint16_t)((btframe.serialNum2 >> 24) & 0xff) << 8 | ((btframe.serialNum2 >> 16) & 0xff);
+		serialNum2[1] = (uint16_t)((btframe.serialNum2 >> 8)  & 0xff) << 8 | (btframe.serialNum2 & 0xff);
 		
+		Flash_WriteBytes(serialNum2,serialNum2Addr,2);
+		L2Working = false;
 	}
+    if(L3Working)		//在四个界面,按下确认
+    {	
+		if(presjfUp==1)//施封
+		{
+			close_lock(); //施封操作需要写入0x40
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
 
+		}
+		else if(presjfUp==0)//施封
+		{
+			open_lock(); //解封操作 需要写入0x60
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
+
+
+		}
+		serialNum3[0] = (uint16_t)((btframe.serialNum3 >> 24) & 0xff) << 8 | ((btframe.serialNum3 >> 16) & 0xff);
+		serialNum3[1] = (uint16_t)((btframe.serialNum3 >> 8)  & 0xff) << 8 | (btframe.serialNum3 & 0xff);
+		
+		Flash_WriteBytes(serialNum3,serialNum3Addr,2);
+		L3Working = false;
+	}
+    if(L4Working)		//在四个界面,按下确认
+    {	
+		if(presjfUp==1)//施封
+		{
+			close_lock(); //施封操作需要写入0x40
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
+
+		}
+		else if(presjfUp==0)//施封
+		{
+			open_lock(); //解封操作 需要写入0x60
+			printf("发送施封完成\r\n");
+			tipsflag = SendOK;
+
+
+		}
+		serialNum4[0] = (uint16_t)((btframe.serialNum4 >> 24) & 0xff) << 8 | ((btframe.serialNum4 >> 16) & 0xff);
+		serialNum4[1] = (uint16_t)((btframe.serialNum4 >> 8)  & 0xff) << 8 | (btframe.serialNum4 & 0xff);
+		
+		Flash_WriteBytes(serialNum4,serialNum4Addr,2);
+		L4Working = false;
+	}
 }
 
 
@@ -388,16 +461,16 @@ void ReU5Proces(void)
 		memset(autoRe,0,1024);
 	}
 	else if(autoRe[1]==0x43 && autoRe[2]==0x4F && autoRe[3]==0x4E && autoRe[4]==0x4E && autoRe[5]==0x45 && autoRe[6]==0x43 && autoRe[7]==0x54 && autoRe[8]==0x45 && autoRe[9]==0x44 \
-		&& autoRe[10]==0x3A)//CONNECTED:1 做从设备  0:做主设备
+		&& autoRe[10]==0x3A)//CONNECTED:1 做从设备  0:做主设备autoRe[11]
 	{
-		if(sys_mode[1]==DTU_MODE && autoRe[11]==0x31)
+		if(sys_mode[1]==DTU_MODE)
 		{
 			tipsflag = ConnOK;
 			menu.current = 0xBB;
 			btconn_dtu=true;
 			refresh=true;
 		}
-		else if(sys_mode[1]==PDA_MODE && autoRe[11]==0x30)
+		else if(sys_mode[1]==PDA_MODE)
 		{
 			tipsflag = ConnOK;
 			refresh=true;

+ 60 - 58
Core/Src/ml307a.c

@@ -72,9 +72,6 @@ void ML307A_Init(void)
 		ptr += sprintf(ptr, "%d", ipaddr.IP3);	
 	}
 
-	
-	
-
 	printf("\t###02\t4G_init...%d\r\n",resetcount_4g); 
 	sendCmd_4G("AT+MGNSS=0\r\n", "OK", 1, 1);//关闭MGNSS
 	switch(step4g)
@@ -213,65 +210,65 @@ void ML307A_Init(void)
 			}
 		}
 	}
-	else if(sys_mode[0]==DTU_MODE)
-	{
-		sys_mode[1]=DTU_MODE;
-		if(sendCmd_BT("AT+ADV=1\r\n","OK",1,1))//开启广播
-		{
-			printf("开启广播\r\n");
-			
-			USART_SendString(&huart5, "AT+DISCONN=1\r\n");
-			menu.current=0;
-		}
-		else if(!module4G_F)
-		{
-			menu.current=0xBB;
-			if(tipsflag == NoSIM)
-			{
-				tipsflag = NoSIM;
-			}
-			else
-			{
-				tipsflag = Fail4G;
-			}
-		}
-		else
-		{
-			//Todo
-		}
-		
-	}
-	else if(sys_mode[0]==PDA_MODE)
-	{
-		sys_mode[1]=PDA_MODE;
-		if(sendCmd_BT("AT+ADV=0\r\n","OK",1,1))//关闭广播
-		{
-			USART_SendString(&huart5, "AT+DISCONN=0\r\n");
-			printf("关闭广播\r\n");
-			menu.current=0;
-		}
-		else if(!module4G_F)
-		{
-			menu.current=0xBB;
-			if(tipsflag == NoSIM)
-			{
-				tipsflag = NoSIM;
-			}
-			else
-			{
-				tipsflag = Fail4G;
-			}
-		}
-		else
-		{
-			//Todo
-		}
-	}
+	menu.current=0;//默认进入DTU
+//	else if(sys_mode[0]==DTU_MODE)
+//	{
+//		sys_mode[1]=DTU_MODE;
+//		if(sendCmd_BT("AT+ADV=1\r\n","OK",1,1))//开启广播
+//		{
+//			printf("开启广播\r\n");
+//			
+//			USART_SendString(&huart5, "AT+DISCONN=1\r\n");
+//			menu.current=0;
+//		}
+//		else if(!module4G_F)
+//		{
+//			menu.current=0xBB;
+//			if(tipsflag == NoSIM)
+//			{
+//				tipsflag = NoSIM;
+//			}
+//			else
+//			{
+//				tipsflag = Fail4G;
+//			}
+//		}
+//		else
+//		{
+//			//Todo
+//		}
+//		
+//	}
+//	else if(sys_mode[0]==PDA_MODE)
+//	{
+//		sys_mode[1]=PDA_MODE;
+//		if(sendCmd_BT("AT+ADV=0\r\n","OK",1,1))//关闭广播
+//		{
+//			USART_SendString(&huart5, "AT+DISCONN=0\r\n");
+//			printf("关闭广播\r\n");
+//			menu.current=0;
+//		}
+//		else if(!module4G_F)
+//		{
+//			menu.current=0xBB;
+//			if(tipsflag == NoSIM)
+//			{
+//				tipsflag = NoSIM;
+//			}
+//			else
+//			{
+//				tipsflag = Fail4G;
+//			}
+//		}
+//		else
+//		{
+//			//Todo
+//		}
+//	}
 	refresh=true;	
 
 }
 
-
 /**
   * @breaf 4G发送串口命令
   */
@@ -322,6 +319,11 @@ void Pre_processing_4G(void)//
 		tt808FsFunc(ICCID,22,MessageID_authentication);
 #endif
 	} 
+	if(!Online)
+	{
+		printf("未连接平台\r\n");
+		reconn();//重连
+	}
 }
 
 

+ 69 - 45
Core/Src/tt808.c

@@ -489,9 +489,9 @@ void Test485Re(void)
 			memset(U1_485recvBuff,0,BUFFER_SIZE);
 			printf("更新定位刻度\r\n");
 	 }	
-	 else if(strncmp((char*)U1_485recvBuff, "DTU+IME",  strlen("DTU+IME"))==0)//修改IME号
+	 else if(strncmp((char*)U1_485recvBuff, "DTU+JT808_IMEI=",  strlen("DTU+JT808_IMEI="))==0)//修改IME号
 	 {
-		memcpy(DTUurc1,&U1_485recvBuff[8],12);
+		memcpy(DTUurc1,U1_485recvBuff+15,12);
 		
 		const char *hex = (const char *)DTUurc1;  // 将 uint8_t * 转换为 const char *
 		int size = strlen(hex) / 2;  // 计算二进制数据的长度
@@ -503,10 +503,11 @@ void Test485Re(void)
 		//memset(DTUurc1,0,100);
 		memset(U1_485recvBuff,0,BUFFER_SIZE);
 		reIME = true;
+		HAL_Delay(500);
 	 }
-	 else if(strncmp((char*)U1_485recvBuff, "DTU+IP",  strlen("DTU+IP"))==0)
+	 else if(strncmp((char*)U1_485recvBuff, "DTU+JT808_SERVER=",  strlen("DTU+JT808_SERVER="))==0)
 	 {
-		memcpy(input_strings,U1_485recvBuff+7,20);
+		memcpy(input_strings,U1_485recvBuff+17,20);
 
 		extractStringPoint(input_strings,reIp0,0,1);
 		extractStringPoint(input_strings,reIp1,1,2);
@@ -537,6 +538,11 @@ void Test485Re(void)
 		printf("即将重启\r\n");
 		wdiFlag = true;
 	 }
+	 else if(strncmp((char*)U1_485recvBuff, "DTU+VER=?",  strlen("DTU+VER=?"))==0)
+	 {
+		printf("%s\r\n",version);
+		memset(U1_485recvBuff,0,BUFFER_SIZE);
+	 }
 }
 
 //*工作命令
@@ -545,10 +551,7 @@ void ReMIPURC(void)
 //*设备上线,发送成功
 	 if(strncmp((char*)U4_4GrecvBuff, "+MIPOPEN: 1,0",  strlen("+MIPOPEN: 1,0"))==0)//连接平台
 	 {
-		 Offline=false;	//待判定假消息
-		 Online = true;	//待判定假消息
-		 uploaweork=true;
-		 printf("@TCP连接成功!!\r\n");
+
 		 memset(U4_4GrecvBuff,0,BUFFER_SIZE);
 	 }	 
 ///*定位信息(MGNSS)
@@ -580,7 +583,7 @@ void ReMIPURC(void)
 		 printf("@未发送成功,平台断开连接\r\n");
 		 memset(U4_4GrecvBuff,0,BUFFER_SIZE);
 		 uploaweork = false;
-		 //reconn();//重连
+		 reconn();//重连
 	 }
 	 else if((strncmp((char*)U4_4GrecvBuff, "+CPIN: SIM REMOVED", strlen("+CPIN: SIM REMOVED"))==0) || (strncmp((char*)U4_4GrecvBuff, "+CME ERROR: 10", strlen("+CME ERROR: 10"))==0) )//无SIM
 	 {
@@ -592,8 +595,8 @@ void ReMIPURC(void)
 		tipsflag = NoSIM;
 		refresh=true;
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-		 uploaweork = false;
-		 reconn();//重连
+		uploaweork = false;
+		reconn();//重连
 	 }
 	 
 	 else if((strncmp((char*)U4_4GrecvBuff, "+MIPCALL: 1,0", strlen("+MIPCALL: 1,0"))==0))//意外断开平台连接!!!!//TCP未知错误
@@ -603,28 +606,28 @@ void ReMIPURC(void)
 		signal = false;
 		printf("@与平台断开连接\r\n");
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-		 uploaweork = false;
-		 reconn();//重连
+		uploaweork = false;
+		reconn();//重连
 		 
 	 }
 	 else if( (strncmp((char*)U4_4GrecvBuff, "+CME ERROR: 550", strlen("+CME ERROR: 550"))==0))
 	 {
-		//Offline=true;
-		//signal = false;
+		Offline=true;
+		signal = false;
 		printf("@未发送成功->TCP/IP未知错误\r\n");
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-		 //uploaweork = false;
-		 //reconn();//重连
+		uploaweork = false;
+		reconn();//重连
 		 
 	 }
 	 else if((strncmp((char*)U4_4GrecvBuff, "+MIPOPEN: 1,571", strlen("+MIPOPEN: 1,571"))==0))//PDP激活失败
 	 {
 		//TODO
-		//Offline=true;
+		Offline=true;
 		printf("@未发送成功,PDP激活失败\r\n");
 		memset(U4_4GrecvBuff,0,BUFFER_SIZE);
-		 //uploaweork = false;
-		// reconn();//重连
+		uploaweork = false;
+		reconn();//重连
 	 }
 #endif
 	 else if(U4_4GrecvBuff[1]== 0x43 && U4_4GrecvBuff[2]== 0x53 && U4_4GrecvBuff[3]== 0x51)//CSQ 信号
@@ -683,6 +686,10 @@ void MIPURCHandle(void)
 				if(YESorNO==YES)
 				{
 					printf("@心跳应答yes\r\n");
+					Offline=false;	//待判定假消息
+					Online = true;	//待判定假消息
+					uploaweork=true;
+					printf("@TCP连接成功!!\r\n");
 				}
 				else if(YESorNO==NO)
 				{
@@ -729,7 +736,9 @@ void MIPURCHandle(void)
 		phonenull =false;
 		Flash_WriteBytes(phonenum,phoneNumADDR,3);//更新ime
 		//memset(DTUurc,0,100);
-		printf("IME设置\r\n");
+		printf("IME设置完成\r\n");
+		printf("即将重启\r\n");
+		wdiFlag = true;
 	 }
 }
 
@@ -793,30 +802,30 @@ void ReU4Proces(void)
 		
 		dblocptr->location.speed  = (uint16_t)dSpeed;
 		
-		if(dSpeed !=0 && dlongitude!=0 && dlatitude!=0) //有数据进行更新!
-		{
-			signal = true;		
-			if(menu.current == 0xBB && tipsflag!= ConnOK)
-			{
-				menu.current = 0;
-				refresh=true;
-			}
-			else if(tipsflag == Back && signal)
-			{
-				menu.current = 0;
-				refresh=true;
-			}
-		}
- 		else
-		{
-			if(signal && sys_mode[0]!=0xFFFF)
-			{ 
-				signal = false;
-				menu.current = 0xBB;
-				tipsflag = Nosignal;
-				refresh=true;
-			}
-		}
+//		if(dSpeed !=0 && dlongitude!=0 && dlatitude!=0) //有数据进行更新!
+//		{
+//			signal = true;		
+//			if(menu.current == 0xBB && tipsflag!= ConnOK)
+//			{
+//				//menu.current = 0;
+//				refresh=true;
+//			}
+//			else if(tipsflag == Back && signal)
+//			{
+//				//menu.current = 0;
+//				refresh=true;
+//			}
+//		}
+// 		else
+//		{
+//			if(signal && sys_mode[0]!=0xFFFF)
+//			{ 
+//				signal = false;
+//				menu.current = 0xBB;
+//				tipsflag = Nosignal;
+//				refresh=true;
+//			}
+//		}
 		memset(MGNSSLOC,0,100);
 
 	}
@@ -837,3 +846,18 @@ void ReU4Proces(void)
 //+MIPURC: "disconn",1,1
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+//*离线蓝牙锁
+
+