interface.c 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. #include "interface.h"
  2. #include "bmp.h"
  3. #include "keyboard.h"
  4. #include "tt808.h"
  5. #include "usart.h"
  6. #include "key.h"
  7. /**
  8. * @breaf 本页定义变量
  9. */
  10. //结构体
  11. Menu_table menu;
  12. TipsFlag tipsflag;
  13. extern LockInfo lockinfo;
  14. //布尔
  15. bool refresh=false;
  16. bool ReturnInterface = false;
  17. //字符串
  18. //方法
  19. void logoDisplay(void);
  20. void lockWork(void);//界面1 一键施解封
  21. void ApplyPermission(void);//界面2 申请权限
  22. void PleaseWakeUp(void);//界面3 请唤醒
  23. void SecondMain(void);//次主界面
  24. void MACbindDisplay(void);//界面4
  25. /**
  26. * @breaf 界面跳转
  27. */
  28. void Jump_interface(void)
  29. {
  30. if(refresh)
  31. {
  32. OLED_Clear();
  33. refresh=false;
  34. }
  35. switch(menu.current)
  36. {
  37. case 0:
  38. {
  39. logoDisplay();//无任何绑定,显示Logo界面
  40. //lockWork();
  41. //ApplyPermission();
  42. //PleaseWakeUp();
  43. //SecondMain();
  44. break;
  45. }
  46. case 1:
  47. {
  48. lockWork();
  49. break;
  50. }
  51. case 2:
  52. {
  53. ApplyPermission();
  54. break;
  55. }
  56. case 3:
  57. {
  58. PleaseWakeUp();
  59. break;
  60. }
  61. case 4:
  62. {
  63. MACbindDisplay();
  64. break;
  65. }
  66. case 5:
  67. {
  68. SecondMain();
  69. break;
  70. }
  71. }
  72. }
  73. void MACbindDisplay(void)
  74. {
  75. if(menu.down<4)
  76. {
  77. OLED_ShowString(5,0,(unsigned char*)lockinfo.SNname[0],16,1);
  78. OLED_ShowString(5,15,(unsigned char*)lockinfo.SNname[1],16,1);
  79. OLED_ShowString(5,30,(unsigned char*)lockinfo.SNname[2],16,1);
  80. OLED_ShowString(5,45,(unsigned char*)lockinfo.SNname[3],16,1);
  81. if(menu.down==0)
  82. OLED_ShowString(5,0,(unsigned char*)lockinfo.SNname[0],16,0);
  83. if(menu.down==1)
  84. OLED_ShowString(5,15,(unsigned char*)lockinfo.SNname[1],16,0);
  85. if(menu.down==2)
  86. OLED_ShowString(5,30,(unsigned char*)lockinfo.SNname[2],16,0);
  87. if(menu.down==3)
  88. OLED_ShowString(5,45,(unsigned char*)lockinfo.SNname[3],16,0);
  89. OLED_ShowString(110,45,(unsigned char*)"1/2",12,1);
  90. }
  91. else
  92. {
  93. OLED_ShowString(5,0,(unsigned char*)lockinfo.SNname[4],16,1);
  94. OLED_ShowString(5,15,(unsigned char*)lockinfo.SNname[5],16,1);
  95. OLED_ShowString(5,30,(unsigned char*)lockinfo.SNname[6],16,1);
  96. OLED_ShowString(5,45,(unsigned char*)lockinfo.SNname[7],16,1);
  97. if(menu.down==4)
  98. OLED_ShowString(5,0,(unsigned char*)lockinfo.SNname[4],16,0);
  99. if(menu.down==5)
  100. OLED_ShowString(5,15,(unsigned char*)lockinfo.SNname[5],16,0);
  101. if(menu.down==6)
  102. OLED_ShowString(5,30,(unsigned char*)lockinfo.SNname[6],16,0);
  103. if(menu.down==7)
  104. OLED_ShowString(5,45,(unsigned char*)lockinfo.SNname[7],16,0);
  105. OLED_ShowString(110,45,(unsigned char*)"2/2",12,1);
  106. }
  107. }
  108. void logoDisplay(void)//界面1
  109. {
  110. if(!MgnssFlag)
  111. {
  112. OLED_ShowString(20,10,(unsigned char*)"System Staring...",12,0);
  113. }
  114. else
  115. {
  116. OLED_ShowPicture(0,0,128,64,BMP7,1);
  117. }
  118. }
  119. void lockWork(void) //界面2
  120. {
  121. char count[6]; // 数字1转换为字符串形式最多需要2个字符,再加上终止符'\0'共6个字符的空间
  122. sprintf(count, "%u", macsetptr->macCount);
  123. OLED_ShowChinese(18,2,56,16,1);//一
  124. OLED_ShowChinese(38,2,57,16,1);//键
  125. OLED_ShowChinese(58,2,18,16,1);//解
  126. OLED_ShowChinese(78,2,19,16,1);//封
  127. OLED_ShowChinese(18,25,56,16,1);//一
  128. OLED_ShowChinese(38,25,57,16,1);//键
  129. OLED_ShowChinese(58,25,17,16,1);//施
  130. OLED_ShowChinese(78,25,19,16,1);//封
  131. OLED_ShowChinese(20,48,26,12,1);//已
  132. OLED_ShowChinese(35,48,27,12,1);//绑
  133. OLED_ShowChinese(50,48,28,12,1);//定
  134. OLED_ShowChinese(65,48,29,12,1);//锁
  135. OLED_ShowString(80,48,(unsigned char*)"(",12,1);
  136. OLED_ShowString(89,48,(unsigned char*)count,12,1);
  137. OLED_ShowString(95,48,(unsigned char*)")",12,1);
  138. //*选择
  139. if(menu.down==0)
  140. {
  141. OLED_ShowString(100,2,(unsigned char*)"<<-",12,0);
  142. }
  143. else if(menu.down==1)
  144. {
  145. OLED_ShowString(100,25,(unsigned char*)"<<-",12,0);
  146. }
  147. else if(menu.down==2)
  148. {
  149. OLED_ShowString(110,48,(unsigned char*)"<<-",12,0);
  150. }
  151. }
  152. void ApplyPermission(void)//界面2 申请权限
  153. {
  154. char count[6]; // 数字1转换为字符串形式最多需要2个字符,再加上终止符'\0'共6个字符的空间
  155. sprintf(count, "%u", macsetptr->macCount);
  156. OLED_ShowChinese(5,20,58,16,1);//正
  157. OLED_ShowChinese(25,20,59,16,1);//在
  158. OLED_ShowChinese(45,20,60,16,1);//申
  159. OLED_ShowChinese(65,20,61,16,1);//请
  160. OLED_ShowChinese(85,20,62,16,1);//权
  161. OLED_ShowChinese(105,20,63,16,1);//限
  162. OLED_ShowString(10,48,(unsigned char*)">",12,1);
  163. OLED_ShowString(25,48,(unsigned char*)count,12,1);
  164. if(reAuth)
  165. {
  166. OLED_ShowString(60,48,(unsigned char*)"->>",12,1);
  167. OLED_ShowString(80,48,(unsigned char*)"Success",12,1);
  168. macsetptr->macWorked=0;
  169. macsetptr->macWorkedfail=0;
  170. macsetptr->openLockCount=0;
  171. macsetptr->closeLockCount=0;
  172. }
  173. }
  174. void PleaseWakeUp(void)//界面3 请唤醒
  175. {
  176. char workedCount[6]; // 数字1转换为字符串形式最多需要2个字符,再加上终止符'\0'共6个字符的空间
  177. sprintf(workedCount, "%u", macsetptr->macWorked);
  178. char workedFail[6]; // 数字1转换为字符串形式最多需要2个字符,再加上终止符'\0'共6个字符的空间
  179. sprintf(workedFail, "%u", macsetptr->macWorkedfail);
  180. OLED_ShowChinese(5,5,64,16,1); //请
  181. OLED_ShowChinese(25,5,65,16,1); //唤
  182. OLED_ShowChinese(45,5,66,16,1); //醒
  183. OLED_ShowChinese(65,5,67,16,1); //蓝
  184. OLED_ShowChinese(85,5,68,16,1); //牙
  185. OLED_ShowChinese(105,5,69,16,1);//锁
  186. OLED_ShowChinese(25,30,26,12,1);//已
  187. OLED_ShowChinese(40,30,30,12,1);//操
  188. OLED_ShowChinese(55,30,31,12,1);//作
  189. OLED_ShowChinese(70,30,29,12,1);//锁
  190. OLED_ShowString(85,30,(unsigned char*)"(",12,1);
  191. OLED_ShowString(94,30,(unsigned char*)workedCount,12,1);
  192. OLED_ShowString(100,30,(unsigned char*)")",12,1);
  193. OLED_ShowChinese(25,50,19,12,1);//异
  194. OLED_ShowChinese(40,50,20,12,1);//常
  195. OLED_ShowChinese(55,50,4,12,1); //锁
  196. OLED_ShowChinese(70,50,32,12,1);//数
  197. OLED_ShowString(85,50,(unsigned char*)"(",12,1);
  198. OLED_ShowString(94,50,(unsigned char*)workedFail,12,1);
  199. OLED_ShowString(100,50,(unsigned char*)")",12,1);
  200. }
  201. void SecondMain(void)//次主界面
  202. {
  203. char openCount[6]; // 数字1转换为字符串形式最多需要2个字符,再加上终止符'\0'共6个字符的空间
  204. char closeCount[6]; // 数字1转换为字符串形式最多需要2个字符,再加上终止符'\0'共6个字符的空间
  205. //*所有锁已
  206. if(macsetptr->sta==BtUnlocking)
  207. {
  208. OLED_ShowChinese(85,5,18,16,1);//解
  209. macsetptr->openLockCount = macsetptr->macWorked;
  210. }
  211. else if(macsetptr->sta==LockSuccessClosed)
  212. {
  213. OLED_ShowChinese(85,5,17,16,1);//施
  214. macsetptr->closeLockCount = macsetptr->macWorked;
  215. }
  216. sprintf(openCount, "%u", macsetptr->openLockCount);
  217. sprintf(closeCount, "%u", macsetptr->closeLockCount);
  218. //*解封
  219. OLED_ShowChinese(25,30,11,12,1);//解
  220. OLED_ShowChinese(40,30,10,12,1);//封
  221. OLED_ShowChinese(55,30,29,12,1);//锁
  222. OLED_ShowChinese(70,30,32,12,1);//数
  223. OLED_ShowString(85,30,(unsigned char*)"(",12,1);
  224. OLED_ShowString(94,30,(unsigned char*)openCount,12,1);
  225. OLED_ShowString(100,30,(unsigned char*)")",12,1);
  226. //*施封
  227. OLED_ShowChinese(25,50,9,12,1); //施
  228. OLED_ShowChinese(40,50,10,12,1);//封
  229. OLED_ShowChinese(55,50,29,12,1);//锁
  230. OLED_ShowChinese(70,50,32,12,1);//数
  231. OLED_ShowString(85,50,(unsigned char*)"(",12,1);
  232. OLED_ShowString(94,50,(unsigned char*)closeCount,12,1);
  233. OLED_ShowString(100,50,(unsigned char*)")",12,1);
  234. OLED_ShowChinese(5,5,71,16,1);//所
  235. OLED_ShowChinese(25,5,72,16,1);//有
  236. OLED_ShowChinese(45,5,69,16,1);//锁
  237. OLED_ShowChinese(65,5,73,16,1);//已
  238. OLED_ShowChinese(105,5,19,16,1);//封
  239. }