interface.c 7.8 KB

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