|
@@ -14,16 +14,9 @@ bool sent2_key = false;
|
|
|
bool sent3_key = false;
|
|
|
bool sent4_key = false;
|
|
|
|
|
|
-//字符串
|
|
|
-char timeout[] = "+CONNECT TIMEOUT";
|
|
|
-
|
|
|
-//字节
|
|
|
-uint32_t enterInterface_time = 0;
|
|
|
-uint8_t Developer_PortalA = 0;
|
|
|
-uint8_t Developer_PortalD = 0;
|
|
|
-uint8_t sys_Mode = 0;
|
|
|
+uint32_t enterInterface_time =0;
|
|
|
uint8_t preworkUp = 0;
|
|
|
-uint8_t presjfUp = 0;
|
|
|
+uint8_t onOff_Num=0;
|
|
|
|
|
|
uint8_t KEY_1_Scan_PDA(void)
|
|
|
{
|
|
@@ -49,100 +42,42 @@ uint8_t KEY_1_Scan_PDA(void)
|
|
|
enterInterface_time = HAL_GetTick();
|
|
|
switch(menu.current)
|
|
|
{
|
|
|
- case 0:
|
|
|
- {
|
|
|
- Developer_PortalA+=1;
|
|
|
- SET_MENU_STATUS(0,0,0,0);
|
|
|
- break;
|
|
|
- }
|
|
|
- case 1:
|
|
|
- {
|
|
|
- SET_MENU_STATUS(1,1,0,1);
|
|
|
- break;
|
|
|
- }
|
|
|
- case 2:
|
|
|
- {
|
|
|
- if(menu.up!=3)
|
|
|
- {
|
|
|
- menu.up+=1;
|
|
|
- menu.next-=1;
|
|
|
- }
|
|
|
- else if(menu.up==3)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=3;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 3:
|
|
|
- {
|
|
|
- if(menu.up!=3)
|
|
|
- {
|
|
|
- menu.up+=1;
|
|
|
- menu.next-=1;
|
|
|
- }
|
|
|
- else if(menu.up==3)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=3;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 4:
|
|
|
- case 5:
|
|
|
- case 6:
|
|
|
- case 7:
|
|
|
- case 0xA0:
|
|
|
- case 0xFF:
|
|
|
- {
|
|
|
- if(menu.up!=1)
|
|
|
- {
|
|
|
- menu.up+=1;
|
|
|
- menu.next-=1;
|
|
|
- }
|
|
|
- else if(menu.up==1)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=1;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case 0xA1:
|
|
|
- {
|
|
|
- if(menu.up!=0xE)
|
|
|
- {
|
|
|
- menu.up+=1;
|
|
|
- menu.next-=1;
|
|
|
- }
|
|
|
- else if(menu.up==0xE)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=0xE;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xA2:
|
|
|
- {
|
|
|
- if(menu.up!=0xF)
|
|
|
- {
|
|
|
- menu.up+=1;
|
|
|
- menu.next-=1;
|
|
|
- }
|
|
|
- else if(menu.up==0xF)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=0xF;
|
|
|
- }
|
|
|
-
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
+ case 0:
|
|
|
+ {
|
|
|
+ SET_MENU_STATUS(0,0,0,0);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 1:
|
|
|
+ {
|
|
|
+ SET_MENU_STATUS(1,1,0,1);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 2:
|
|
|
+ case 3:
|
|
|
+ {
|
|
|
+ SWITCH_MENU_UP4();
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 8://L绑定
|
|
|
+ {
|
|
|
+ if(menu.up != macsetptr->macCount) { \
|
|
|
+ menu.up += 1; \
|
|
|
+ menu.next -= 1; \
|
|
|
+ } else if(menu.up == macsetptr->macCount) { \
|
|
|
+ menu.up = 0; \
|
|
|
+ menu.next = macsetptr->macCount; \
|
|
|
+ } \
|
|
|
+ refresh = true; \
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ case 4:
|
|
|
+ case 5:
|
|
|
+ case 6:
|
|
|
+ case 7:
|
|
|
+ {
|
|
|
+ SWITCH_MENU_UP2();//上翻2选项
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
#if debugkeyinfo == 1
|
|
|
PRINT_MENU_STATUS("K1");
|
|
@@ -188,7 +123,7 @@ uint8_t KEY_2_Scan_PDA(void)
|
|
|
{
|
|
|
case 0:
|
|
|
{
|
|
|
- SET_MENU_STATUS(0,0,0,0);
|
|
|
+ //SET_MENU_STATUS(1,0,0,0);
|
|
|
break;
|
|
|
}
|
|
|
case 1:
|
|
@@ -198,85 +133,31 @@ uint8_t KEY_2_Scan_PDA(void)
|
|
|
}
|
|
|
case 2:
|
|
|
{
|
|
|
- if(menu.next!=3)
|
|
|
- {
|
|
|
- menu.up-=1;
|
|
|
- menu.next+=1;
|
|
|
- }
|
|
|
- else if(menu.next==3)
|
|
|
- {
|
|
|
- menu.up=3;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
+ SWITCH_MENU_DOWN4();//四选项选择
|
|
|
break;
|
|
|
}
|
|
|
case 3:
|
|
|
+ case 8://L绑定
|
|
|
{
|
|
|
- if(menu.next!=3)
|
|
|
- {
|
|
|
- menu.up-=1;
|
|
|
- menu.next+=1;
|
|
|
- }
|
|
|
- else if(menu.next==3)
|
|
|
- {
|
|
|
- menu.up=3;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
+ if(menu.next!=macsetptr->macCount){
|
|
|
+ menu.up-=1;
|
|
|
+ menu.next+=1;
|
|
|
+ } else if(menu.next==macsetptr->macCount) {
|
|
|
+ menu.up=macsetptr->macCount;
|
|
|
+ menu.next=0;
|
|
|
+ }
|
|
|
+ refresh=true;
|
|
|
break;
|
|
|
}
|
|
|
-
|
|
|
case 4:
|
|
|
case 5:
|
|
|
case 6:
|
|
|
case 7:
|
|
|
- case 0xA0:
|
|
|
- case 0xFF:
|
|
|
- {
|
|
|
- if(menu.next!=1)
|
|
|
- {
|
|
|
- menu.up-=1;
|
|
|
- menu.next+=1;
|
|
|
- }
|
|
|
- else if(menu.next==1)
|
|
|
- {
|
|
|
- menu.up=1;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xA1:
|
|
|
- {
|
|
|
- if(menu.next!=0xE)
|
|
|
- {
|
|
|
- menu.up-=1;
|
|
|
- menu.next+=1;
|
|
|
- }
|
|
|
- else if(menu.next==0xE)
|
|
|
- {
|
|
|
- menu.up=0xE;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xA2:
|
|
|
{
|
|
|
- if(menu.next!=0xF)
|
|
|
- {
|
|
|
- menu.up-=1;
|
|
|
- menu.next+=1;
|
|
|
- }
|
|
|
- else if(menu.next==0xF)
|
|
|
- {
|
|
|
- menu.up=0xF;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
+ SWITCH_MENU_DOWN2();//下翻2选项
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
#if debugkeyinfo == 1
|
|
|
PRINT_MENU_STATUS("K2");
|
|
@@ -295,43 +176,15 @@ uint8_t KEY_2_Scan_PDA(void)
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
-// 定义menu_dict存储menu.next对应的信息
|
|
|
-MenuInfo menu_dict[] = {
|
|
|
- {"AT+CONN=101000000001\r\n", "+CONNECTED:0,101000000001", "+DISCONN:0,101000000001", 0x101000000001},
|
|
|
- {"AT+CONN=101000000002\r\n", "+CONNECTED:0,101000000002", "+DISCONN:0,101000000002", 0x101000000002},
|
|
|
- {"AT+CONN=101000000003\r\n", "+CONNECTED:0,101000000003", "+DISCONN:0,101000000003", 0x101000000003},
|
|
|
- {"AT+CONN=101000000004\r\n", "+CONNECTED:0,101000000004", "+DISCONN:0,101000000004", 0x101000000004},
|
|
|
- {"AT+CONN=101000000005\r\n", "+CONNECTED:0,101000000005", "+DISCONN:0,101000000005", 0x101000000005},
|
|
|
- {"AT+CONN=101000000006\r\n", "+CONNECTED:0,101000000006", "+DISCONN:0,101000000006", 0x101000000006},
|
|
|
- {"AT+CONN=101000000007\r\n", "+CONNECTED:0,101000000007", "+DISCONN:0,101000000007", 0x101000000007},
|
|
|
- {"AT+CONN=101000000008\r\n", "+CONNECTED:0,101000000008", "+DISCONN:0,101000000008", 0x101000000008},
|
|
|
- {"AT+CONN=101000000009\r\n", "+CONNECTED:0,101000000009", "+DISCONN:0,101000000009", 0x101000000009},
|
|
|
- {"AT+CONN=10100000000A\r\n", "+CONNECTED:0,10100000000A", "+DISCONN:0,10100000000A", 0x10100000000A},
|
|
|
- {"AT+CONN=10100000000B\r\n", "+CONNECTED:0,10100000000B", "+DISCONN:0,10100000000B", 0x10100000000B},
|
|
|
- {"AT+CONN=10100000000C\r\n", "+CONNECTED:0,10100000000C", "+DISCONN:0,10100000000C", 0x10100000000C},
|
|
|
- {"AT+CONN=10100000000D\r\n", "+CONNECTED:0,10100000000D", "+DISCONN:0,10100000000D", 0x10100000000D},
|
|
|
- {"AT+CONN=10100000000E\r\n", "+CONNECTED:0,10100000000E", "+DISCONN:0,10100000000E", 0x10100000000E},
|
|
|
- {"AT+CONN=10100000000F\r\n", "+CONNECTED:0,10100000000F", "+DISCONN:0,10100000000F", 0x10100000000F},
|
|
|
-
|
|
|
- {"AT+CONN=101000000010\r\n", "+CONNECTED:0,101000000010", "+DISCONN:0,101000000010", 0x101000000010},
|
|
|
- {"AT+CONN=101000000011\r\n", "+CONNECTED:0,101000000011", "+DISCONN:0,101000000011", 0x101000000011},
|
|
|
- {"AT+CONN=101000000012\r\n", "+CONNECTED:0,101000000012", "+DISCONN:0,101000000012", 0x101000000012},
|
|
|
- {"AT+CONN=101000000013\r\n", "+CONNECTED:0,101000000013", "+DISCONN:0,101000000013", 0x101000000013},
|
|
|
- {"AT+CONN=101000000014\r\n", "+CONNECTED:0,101000000014", "+DISCONN:0,101000000014", 0x101000000014},
|
|
|
- {"AT+CONN=101000000015\r\n", "+CONNECTED:0,101000000015", "+DISCONN:0,101000000015", 0x101000000015},
|
|
|
- {"AT+CONN=101000000016\r\n", "+CONNECTED:0,101000000016", "+DISCONN:0,101000000016", 0x101000000016},
|
|
|
- {"AT+CONN=101000000017\r\n", "+CONNECTED:0,101000000017", "+DISCONN:0,101000000017", 0x101000000017},
|
|
|
- {"AT+CONN=101000000018\r\n", "+CONNECTED:0,101000000018", "+DISCONN:0,101000000018", 0x101000000018},
|
|
|
- {"AT+CONN=101000000019\r\n", "+CONNECTED:0,101000000019", "+DISCONN:0,101000000019", 0x101000000019},
|
|
|
- {"AT+CONN=10100000001A\r\n", "+CONNECTED:0,10100000001A", "+DISCONN:0,10100000001A", 0x10100000001A},
|
|
|
- {"AT+CONN=10100000001B\r\n", "+CONNECTED:0,10100000001B", "+DISCONN:0,10100000001B", 0x10100000001B},
|
|
|
- {"AT+CONN=10100000001C\r\n", "+CONNECTED:0,10100000001C", "+DISCONN:0,10100000001C", 0x10100000001C},
|
|
|
- {"AT+CONN=10100000001D\r\n", "+CONNECTED:0,10100000001D", "+DISCONN:0,10100000001D", 0x10100000001D},
|
|
|
- {"AT+CONN=10100000001E\r\n", "+CONNECTED:0,10100000001E", "+DISCONN:0,10100000001E", 0x10100000001E},
|
|
|
- {"AT+CONN=10100000001F\r\n", "+CONNECTED:0,10100000001F", "+DISCONN:0,10100000001F", 0x10100000001F},
|
|
|
- // 其他项依次类推
|
|
|
-};
|
|
|
|
|
|
+uint8_t preCurrent = 0;
|
|
|
+uint8_t preBind = 0;
|
|
|
+bool L1work = false;
|
|
|
+bool L2work = false;
|
|
|
+bool L3work = false;
|
|
|
+bool L4work = false;
|
|
|
+
|
|
|
+char macStr[20][13]; // 长度为13的字符串加上字符串结束符'\0'
|
|
|
|
|
|
uint8_t KEY_3_Scan_PDA(void)
|
|
|
{
|
|
@@ -355,17 +208,15 @@ uint8_t KEY_3_Scan_PDA(void)
|
|
|
{
|
|
|
if (!sent3_key) {
|
|
|
enterInterface_time = HAL_GetTick();
|
|
|
- switch (menu.current) {
|
|
|
+ switch (menu.current)
|
|
|
+ {
|
|
|
case 0://跳转到菜单界面
|
|
|
{
|
|
|
- SET_MENU_STATUS(1,1,0,1);
|
|
|
+ SET_MENU_STATUS(1,1,0,1);//跳转操作界面
|
|
|
break;
|
|
|
}
|
|
|
case 1://跳转到L绑定界面
|
|
|
{
|
|
|
-
|
|
|
- Developer_PortalA=0;
|
|
|
- Developer_PortalD=0;
|
|
|
if(menu.up==1)
|
|
|
{
|
|
|
SET_MENU_STATUS(2,3,0,2);
|
|
@@ -378,12 +229,61 @@ uint8_t KEY_3_Scan_PDA(void)
|
|
|
}
|
|
|
case 2:
|
|
|
{
|
|
|
+ preBind = menu.up;
|
|
|
+
|
|
|
+ Flash_ReadBytes(&macsetptr->macCount,MacDbHeadAddr,1);//获取共存多少MAC
|
|
|
+ printf("%04X\r\n",macsetptr->macCount);
|
|
|
+
|
|
|
+ char mac[13*macsetptr->macCount];//char数组需要预留足够的空间,也就是13个字符,因为还需要包含字符串结尾的'\0'
|
|
|
+ Flash_ReadBytes_mac((uint16_t*)macsetptr->mac,MacDbBodyAddr,(3*macsetptr->macCount));//读MAC
|
|
|
+ bin2hex(mac, (unsigned char *)macsetptr->mac, (6*macsetptr->macCount));//将uint16数组转换成char数组 (FLASH中的字符串)
|
|
|
|
|
|
- menu.PreNext=menu.next;//L1 - L4
|
|
|
- SET_MENU_STATUS(0xA0,1,0,3);
|
|
|
+ // 分割mac并放入macStr数组中
|
|
|
+ for (int i = 0; i < macsetptr->macCount; i++) {
|
|
|
+ strncpy(macStr[i], mac + i * 12, 12); // 复制13个字符到macStr中
|
|
|
+ macStr[i][12] = '\0'; // 添加字符串结束符
|
|
|
+ }
|
|
|
+ // 打印分割后的字符串
|
|
|
+ for (int i = 0; i < macsetptr->macCount; i++) {
|
|
|
+ printf("macStr[%d]: %s\n", i, macStr[i]);
|
|
|
+ }
|
|
|
+ SET_MENU_STATUS(8,macsetptr->macCount,0,2);
|
|
|
break;
|
|
|
}
|
|
|
- case 3://施解封操作
|
|
|
+ case 8:
|
|
|
+ {
|
|
|
+ if(preBind==3)//L1确认绑定
|
|
|
+ {
|
|
|
+ L1bd=true;
|
|
|
+ sprintf(lockinfo.SN1name, "%s", macStr[menu.next]+8);
|
|
|
+ Flash_WriteBytes(macsetptr->mac+menu.next*6,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);
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ if(preBind==1)//L3确认绑定
|
|
|
+ {
|
|
|
+ L3bd=true;
|
|
|
+ sprintf(lockinfo.SN3name, "%s", macStr[menu.next]+8);
|
|
|
+ Flash_WriteBytes(macsetptr->mac+menu.next*6,Sn3InfoAddr,3);
|
|
|
+ break;
|
|
|
+
|
|
|
+ }
|
|
|
+ if(preBind==0)//L4确认绑定
|
|
|
+ {
|
|
|
+ L4bd=true;
|
|
|
+ sprintf(lockinfo.SN4name, "%s", macStr[menu.next]+8);
|
|
|
+ Flash_WriteBytes(macsetptr->mac+menu.next*6,Sn4InfoAddr,3);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ case 3:
|
|
|
{
|
|
|
if(menu.up==3)//L1操作
|
|
|
{
|
|
@@ -408,84 +308,28 @@ uint8_t KEY_3_Scan_PDA(void)
|
|
|
preworkUp=menu.up;
|
|
|
SET_MENU_STATUS(7,1,0,3);
|
|
|
break;
|
|
|
- }
|
|
|
+ }
|
|
|
}
|
|
|
case 4:
|
|
|
case 5:
|
|
|
case 6:
|
|
|
case 7:
|
|
|
{
|
|
|
-// if(lockinfo.SN1CONN == NULL || lockinfo.SN2CONN == NULL || lockinfo.SN3CONN == NULL ||lockinfo.SN4CONN == NULL)
|
|
|
-// {
|
|
|
-// menu.current=0xBB;
|
|
|
-// tipsflag = Nosn;
|
|
|
-// SET_MENU_STATUS(3,3,0,2);
|
|
|
-// }
|
|
|
-// else
|
|
|
-// {
|
|
|
- presjfUp = menu.up;
|
|
|
- printf("%d",presjfUp);
|
|
|
- menu.current=0xBB;
|
|
|
- tipsflag = Btconn;
|
|
|
- refresh = true;
|
|
|
- if(preworkUp == 3)//L1
|
|
|
- {
|
|
|
- USART_SendString(&huart5, lockinfo.SN1CONN);//连接
|
|
|
- }
|
|
|
- else if(preworkUp == 2)//L2
|
|
|
- {
|
|
|
- USART_SendString(&huart5, lockinfo.SN2CONN);//连接
|
|
|
- }
|
|
|
- else if(preworkUp == 1)//L3
|
|
|
- {
|
|
|
- USART_SendString(&huart5, lockinfo.SN3CONN);//连接
|
|
|
- }
|
|
|
- else if(preworkUp == 0)//L4
|
|
|
- {
|
|
|
- USART_SendString(&huart5, lockinfo.SN4CONN);//连接
|
|
|
- }
|
|
|
-// }
|
|
|
-
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- case 0xA0:
|
|
|
- {
|
|
|
- if(menu.up==1)
|
|
|
+ preCurrent = menu.current;
|
|
|
+ onOff_Num = menu.up;//1:施封 0:解封
|
|
|
+ printf("%d\r\n",onOff_Num);
|
|
|
+ if(preworkUp == 3) //L1
|
|
|
{
|
|
|
- SET_MENU_STATUS(0xA1,0xE,0,3);
|
|
|
}
|
|
|
- else if(menu.up==0)
|
|
|
+ else if(preworkUp == 2) //L2
|
|
|
{
|
|
|
- SET_MENU_STATUS(0xA2,0xF,0,3);
|
|
|
}
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xA1:
|
|
|
- case 0xA2:
|
|
|
- {
|
|
|
- WritekeyInfo();//写入MAC保存状态
|
|
|
- SET_MENU_STATUS(2,3,0,2);
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xFF:
|
|
|
- {
|
|
|
- if(menu.up==1)//PDA 0x0000
|
|
|
+ else if(preworkUp == 1) //L3
|
|
|
{
|
|
|
- signal = true;
|
|
|
- sys_mode[1]=PDA_MODE;
|
|
|
}
|
|
|
- else if(menu.up==0)//DTU 0x0001
|
|
|
+ else if(preworkUp == 0) //L4
|
|
|
{
|
|
|
- signal = true;
|
|
|
- sys_mode[1]=DTU_MODE;
|
|
|
}
|
|
|
- Flash_WriteBytes(&sys_mode[1],SysModeAddr,1);
|
|
|
- Flash_ReadBytes(sys_mode, SysModeAddr, 1);//读取一个2B的,系统模式
|
|
|
- menu.current=0;//回到初始
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -529,16 +373,9 @@ uint8_t KEY_4_Scan_PDA(void)
|
|
|
{
|
|
|
enterInterface_time = HAL_GetTick();
|
|
|
if (!sent4_key) {//返回
|
|
|
- switch (menu.current) {
|
|
|
+ switch (menu.current)
|
|
|
+ {
|
|
|
case 0:
|
|
|
- {
|
|
|
- SET_MENU_STATUS(0,0,0,0);
|
|
|
- if(Developer_PortalA!=0)
|
|
|
- {
|
|
|
- Developer_PortalD+=1;
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
case 1:
|
|
|
{
|
|
|
SET_MENU_STATUS(0,0,0,0);
|
|
@@ -547,6 +384,7 @@ uint8_t KEY_4_Scan_PDA(void)
|
|
|
case 2:
|
|
|
case 3:
|
|
|
{
|
|
|
+
|
|
|
SET_MENU_STATUS(1,1,0,1);
|
|
|
break;
|
|
|
}
|
|
@@ -555,27 +393,16 @@ uint8_t KEY_4_Scan_PDA(void)
|
|
|
case 6:
|
|
|
case 7:
|
|
|
{
|
|
|
- SET_MENU_STATUS(3,3,0,2);
|
|
|
USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开连接
|
|
|
+ SET_MENU_STATUS(3,3,0,2);
|
|
|
break;
|
|
|
}
|
|
|
- case 0xA0:
|
|
|
+ case 8:
|
|
|
{
|
|
|
SET_MENU_STATUS(2,3,0,2);
|
|
|
break;
|
|
|
}
|
|
|
- case 0xA1:
|
|
|
- case 0xA2:
|
|
|
- {
|
|
|
- SET_MENU_STATUS(0xA0,1,0,3);
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xBB:
|
|
|
- {
|
|
|
- SET_MENU_STATUS(3,3,0,2);
|
|
|
- USART_SendString(&huart5, "AT+DISCONN=0\r\n");//断开连接
|
|
|
- break;
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
#if debugkeyinfo == 1
|
|
|
PRINT_MENU_STATUS("K4");
|
|
@@ -596,434 +423,14 @@ uint8_t KEY_4_Scan_PDA(void)
|
|
|
}
|
|
|
|
|
|
|
|
|
-uint8_t KEY_1_Scan_DTU(void)
|
|
|
-{
|
|
|
- static uint8_t key_state = 0;
|
|
|
- static uint8_t last_key_state = 0;
|
|
|
- static uint32_t debounce_time = 0;
|
|
|
-
|
|
|
- key_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3);
|
|
|
-
|
|
|
- if (key_state != last_key_state) // 检测按键状态变化
|
|
|
- {
|
|
|
- last_key_state = key_state;
|
|
|
- debounce_time = HAL_GetTick(); // 记录当前时间
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (HAL_GetTick() - debounce_time > 30) // 去抖时间
|
|
|
- {
|
|
|
- if (key_state == GPIO_PIN_RESET) // 按键按下
|
|
|
- {
|
|
|
- if(!sent1_key)
|
|
|
- {
|
|
|
- enterInterface_time = HAL_GetTick();
|
|
|
- switch(menu.current)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- {
|
|
|
- Developer_PortalA+=1;
|
|
|
- SET_MENU_STATUS(0,0,0,0);
|
|
|
- break;
|
|
|
- }
|
|
|
- case 0xFF:
|
|
|
- {
|
|
|
- if(menu.up!=1)
|
|
|
- {
|
|
|
- menu.up=1;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- else if(menu.up==1)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=1;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- #if debugkeyinfo == 1
|
|
|
- PRINT_MENU_STATUS("K1");
|
|
|
- #endif
|
|
|
- sent1_key = true;
|
|
|
- }
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else // 按键释放
|
|
|
- {
|
|
|
- sent1_key = false;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-uint8_t KEY_2_Scan_DTU(void)
|
|
|
-{
|
|
|
- static uint8_t key_state = 0;
|
|
|
- static uint8_t last_key_state = 0;
|
|
|
- static uint32_t debounce_time = 0;
|
|
|
-
|
|
|
- key_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_4);
|
|
|
-
|
|
|
- if (key_state != last_key_state) // 检测按键状态变化
|
|
|
- {
|
|
|
- last_key_state = key_state;
|
|
|
- debounce_time = HAL_GetTick(); // 记录当前时间
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (HAL_GetTick() - debounce_time > 30) // 去抖时间
|
|
|
- {
|
|
|
- if (key_state == GPIO_PIN_RESET) // 按键按下
|
|
|
- {
|
|
|
- if (!sent2_key)
|
|
|
- {
|
|
|
- enterInterface_time = HAL_GetTick();
|
|
|
- switch (menu.current)
|
|
|
- {
|
|
|
- case 0xFF:
|
|
|
- {
|
|
|
- if(menu.next!=1)
|
|
|
- {
|
|
|
- menu.up=0;
|
|
|
- menu.next=1;
|
|
|
- }
|
|
|
- else if(menu.next==1)
|
|
|
- {
|
|
|
- menu.up=1;
|
|
|
- menu.next=0;
|
|
|
- }
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- #if debugkeyinfo == 1
|
|
|
- PRINT_MENU_STATUS("K2");
|
|
|
- #endif
|
|
|
- sent2_key = true;
|
|
|
- }
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else // 按键释放
|
|
|
- {
|
|
|
- sent2_key = false;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-uint8_t KEY_3_Scan_DTU(void)
|
|
|
-{
|
|
|
- static uint8_t key_state = 0;
|
|
|
- static uint8_t last_key_state = 0;
|
|
|
- static uint32_t debounce_time = 0;
|
|
|
-
|
|
|
-
|
|
|
- key_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_5);
|
|
|
-
|
|
|
- if (key_state != last_key_state) // 检测按键状态变化
|
|
|
- {
|
|
|
- last_key_state = key_state;
|
|
|
- debounce_time = HAL_GetTick(); // 记录当前时间
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (HAL_GetTick() - debounce_time > 30) // 去抖时间
|
|
|
- {
|
|
|
- if (key_state == GPIO_PIN_RESET) // 按键按下
|
|
|
- {
|
|
|
- if (!sent3_key) {
|
|
|
- enterInterface_time = HAL_GetTick();
|
|
|
- switch (menu.current)
|
|
|
- {
|
|
|
- case 0xFF:
|
|
|
- {
|
|
|
- if(menu.up==1)//PDA 0x0000
|
|
|
- {
|
|
|
- sys_mode[1]=PDA_MODE;
|
|
|
- if(sendCmd_BT("AT+ADV=0\r\n","OK",1,1))//开启广播
|
|
|
- {
|
|
|
- signal = true;
|
|
|
- printf("关闭广播\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- else if(menu.up==0)//DTU 0x0001
|
|
|
- {
|
|
|
- sys_mode[1]=DTU_MODE;
|
|
|
- if(sendCmd_BT("AT+ADV=1\r\n","OK",1,1))//开启广播
|
|
|
- {
|
|
|
- signal = true;
|
|
|
- printf("开启广播\r\n");
|
|
|
- }
|
|
|
- }
|
|
|
- Flash_WriteBytes(&sys_mode[1],SysModeAddr,1);
|
|
|
- Flash_ReadBytes(sys_mode, SysModeAddr, 1);//读取一个2B的,系统模式
|
|
|
- menu.current=0;//回到初始
|
|
|
- refresh=true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- #if debugkeyinfo == 1
|
|
|
- PRINT_MENU_STATUS("K3");
|
|
|
- #endif
|
|
|
- sent3_key = true;
|
|
|
- }
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else // 按键释放
|
|
|
- {
|
|
|
- sent3_key = false;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-uint8_t KEY_4_Scan_DTU(void)
|
|
|
-{
|
|
|
- static uint8_t key_state = 0;
|
|
|
- static uint8_t last_key_state = 0;
|
|
|
- static uint32_t debounce_time = 0;
|
|
|
-
|
|
|
- key_state = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_6);
|
|
|
-
|
|
|
- if (key_state != last_key_state) // 检测按键状态变化
|
|
|
- {
|
|
|
- last_key_state = key_state;
|
|
|
- debounce_time = HAL_GetTick(); // 记录当前时间
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (HAL_GetTick() - debounce_time > 30) // 去抖时间
|
|
|
- {
|
|
|
- if (key_state == GPIO_PIN_RESET) // 按键按下
|
|
|
- {
|
|
|
- enterInterface_time = HAL_GetTick();
|
|
|
- if (!sent4_key) {//返回
|
|
|
- switch (menu.current)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- {
|
|
|
- SET_MENU_STATUS(0,0,0,0);
|
|
|
- if(Developer_PortalA!=0)
|
|
|
- {
|
|
|
- Developer_PortalD+=1;
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- #if debugkeyinfo == 1
|
|
|
- PRINT_MENU_STATUS("K4");
|
|
|
- #endif
|
|
|
- sent4_key = true;
|
|
|
- }
|
|
|
- return 1;
|
|
|
- }
|
|
|
- else // 按键释放
|
|
|
- {
|
|
|
- sent4_key = false;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
- return 0;
|
|
|
-}
|
|
|
|
|
|
|
|
|
void updatekeystate(void)
|
|
|
{
|
|
|
- if(sys_mode[1] == PDA_MODE)//PDAmode 需DTU开锁
|
|
|
- {
|
|
|
- KEY_1_Scan_PDA();
|
|
|
- KEY_2_Scan_PDA();
|
|
|
- KEY_3_Scan_PDA();
|
|
|
- KEY_4_Scan_PDA();
|
|
|
- }
|
|
|
- else if(sys_mode[1] == DTU_MODE )
|
|
|
- {
|
|
|
- KEY_1_Scan_DTU();
|
|
|
- KEY_2_Scan_DTU();
|
|
|
- KEY_3_Scan_DTU();
|
|
|
- KEY_4_Scan_DTU();
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
-uint16_t Mac1[4];
|
|
|
-uint16_t Mac2[4];
|
|
|
-uint16_t Mac3[4];
|
|
|
-uint16_t Mac4[4];
|
|
|
-
|
|
|
-void WritekeyInfo(void)
|
|
|
-{
|
|
|
- switch(menu.PreNext)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- {
|
|
|
- if(menu.current!=0xA2)//A1界面
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if (menu.next == i) {
|
|
|
-
|
|
|
- lockinfo.SN1CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN1ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN1DIS = menu_dict[i].disconnected_msg;
|
|
|
-
|
|
|
- Mac1[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac1[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac1[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac1,Sn1InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac1, Sn1InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if ((menu.next+0xf) == i) {
|
|
|
- lockinfo.SN1CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN1ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN1DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac1[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac1[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac1[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac1,Sn1InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac1, Sn1InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- menu.home &= 0x0FFF;
|
|
|
- sprintf(lockinfo.SN1name, "%04X", lockinfo.mac1[2]);
|
|
|
- L1bd = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 1:
|
|
|
- {
|
|
|
- if(menu.current!=0xA2)
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if (menu.next == i) {
|
|
|
-
|
|
|
- lockinfo.SN2CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN2ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN2DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac2[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac2[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac2[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac2,Sn2InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac2, Sn2InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if ((menu.next+0xf) == i) {
|
|
|
- lockinfo.SN2CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN2ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN2DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac2[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac2[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac2[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac2,Sn2InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac2, Sn2InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- menu.home &= 0xF0FF;
|
|
|
- sprintf(lockinfo.SN2name, "%04X", lockinfo.mac2[2]);
|
|
|
- L2bd = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 2:
|
|
|
- {
|
|
|
- if(menu.current!=0xA2)
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if (menu.next == i) {
|
|
|
-
|
|
|
- lockinfo.SN3CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN3ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN3DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac3[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac3[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac3[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac3,Sn3InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac3, Sn3InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if ((menu.next+0xf) == i) {
|
|
|
- lockinfo.SN3CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN3ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN3DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac3[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac3[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac3[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac3,Sn3InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac3, Sn3InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- sprintf(lockinfo.SN3name, "%04X", lockinfo.mac3[2]);
|
|
|
- menu.home &= 0xFF0F;
|
|
|
- L3bd = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- case 3:
|
|
|
- {
|
|
|
- if(menu.current!=0xA2)
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if (menu.next == i) {
|
|
|
-
|
|
|
- lockinfo.SN4CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN4ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN4DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac4[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac4[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac4[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac4,Sn4InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac4, Sn4InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- for (int i = 0; i < sizeof(menu_dict) / sizeof(menu_dict[0]); i++) {
|
|
|
- if ((menu.next+0xf) == i) {
|
|
|
- lockinfo.SN4CONN = menu_dict[i].command;
|
|
|
- lockinfo.SN4ED = menu_dict[i].connected_msg;
|
|
|
- lockinfo.SN4DIS = menu_dict[i].disconnected_msg;
|
|
|
- Mac4[0] = (menu_dict[i].mac >> 32) & 0xFFFF;
|
|
|
- Mac4[1] = (menu_dict[i].mac >> 16) & 0xFFFF;
|
|
|
- Mac4[2] = menu_dict[i].mac & 0xFFFF;
|
|
|
- Flash_WriteBytes(Mac4,Sn4InfoAddr,3);//占用6个字节
|
|
|
- Flash_ReadBytes(lockinfo.mac4, Sn4InfoAddr, 3);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- menu.home &= 0xFFF0;
|
|
|
- sprintf(lockinfo.SN4name, "%04X", lockinfo.mac4[2]);
|
|
|
- L4bd = true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
+ KEY_1_Scan_PDA();
|
|
|
+ KEY_2_Scan_PDA();
|
|
|
+ KEY_3_Scan_PDA();
|
|
|
+ KEY_4_Scan_PDA();
|
|
|
}
|
|
|
|
|
|
-
|