瀏覽代碼

backup0425

zack 1 年之前
父節點
當前提交
d74983113c
共有 15 個文件被更改,包括 397 次插入2136 次删除
  1. 3 11
      Core/Inc/ConfigMacros.h
  2. 18 1
      Core/Inc/key.h
  3. 1 0
      Core/Inc/main.h
  4. 50 0
      Core/Inc/oledfont.h
  5. 1 1
      Core/Inc/tt808.h
  6. 24 7
      Core/Src/freertos.c
  7. 86 2030
      Core/Src/interface.c
  8. 148 11
      Core/Src/key.c
  9. 25 16
      Core/Src/main.c
  10. 15 8
      Core/Src/mba32a.c
  11. 1 1
      Core/Src/ml307a.c
  12. 2 0
      Core/Src/oled.c
  13. 13 43
      Core/Src/tt808.c
  14. 0 2
      Core/Src/usart.c
  15. 10 5
      MDK-ARM/dtu.uvoptx

+ 3 - 11
Core/Inc/ConfigMacros.h

@@ -240,9 +240,9 @@ typedef struct
 	char SN7name[5];
 	char SN8name[5];
 	//AT连接字符串
-	char SNCONN[30];
-	char SNED[30];
-	char SNDIS[30];
+	char* SNCONN;
+	char* SNED;
+	char* SNDIS;
 	//Status
 	uint8_t L1status;
 	uint8_t L2status;
@@ -284,14 +284,6 @@ struct keys
 
 
 
-// 定义一个结构体存储对应关系
-typedef struct {
-    char *command;
-    char *connected_msg;
-    char *disconnected_msg;
-    uint64_t mac;
-} MenuInfo;
-
 typedef struct
 {
     uint32_t serialNum1;	//4字节流水号

+ 18 - 1
Core/Inc/key.h

@@ -12,6 +12,23 @@ void WritekeyInfo(void);
 
 
 extern char macStr[20][13]; 
+extern uint8_t L1Work_open;//1:开锁
+extern uint8_t L1Work_close;//1:关锁
+extern uint8_t L2Work_open ;//1:开锁
+extern uint8_t L2Work_close;//1:关锁
+extern uint8_t L3Work_open ;//1:开锁
+extern uint8_t L3Work_close;//1:关锁
+extern uint8_t L4Work_open ;//1:开锁
+extern uint8_t L4Work_close;//1:关锁
+extern uint8_t L5Work_open ;//1:开锁
+extern uint8_t L5Work_close;//1:关锁
+extern uint8_t L6Work_open ;//1:开锁
+extern uint8_t L6Work_close;//1:关锁
+extern uint8_t L7Work_open ;//1:开锁
+extern uint8_t L7Work_close;//1:关锁
+extern uint8_t L8Work_open ;//1:开锁
+extern uint8_t L8Work_close;//1:关锁
+
 
 extern uint8_t preCurrent;
 extern uint32_t enterInterface_time;
@@ -21,7 +38,7 @@ extern bool L1work ;
 extern bool L2work ;
 extern bool L3work ;
 extern bool L4work ;
-
+void ATconnProcess(uint64_t addr,char* conn,char* ed);
 #endif /*__KEY_H*/
 
 

+ 1 - 0
Core/Inc/main.h

@@ -91,6 +91,7 @@ void ReadSNname(void);
 
 /* USER CODE BEGIN Private defines */
 extern char version[];
+extern bool wdiFlag;
 /* USER CODE END Private defines */
 
 #ifdef __cplusplus

+ 50 - 0
Core/Inc/oledfont.h

@@ -461,6 +461,32 @@ const unsigned char Hzk1[][32]={
 {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*/
+{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"一",56*/
+{0x40,0x30,0xEF,0x24,0x24,0x80,0xE4,0x9C,0x10,0x54,0x54,0xFF,0x54,0x7C,0x10,0x00,0x01,0x01,0x7F,0x21,0x51,0x26,0x18,0x27,0x44,0x45,0x45,0x5F,0x45,0x45,0x44,0x00},/*"键",57*/
+
+
+{0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,0x00,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00},/*"正",58*/
+{0x08,0x08,0x88,0xC8,0x38,0x0C,0x0B,0x08,0x08,0xE8,0x08,0x08,0x08,0x08,0x08,0x00,0x02,0x01,0x00,0xFF,0x40,0x41,0x41,0x41,0x41,0x7F,0x41,0x41,0x41,0x41,0x40,0x00},/*"在",59*/
+{0x00,0x00,0xF8,0x88,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x00,0x00,0x00,0x1F,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0x1F,0x00,0x00,0x00},/*"申",60*/
+{0x40,0x42,0xCC,0x00,0x00,0x44,0x54,0x54,0x54,0x7F,0x54,0x54,0x54,0x44,0x40,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x15,0x15,0x15,0x55,0x95,0x7F,0x00,0x00,0x00},/*"请",61*/
+{0x10,0x10,0xD0,0xFF,0x90,0x10,0x02,0x1E,0xE2,0x02,0x02,0x02,0xE2,0x1E,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x83,0x80,0x40,0x20,0x13,0x0C,0x13,0x20,0x40,0x80,0x00},/*"权",62*/
+{0x00,0xFE,0x22,0x5A,0x86,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x00,0xFF,0x04,0x08,0x07,0x00,0xFF,0x40,0x20,0x03,0x0C,0x14,0x22,0x41,0x40,0x00},/*"限",63*/
+	
+
+{0x40,0x42,0xCC,0x00,0x00,0x44,0x54,0x54,0x54,0x7F,0x54,0x54,0x54,0x44,0x40,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x15,0x15,0x15,0x55,0x95,0x7F,0x00,0x00,0x00},/*"请",64*/
+{0xFC,0x04,0x04,0xFC,0x20,0x10,0xE8,0x27,0x24,0xE4,0x34,0x2C,0xE0,0x00,0x00,0x00,0x0F,0x04,0x04,0x0F,0x80,0x84,0x47,0x24,0x1C,0x07,0x1C,0x24,0x47,0x84,0x84,0x00},/*"唤",65*/
+{0xF2,0x12,0xFE,0x12,0xFE,0x12,0xF2,0x00,0x00,0xBE,0x2A,0xEA,0x2A,0x3E,0x00,0x00,0xFF,0x4A,0x49,0x48,0x49,0x49,0xFF,0x00,0x42,0x49,0x49,0x7F,0x49,0x49,0x40,0x00},/*"醒",66*/
+{0x04,0x04,0xE4,0x04,0x0F,0xF4,0x04,0x04,0xF4,0x44,0xCF,0x44,0x44,0x44,0x04,0x00,0x40,0x40,0x7D,0x44,0x44,0x7D,0x44,0x45,0x44,0x7C,0x44,0x45,0x7C,0x40,0x40,0x00},/*"蓝",67*/
+{0x00,0x00,0xC2,0xB2,0x82,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0x82,0x80,0x00,0x00,0x20,0x20,0x10,0x08,0x04,0x02,0x41,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00},/*"牙",68*/
+{0x20,0x10,0x2C,0xE7,0x24,0x24,0x00,0xE2,0x2C,0x20,0xBF,0x20,0x28,0xE6,0x00,0x00,0x01,0x01,0x01,0x7F,0x21,0x11,0x80,0x4F,0x20,0x10,0x0F,0x10,0x20,0x4F,0x80,0x00},/*"锁",69*/
+{0x90,0x52,0x34,0x10,0xFF,0x10,0x34,0x52,0x80,0x70,0x8F,0x08,0x08,0xF8,0x08,0x00,0x82,0x9A,0x56,0x63,0x22,0x52,0x8E,0x00,0x80,0x40,0x33,0x0C,0x33,0x40,0x80,0x00},/*"数",70*/
+	
+	
+	
+{0x00,0x00,0xFC,0x24,0x24,0x22,0xE3,0x02,0xFC,0x44,0x44,0x42,0xC3,0x42,0x40,0x00,0x40,0x30,0x0F,0x02,0x02,0x82,0x43,0x30,0x0F,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},/*"所",71*/
+{0x04,0x04,0x04,0x84,0xE4,0x3C,0x27,0x24,0x24,0x24,0x24,0xE4,0x04,0x04,0x04,0x00,0x04,0x02,0x01,0x00,0xFF,0x09,0x09,0x09,0x09,0x49,0x89,0x7F,0x00,0x00,0x00,0x00},/*"有",72*/
+{0x00,0x00,0xE2,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x78,0x00,0x00},/*"已",73*/
+
 
 
 
@@ -517,6 +543,14 @@ const unsigned char Hzk5[][24]={	//12*12
 {0x00,0xFC,0x24,0x24,0xE4,0x04,0xFF,0x04,0x85,0x66,0x04,0x00,0x08,0x07,0x00,0x02,0x0B,0x04,0x02,0x01,0x02,0x04,0x0F,0x00},/*"成",24*/
 {0x04,0x04,0xFC,0x04,0x04,0x08,0xFF,0x08,0x08,0x08,0xF8,0x00,0x02,0x02,0x01,0x09,0x05,0x03,0x00,0x00,0x08,0x08,0x07,0x00},/*"功",25*/
 	
+	
+{0x00,0xF2,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x7E,0x00,0x00,0x00,0x07,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0E,0x00},/*"已",26*/
+{0xDC,0xB3,0x88,0x00,0x24,0xFF,0x24,0x00,0xFE,0x32,0xCE,0x00,0x04,0x04,0x02,0x08,0x05,0x03,0x01,0x00,0x0F,0x02,0x01,0x00},/*"绑",27*/
+{0x2C,0x24,0xA4,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x2C,0x00,0x08,0x04,0x03,0x04,0x08,0x0F,0x09,0x09,0x09,0x09,0x08,0x00},/*"定",28*/
+{0x94,0xF3,0x92,0x00,0xF2,0x14,0x10,0xDF,0x10,0x14,0xF2,0x00,0x00,0x0F,0x04,0x08,0x09,0x04,0x02,0x01,0x02,0x04,0x09,0x00},/*"锁",29*/
+{0x88,0x88,0xFF,0x48,0x70,0x57,0x75,0x85,0x75,0x57,0x70,0x00,0x00,0x08,0x0F,0x00,0x09,0x05,0x03,0x0F,0x03,0x05,0x09,0x00},/*"操",30*/
+{0x20,0x10,0xFC,0x03,0x08,0x07,0xFC,0x24,0x24,0x24,0x04,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0x01,0x01,0x01,0x01,0x00},/*"作",31*/
+	
 
 	
 };
@@ -550,8 +584,14 @@ const unsigned char Hzk6[][28]={	//14*14
 
 {0x08,0x08,0xFF,0x88,0x00,0x70,0x57,0x75,0x05,0x75,0x57,0x70,0x00,0x00,0x21,0x21,0x3F,0x00,0x12,0x12,0x0A,0x06,0x3F,0x06,0x0A,0x12,0x12,0x00},/*"操",20*/
 {0x40,0x20,0xF8,0x07,0x20,0x18,0x07,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x3F,0x04,0x04,0x04,0x04,0x04,0x00},/*"作",21*/
+
+{0x00,0xF2,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x7E,0x00,0x00,0x00,0x1F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x38,0x00},/*"已",22*/
+{0x90,0xDC,0xB3,0x98,0x04,0x24,0xFF,0x24,0x00,0xFE,0x02,0x62,0x9E,0x00,0x08,0x08,0x04,0x04,0x21,0x11,0x0F,0x01,0x00,0x3F,0x08,0x08,0x07,0x00},/*"绑",23*/
+{0x0C,0x04,0x24,0x24,0x24,0x25,0xE6,0x24,0x24,0x24,0x24,0x04,0x0C,0x00,0x20,0x10,0x0F,0x10,0x20,0x20,0x3F,0x22,0x22,0x22,0x22,0x20,0x20,0x00},/*"定",24*/
+{0x10,0x28,0xE7,0x24,0x24,0x00,0xF2,0x14,0x10,0xDF,0x10,0x14,0xF2,0x00,0x01,0x01,0x3F,0x11,0x09,0x20,0x27,0x10,0x08,0x07,0x08,0x10,0x27,0x00},/*"锁",25*/
 	
 
+
 	
 };
 
@@ -577,6 +617,16 @@ const unsigned char Hzk7[][54]={	//18*18
 {0x00,0x00,0x10,0xE0,0xFF,0x90,0x90,0x50,0x20,0x98,0x87,0x86,0x88,0x90,0x20,0x60,0x00,0x00,0x00,0x08,0x06,0x01,0xFF,0x00,0x03,0x84,0xB8,0x80,0x86,0x98,0xC0,0xB9,0x86,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"检",13*/
 };
 
+const unsigned char Hzk8[][28]={	//15*15
+
+{0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"一",0*/
+{0x40,0x30,0xCE,0x28,0x28,0x68,0x58,0xD4,0x54,0xFE,0x54,0x78,0x10,0x00,0x00,0x01,0x3F,0x31,0x29,0x16,0x0E,0x15,0x25,0x3F,0x25,0x25,0x20,0x00},/*"键",1*/
+{0x00,0x00,0xF0,0x4E,0xD0,0x08,0x30,0xD8,0x8E,0xF8,0x48,0xC8,0x08,0x00,0x00,0x30,0x1F,0x20,0x1F,0x01,0x01,0x3F,0x20,0x2F,0x24,0x27,0x38,0x00},/*"施",2*/
+{0x00,0x20,0xD8,0xA6,0xF8,0xE8,0x20,0x20,0xDA,0x04,0xC2,0x32,0x0C,0x00,0x00,0x38,0x07,0x02,0x1F,0x3F,0x04,0x07,0x04,0x05,0x1F,0x05,0x04,0x00},/*"解",3*/
+{0x00,0x40,0x48,0x88,0x7E,0x48,0x40,0x20,0xA0,0x20,0xFE,0x22,0x10,0x00,0x00,0x22,0x12,0x12,0x1F,0x12,0x12,0x00,0x01,0x20,0x3F,0x00,0x00,0x00},/*"封",4*/	
+	
+	
+};
 
 
 

+ 1 - 1
Core/Inc/tt808.h

@@ -31,7 +31,7 @@ extern char MAC4temp[13];
 void Regular_reporting_Loc(void);
 void pushpullWork(void);
 extern bool Retrans;
-
+void AtPRocess(char *value, char *conn,char *connected,char* disconn) ;
 extern MacSet *macsetptr;
 extern bool Offline ;
 void Test485Re(void);

+ 24 - 7
Core/Src/freertos.c

@@ -160,9 +160,9 @@ void StartScanKeyTask(void const * argument)
 	updatekeystate(); 				//扫描键值
     Jump_interface(); 		    	//跳转界面
     OLED_Refresh(); 				//刷新界面
-	Test485Re();//485CMD
-	ReBTcall();//蓝牙回应
 	  
+		Test485Re();//485CMD
+		ReBTcall();//蓝牙回应
 	OpenCloseLock();
 	 
   }
@@ -186,6 +186,8 @@ void StarBT4GTask(void const * argument)
     osDelay(1);	
 	{
 		Printf_u4u5logbyU1();			//打印log0
+		
+		
 		ReMIPURC();						//各式接收处理1
 		ReU4Proces();					//2
 		MIPURCHandle();					//平台接收处理(鉴权应答等)3 
@@ -225,10 +227,25 @@ void StartTestTask(void const * argument)
 		  {
 			menu.current = 0;
 		  }
-		  printf("%d",preCurrent);
+		  //printf("%d",preCurrent);
 		  refresh=true;
-		  HAL_Delay(1000);
+		  //HAL_Delay(1000);
 	  }
+	  
+	  
+//*开关锁问平台权限	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
+	  
   }
   /* USER CODE END StartTestTask */
 }
@@ -250,8 +267,8 @@ void StartloginfoTaskTask(void const * argument)
 #if openUpload == 1
 	if(MgnssFlag)
 	{	
-//		USART_SendString(&huart4, "AT+CSQ\r\n");
-//		USART_SendString(&huart4, "AT+MGNSSLOC\r\n");
+		USART_SendString(&huart4, "AT+CSQ\r\n");
+		USART_SendString(&huart4, "AT+MGNSSLOC\r\n");
 		
 	}
 #endif
@@ -264,7 +281,7 @@ void StartloginfoTaskTask(void const * argument)
 	if(nomalCount==3)
 	{
 		nomalCount=0;
-		if(uploaweork && dblocptr->location.longitudeH!=0)
+		if(uploaweork)
 		{
 			//tt808FsFunc((uint8_t*)&(dblocptr->location.alarmFlagH), 34, MessageID_location);
 		}

文件差異過大導致無法顯示
+ 86 - 2030
Core/Src/interface.c


+ 148 - 11
Core/Src/key.c

@@ -132,11 +132,11 @@ uint8_t KEY_2_Scan_PDA(void)
 							break;
 						}
 						case 2:
+						case 3:
 						{
 							SWITCH_MENU_DOWN4();//四选项选择
 							break;
 						}
-						case 3:
 						case 8://L绑定
 						{
 							if(menu.next!=macsetptr->macCount){ 
@@ -179,10 +179,24 @@ uint8_t KEY_2_Scan_PDA(void)
 
 uint8_t preCurrent = 0;
 uint8_t preBind = 0;
-bool L1work = false;
-bool L2work = false;
-bool L3work = false;
-bool L4work = false;
+
+uint8_t L1Work_open =0;//1:开锁
+uint8_t L1Work_close=0;//1:关锁
+uint8_t L2Work_open =0;//1:开锁
+uint8_t L2Work_close=0;//1:关锁
+uint8_t L3Work_open =0;//1:开锁
+uint8_t L3Work_close=0;//1:关锁
+uint8_t L4Work_open =0;//1:开锁
+uint8_t L4Work_close=0;//1:关锁
+uint8_t L5Work_open =0;//1:开锁
+uint8_t L5Work_close=0;//1:关锁
+uint8_t L6Work_open =0;//1:开锁
+uint8_t L6Work_close=0;//1:关锁
+uint8_t L7Work_open =0;//1:开锁
+uint8_t L7Work_close=0;//1:关锁
+uint8_t L8Work_open =0;//1:开锁
+uint8_t L8Work_close=0;//1:关锁
+
 
 char macStr[20][13]; // 长度为13的字符串加上字符串结束符'\0'
 
@@ -256,14 +270,14 @@ uint8_t KEY_3_Scan_PDA(void)
 							{
 								L1bd=true;
 								sprintf(lockinfo.SN1name, "%s", macStr[menu.next]+8);
-								Flash_WriteBytes(macsetptr->mac+menu.next*6,Sn1InfoAddr,3);
+								Flash_WriteBytes(macsetptr->mac+menu.next*3,Sn1InfoAddr,3);
 								break;
 							}
 							if(preBind==2)//L2确认绑定
 							{
 								L2bd=true;
 								sprintf(lockinfo.SN2name, "%s", macStr[menu.next]+8);
-								Flash_WriteBytes(macsetptr->mac+menu.next*6,Sn2InfoAddr,3);
+								Flash_WriteBytes(macsetptr->mac+menu.next*3,Sn2InfoAddr,3);
 								break;
 								
 							}
@@ -271,7 +285,7 @@ uint8_t KEY_3_Scan_PDA(void)
 							{
 								L3bd=true;
 								sprintf(lockinfo.SN3name, "%s", macStr[menu.next]+8);
-								Flash_WriteBytes(macsetptr->mac+menu.next*6,Sn3InfoAddr,3);
+								Flash_WriteBytes(macsetptr->mac+menu.next*3,Sn3InfoAddr,3);
 								break;
 								
 							}
@@ -279,7 +293,7 @@ uint8_t KEY_3_Scan_PDA(void)
 							{
 								L4bd=true;
 								sprintf(lockinfo.SN4name, "%s", macStr[menu.next]+8);
-								Flash_WriteBytes(macsetptr->mac+menu.next*6,Sn4InfoAddr,3);
+								Flash_WriteBytes(macsetptr->mac+menu.next*3,Sn4InfoAddr,3);
 								break;
 							}
 						}
@@ -316,19 +330,143 @@ uint8_t KEY_3_Scan_PDA(void)
 						case 7:
 						{
 							preCurrent = menu.current;
-							onOff_Num = menu.up;//1:施封  0:解封
+							onOff_Num = menu.up;//1:关锁  0:开锁
 							printf("%d\r\n",onOff_Num);
 							if(preworkUp == 3)		//L1
 							{
+								if(onOff_Num)
+								{
+									L1Work_close=1;
+									printf("关锁\r\n");
+									
+								}
+								else
+								{
+									L1Work_open=1;
+									printf("开锁\r\n");
+								}
+								uint16_t mac1[3];
+								Flash_ReadBytes_mac(mac1,Sn1InfoAddr,3);
+								
+								char SNconn[50];
+								char *ptr = SNconn;
+								ptr += sprintf(ptr, "AT+CONN=");
+								for (int i = 0; i < 3; i++) {
+									ptr += sprintf(ptr, "%04X", mac1[i]);
+								}
+								sprintf(ptr, "\r\n");
+								char SNF[50];
+								char *ptr1 = SNF;
+								ptr1 += sprintf(ptr1, "+CONNECTED:0,");
+								for (int i = 0; i < 3; i++) {
+									ptr1 += sprintf(ptr1, "%04X", mac1[i]);
+								}
+								lockinfo.SNCONN = SNconn;
+								lockinfo.SNED = SNF;
+//								if(sendCmd_BT(lockinfo.SNCONN,"ERROR",1,1))
+//								{
+//									 USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开连接
+//									 printf("断开连接\r\n");
+//									SET_MENU_STATUS(3,3,0,2);
+//								}
+//								else
+//								{
+									sendCmd_BT(lockinfo.SNCONN,lockinfo.SNED,2,20);
+//								}
+
 							}
 							else if(preworkUp == 2)	//L2
 							{
+								uint16_t mac2[3];
+								Flash_ReadBytes_mac(mac2,Sn2InfoAddr,3);
+								
+								char SNconn[50];
+								char *ptr = SNconn;
+								ptr += sprintf(ptr, "AT+CONN=");
+								for (int i = 0; i < 3; i++) {
+									ptr += sprintf(ptr, "%04X", mac2[i]);
+								}
+								sprintf(ptr, "\r\n");
+								char SNF[50];
+								char *ptr1 = SNF;
+								ptr1 += sprintf(ptr1, "+CONNECTED:0,");
+								for (int i = 0; i < 3; i++) {
+									ptr1 += sprintf(ptr1, "%04X", mac2[i]);
+								}
+								lockinfo.SNCONN = SNconn;
+								lockinfo.SNED = SNF;
+//								if(sendCmd_BT(lockinfo.SNCONN,"ERROR",1,1))
+//								{
+//									 USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开连接
+//									 printf("断开连接\r\n");
+//									SET_MENU_STATUS(3,3,0,2);
+//								}
+//								else
+//								{
+									sendCmd_BT(lockinfo.SNCONN,lockinfo.SNED,2,20);
+//								}
 							}
 							else if(preworkUp == 1)	//L3
 							{
+								uint16_t mac3[3];
+								Flash_ReadBytes_mac(mac3,Sn3InfoAddr,3);
+								
+								char SNconn[50];
+								char *ptr = SNconn;
+								ptr += sprintf(ptr, "AT+CONN=");
+								for (int i = 0; i < 3; i++) {
+									ptr += sprintf(ptr, "%04X", mac3[i]);
+								}
+								sprintf(ptr, "\r\n");
+								char SNF[50];
+								char *ptr1 = SNF;
+								ptr1 += sprintf(ptr1, "+CONNECTED:0,");
+								for (int i = 0; i < 3; i++) {
+									ptr1 += sprintf(ptr1, "%04X", mac3[i]);
+								}
+								lockinfo.SNCONN = SNconn;
+								lockinfo.SNED = SNF;
+								if(sendCmd_BT(lockinfo.SNCONN,"ERROR",1,1))
+								{
+									 USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开连接
+									 printf("断开连接\r\n");
+									SET_MENU_STATUS(3,3,0,2);
+								}
+								else
+								{
+									sendCmd_BT(lockinfo.SNCONN,lockinfo.SNED,2,20);
+								}
 							}
 							else if(preworkUp == 0)	//L4
 							{
+								uint16_t mac4[3];
+								Flash_ReadBytes_mac(mac4,Sn4InfoAddr,3);
+								
+								char SNconn[50];
+								char *ptr = SNconn;
+								ptr += sprintf(ptr, "AT+CONN=");
+								for (int i = 0; i < 3; i++) {
+									ptr += sprintf(ptr, "%04X", mac4[i]);
+								}
+								sprintf(ptr, "\r\n");
+								char SNF[50];
+								char *ptr1 = SNF;
+								ptr1 += sprintf(ptr1, "+CONNECTED:0,");
+								for (int i = 0; i < 3; i++) {
+									ptr1 += sprintf(ptr1, "%04X", mac4[i]);
+								}
+								lockinfo.SNCONN = SNconn;
+								lockinfo.SNED = SNF;
+								if(sendCmd_BT(lockinfo.SNCONN,"ERROR",1,1))
+								{
+									 USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开连接
+									 printf("断开连接\r\n");
+									SET_MENU_STATUS(3,3,0,2);
+								}
+								else
+								{
+									sendCmd_BT(lockinfo.SNCONN,lockinfo.SNED,2,20);
+								}
 							}
 						}
 	
@@ -425,7 +563,6 @@ uint8_t KEY_4_Scan_PDA(void)
 
 
 
-
 void updatekeystate(void)
 {
 	KEY_1_Scan_PDA();

+ 25 - 16
Core/Src/main.c

@@ -131,10 +131,15 @@ int main(void)
   //Database_init(0x760,0x760,0x5,0x5);//760
     
   
-  MBA32A_Init();
+  //MBA32A_Init();
   //reset4Gmodule = true;
 
-  ReadSNname();
+  //ReadSNname();
+  
+  menu.current = 0;
+  
+  
+  
   /* USER CODE END 2 */
 
   /* Call init function for freertos objects (in freertos.c) */
@@ -202,30 +207,34 @@ void SystemClock_Config(void)
     Error_Handler();
   }
 }
-
-/* USER CODE BEGIN 4 */
+/* USER CODE BEGIN 4 */	
+char mac[100];
+char macStr_init[24][13]; // 长度为13的字符串加上字符串结束符'\0'
+uint16_t mac1[3];
+uint16_t mac2[3];
+uint16_t mac3[3];
+uint16_t mac4[3];
 void ReadSNname(void)
 {
-	char mac[100];
-	char macStr_init[8][13]; // 长度为13的字符串加上字符串结束符'\0'
-	uint16_t mac1[3];
-	uint16_t mac2[3];
-	uint16_t mac3[3];
-	uint16_t mac4[3];
+	Flash_ReadBytes(&macsetptr->macCount,MacDbHeadAddr,1);//获取共存多少MAC(用于重启写入)
+	if(macsetptr->macCount==0xFFFF)
+	{
+		macsetptr->macCount=0;
+	}
 	Flash_ReadBytes(mac1,Sn1InfoAddr,3);
 	Flash_ReadBytes(mac2,Sn2InfoAddr,3);
 	Flash_ReadBytes(mac3,Sn3InfoAddr,3);
 	Flash_ReadBytes(mac4,Sn4InfoAddr,3);
 	
-	bin2hex(mac, (unsigned char *)mac1, 6);//将uint16数组转换成char数组 (FLASH中的字符串)
-	bin2hex(mac+6, (unsigned char *)mac2, 6);//将uint16数组转换成char数组 (FLASH中的字符串)
-	bin2hex(mac+12, (unsigned char *)mac3, 6);//将uint16数组转换成char数组 (FLASH中的字符串)
-	bin2hex(mac+18, (unsigned char *)mac4, 6);//将uint16数组转换成char数组 (FLASH中的字符串)
+	bin2hex(mac, (unsigned char *)mac1, 12);//将uint16数组转换成char数组 (FLASH中的字符串)
+	bin2hex(mac+12, (unsigned char *)mac2, 12);//将uint16数组转换成char数组 (FLASH中的字符串)
+	bin2hex(mac+24, (unsigned char *)mac3, 12);//将uint16数组转换成char数组 (FLASH中的字符串)
+	bin2hex(mac+36, (unsigned char *)mac4, 12);//将uint16数组转换成char数组 (FLASH中的字符串)
 	// 分割mac并放入macStr数组中
-	for (int i = 0; i < 8; i++) {
+	for (int i = 0; i < 4; i++) {
 		strncpy(macStr_init[i], mac + i * 12, 12); // 复制12个字符到macStr中
 		macStr_init[i][12] = '\0'; // 添加字符串结束符
-	}						
+	}				
 	if(mac1[0]==0xFFFF)
 	{
 		//Todo

+ 15 - 8
Core/Src/mba32a.c

@@ -331,22 +331,29 @@ uint16_t serialNum3[2];
 uint16_t serialNum4[2];
 void OpenCloseLock(void)
 {
-	if(L1work && preworkUp==3)//L1操作(操作完成置位)
+	if(preworkUp==3)
 	{
-		if(onOff_Num)//1:施封 0:解封
+		if(L1Work_close)//L1操作(操作完成置位)
 		{
 			close_lock();
+			L1Work_close=0;
+			printf("%02X%02X",serialNum1[0],serialNum1[1]);
+			serialNum1[0] = (uint16_t)((btframe.serialNum1 >> 24) & 0xff) << 8 | ((btframe.serialNum1 >> 16) & 0xff);
+			serialNum1[1] = (uint16_t)((btframe.serialNum1 >> 8)  & 0xff) << 8 | (btframe.serialNum1 & 0xff);
+			Flash_WriteBytes(serialNum1,serialNum1Addr,2);
 		}
-		else
+		else if(L1Work_open)
 		{
 			open_lock();
+			L1Work_open=0;
+			printf("%02X%02X",serialNum1[0],serialNum1[1]);
+			serialNum1[0] = (uint16_t)((btframe.serialNum1 >> 24) & 0xff) << 8 | ((btframe.serialNum1 >> 16) & 0xff);
+			serialNum1[1] = (uint16_t)((btframe.serialNum1 >> 8)  & 0xff) << 8 | (btframe.serialNum1 & 0xff);
+			Flash_WriteBytes(serialNum1,serialNum1Addr,2);
 		}
-		serialNum1[0] = (uint16_t)((btframe.serialNum1 >> 24) & 0xff) << 8 | ((btframe.serialNum1 >> 16) & 0xff);
-		serialNum1[1] = (uint16_t)((btframe.serialNum1 >> 8)  & 0xff) << 8 | (btframe.serialNum1 & 0xff);
-		Flash_WriteBytes(serialNum1,serialNum1Addr,2);
-		L1work=false;
+
 	}
-	
+
 	
 	
 	

+ 1 - 1
Core/Src/ml307a.c

@@ -244,7 +244,7 @@ void Pre_processing_4G(void)//
 	if(!Online)
 	{
 		printf("δÁ¬½Óƽ̨\r\n");
-		reconn();//ÖØÁ¬
+		wdiFlag = true;
 	}
 }
 

+ 2 - 0
Core/Src/oled.c

@@ -327,6 +327,8 @@ void OLED_ShowChinese(uint8_t x,uint8_t y,uint8_t num,uint8_t size1,uint8_t mode
 				{temp=Hzk6[num][i];}//调用14*14字体
 		else if(size1==18)
 				{temp=Hzk7[num][i];}//调用18*18字体
+		else if(size1==15)
+				{temp=Hzk8[num][i];}//调用15*15字体
 				
 		else return;
 		for(m=0;m<8;m++)

+ 13 - 43
Core/Src/tt808.c

@@ -552,50 +552,14 @@ void Test485Re(void)
 	 REPdaMode();//PDA 485 MQTT
 }
 				
-void AtPRocess(char *value, char *conn,char *connected,char* disconn) {
+void AtPRocess(char *value, char *conn,char *connected,char *disconn) {
     sprintf(conn, "AT+CONN=%s\r\n", value);
     sprintf(connected, "+CONNECTED:0,%s", value);
     sprintf(disconn, "+DISCONN:0,%s", value);
-}
-
-void BindeProcess(char TEMP[], uint8_t temp[],uint64_t addr, char sname[],uint16_t mac[],char snconn[],char snced[],char sndis[])
-{
-	memcpy(TEMP,U1_485recvBuff+10,12);
-	const char *hex = (const char *)TEMP;  // 将 uint8_t * 转换为 const char *
-	int size = strlen(hex) / 2;  // 计算二进制数据的长度
-	unsigned char *bin = (unsigned char *)malloc(size);  // 分配足够的内存用于存储二进制数据
-	rlt = hex2bin(bin, hex);  // 调用hex2bin函数进行转换
-	memcpy(temp, bin, rlt);  // 将 bin 中的 rlt 个字节复制到 MIPurc1 中						接收到的数据放入MIPurc1中
-	free(bin);  // 释放内存  
-	{
-//		if(addr==MAC1Addr)
-//		{
-//			L1bd=true;
-//			printf("\r\n绑定L1:%s\r\n",TEMP);
-//		}
-//		if(addr==MAC2Addr)
-//		{
-//			L2bd=true;
-//			printf("\r\n绑定L2:%s\r\n",TEMP);
-//		}
-//		if(addr==MAC3Addr)
-//		{
-//			L3bd=true;
-//			printf("\r\n绑定L3:%s\r\n",TEMP);
-//		}
-//		if(addr==MAC4Addr)
-//		{
-//			L4bd=true;
-//			printf("\r\n绑定L4:%s\r\n",TEMP);
-//		}
-		mac[0]=temp[0]<<8|temp[1];
-		mac[1]=temp[2]<<8|temp[3];
-		mac[2]=temp[4]<<8|temp[5];
-		sprintf(sname, "%04X", mac[2]);
-		printf("%04x%04x%04x\r\n",mac[0],mac[1],mac[2]);
-		Flash_WriteBytes(mac,addr,3);
-		AtPRocess(TEMP,snconn,snced,sndis);
-	}
+	
+	printf("%s\r\n",conn);
+	printf("%s\r\n",connected);
+	printf("%s\r\n",disconn);
 }
 
 void REPdaMode(void)
@@ -632,12 +596,13 @@ void REPdaMode(void)
 }
 void ReBTcall(void)
 {
-	 if(strncmp((char*)U5_BTrecvBuff, "+CONNECTED:0,",  strlen("+CONNECTED:0,"))==0)
+	 if(strncmp((char*)autoRe, "+CONNECTED:0,",  strlen("+CONNECTED:0,"))==0)
 	 {
 		 TIPS_MACRO(ConnOK);//连接成功
 		 printf("设备已连接\r\n");
+		 memset(autoRe,0,BUFFER_SIZE);
 	 }
-	memset(U5_BTrecvBuff,0,BUFFER_SIZE);
+
 }
 //*工作命令
 void ReMIPURC(void)//DTU
@@ -808,6 +773,11 @@ void MIPURCHandle(void)
 		 }
 		 else if(PTXXID == XXID_ptxxtc)	//收到平台消息透传 8900
 		 {
+			authFlag = true;
+			Offline=false;	//待判定假消息
+			Online = true;	//待判定假消息
+			uploaweork=true;
+			 
 			 uint8_t tcsjLen = MIPurc[13];
 			 memcpy(MIPurcXXTCSJ,&MIPurc[13],xxtcLen);
 			 printf("@得到透传数据,%d\r\n",tcsjLen);

+ 0 - 2
Core/Src/usart.c

@@ -827,7 +827,6 @@ void sendCombinedArray(uint8_t *header, size_t headerLength, uint8_t *command, s
 		AES_init_ctx_iv(&ctx, DtuBtKey, iv);
 		AES_CBC_encrypt_buffer(&ctx, cmd_array, 16);
 	}
-	
     // ½«cmd_arrayÌí¼Óµ½combinedArray
     for (int i = 0; i < 16; i++) {
         combinedArray[i + headerLength] = cmd_array[i];
@@ -842,7 +841,6 @@ void sendCombinedArray(uint8_t *header, size_t headerLength, uint8_t *command, s
     USART_SendHexArray(&huart5, combinedArray, sizeof(combinedArray));
 }
 
-
 uint32_t convertGPS(double temp) {
 //*WGS-84×ø±ê
 	if(temp > 40)

+ 10 - 5
MDK-ARM/dtu.uvoptx

@@ -158,17 +158,22 @@
         <Ww>
           <count>1</count>
           <WinNumber>1</WinNumber>
-          <ItemText>macsetptr</ItemText>
+          <ItemText>macStr</ItemText>
         </Ww>
         <Ww>
           <count>2</count>
           <WinNumber>1</WinNumber>
-          <ItemText>macStr[2]</ItemText>
+          <ItemText>macsetptr</ItemText>
         </Ww>
         <Ww>
           <count>3</count>
           <WinNumber>1</WinNumber>
-          <ItemText>macStr</ItemText>
+          <ItemText>mac</ItemText>
+        </Ww>
+        <Ww>
+          <count>4</count>
+          <WinNumber>1</WinNumber>
+          <ItemText>mac1</ItemText>
         </Ww>
       </WatchWindow1>
       <WatchWindow2>
@@ -300,7 +305,7 @@
       <GroupNumber>2</GroupNumber>
       <FileNumber>4</FileNumber>
       <FileType>1</FileType>
-      <tvExp>0</tvExp>
+      <tvExp>1</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>..\Core\Src\oled.c</PathWithFileName>
@@ -384,7 +389,7 @@
       <GroupNumber>2</GroupNumber>
       <FileNumber>11</FileNumber>
       <FileType>1</FileType>
-      <tvExp>1</tvExp>
+      <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <PathWithFileName>../Core/Src/main.c</PathWithFileName>