interface.c 7.4 KB

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