ucgui界面设计演示样例2

本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.


环境:

主机:WIN8

开发环境:MDK4.72

ucgui版本号:3.90

mcu: stm32f103VE

说明:

本程序基于ucgui对话框机制设计了一个界面,并用6个实体按键对界面进行控制,并添加了进度条显示

效果图:

 

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamRoOTk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />

源代码:

gui_match.h

  1. /*********************************************************************
  2. * 对码绑定界面模块头文件
  3. * (c)copyright 2014,jdh
  4. * All Right Reserved
  5. *新建时间:2014/10/24 by jdh
  6. **********************************************************************/
  7.  
  8. #ifndef _GUI_MATCH_H_
  9. #define _GUI_MATCH_H_
  10.  
  11. /*********************************************************************
  12. * 头文件
  13. **********************************************************************/
  14.  
  15. #include "world.h"
  16.  
  17. /*********************************************************************
  18. * 宏定义
  19. **********************************************************************/
  20.  
  21. /*********************************************************************
  22. * 工作间隔
  23. *单位:ms
  24. **********************************************************************/
  25.  
  26. #define INTERVAL_GUI_MATCH 100
  27.  
  28. /*********************************************************************
  29. * 进度条显示时间
  30. *单位:ms
  31. **********************************************************************/
  32.  
  33. #define TIME_PROGBAR_GUI_MATCH 3000
  34.  
  35. /*********************************************************************
  36. * 函数
  37. **********************************************************************/
  38.  
  39. /*********************************************************************
  40. * 模块加载
  41. **********************************************************************/
  42.  
  43. void gui_match_load(void);
  44.  
  45. /*********************************************************************
  46. * 模块执行
  47. **********************************************************************/
  48.  
  49. void gui_match_run(void);
  50.  
  51. /*********************************************************************
  52. * 设置显示状态
  53. *參数:enable:0:关闭显示,1:打开显示
  54. **********************************************************************/
  55.  
  56. void gui_match_show(uint8_t enable);
  57.  
  58. /*********************************************************************
  59. * 得到当前的显示状态
  60. *返回:0:关闭显示,1:打开显示
  61. **********************************************************************/
  62.  
  63. uint8_t gui_match_get_show(void);
  64.  
  65. /*********************************************************************
  66. * 得到绑定的脚镣id
  67. *返回:0:未绑定,其它:脚镣id
  68. **********************************************************************/
  69.  
  70. uint16_t gui_match_get_fetter_id_bind(void);
  71.  
  72. #endif

gui_match.c

  1. /*********************************************************************
  2. * 对码绑定界面模块主文件
  3. * (c)copyright 2014,jdh
  4. * All Right Reserved
  5. *新建时间:2014/10/24 by jdh
  6. *改动时间:2014/10/29 by jdh
  7. **********************************************************************/
  8.  
  9. /*********************************************************************
  10. * 头文件
  11. **********************************************************************/
  12.  
  13. #include "gui_match.h"
  14. #include "cc1100.h"
  15. #include "gui_main.h"
  16.  
  17. /*********************************************************************
  18. * 宏定义
  19. **********************************************************************/
  20.  
  21. #define ID_FRAMEWIN (GUI_ID_USER + 0x10)
  22. #define ID_BUTTON_OK (GUI_ID_USER + 0x11)
  23. #define ID_BUTTON_CANCEL (GUI_ID_USER + 0x12)
  24. #define ID_BUTTON_UP (GUI_ID_USER + 0x13)
  25. #define ID_BUTTON_DOWN (GUI_ID_USER + 0x14)
  26. #define ID_BUTTON_LEFT (GUI_ID_USER + 0x15)
  27. #define ID_BUTTON_RIGHT (GUI_ID_USER + 0x16)
  28. #define ID_TEXT_MATCH (GUI_ID_USER + 0x17)
  29. #define ID_TEXT_ID (GUI_ID_USER + 0x18)
  30. #define ID_TEXT_PROGBAR (GUI_ID_USER + 0x19)
  31. #define ID_LISTBOX (GUI_ID_USER + 0x1A)
  32. #define ID_PROGBAR (GUI_ID_USER + 0x1B)
  33.  
  34. /*********************************************************************
  35. * 列表框存储的数据数量
  36. **********************************************************************/
  37.  
  38. #define LIST_LEN 20
  39.  
  40. /*********************************************************************
  41. * 数据结构
  42. **********************************************************************/
  43.  
  44. /*********************************************************************
  45. * 按键状态
  46. **********************************************************************/
  47.  
  48. struct _Key_State
  49. {
  50. uint8_t ok;
  51. uint8_t cancel;
  52. uint8_t up;
  53. uint8_t down;
  54. uint8_t left;
  55. uint8_t right;
  56. };
  57.  
  58. /*********************************************************************
  59. * 列表框缓存
  60. **********************************************************************/
  61.  
  62. struct _List
  63. {
  64. uint8_t len;
  65. uint16_t buf[LIST_LEN];
  66. };
  67.  
  68. /*********************************************************************
  69. * 静态变量
  70. **********************************************************************/
  71.  
  72. /*********************************************************************
  73. * 界面句柄
  74. **********************************************************************/
  75.  
  76. static WM_HWIN Handle_Gui;
  77.  
  78. /*********************************************************************
  79. * 资源表
  80. **********************************************************************/
  81.  
  82. static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] =
  83. {
  84. { FRAMEWIN_CreateIndirect, "Frame3", ID_FRAMEWIN, 0, 0, 240, 320, 0, 0x0},
  85. { BUTTON_CreateIndirect, "OK", ID_BUTTON_OK, 5, 255, 40, 20, 0, 0x0},
  86. { BUTTON_CreateIndirect, "Button", ID_BUTTON_DOWN, 95, 280, 40, 20, 0, 0x0},
  87. { BUTTON_CreateIndirect, "UP", ID_BUTTON_UP, 95, 255, 40, 20, 0, 0x0},
  88. { BUTTON_CreateIndirect, "CANCEL", ID_BUTTON_CANCEL, 185, 255, 40, 20, 0, 0x0},
  89. { BUTTON_CreateIndirect, "RIGHT", ID_BUTTON_RIGHT, 140, 270, 40, 20, 0, 0x0},
  90. { BUTTON_CreateIndirect, "LEFT", ID_BUTTON_LEFT, 50, 270, 40, 20, 0, 0x0},
  91. { TEXT_CreateIndirect, "Match", ID_TEXT_MATCH, 140, 15, 80, 20, 0, 0x0},
  92. { TEXT_CreateIndirect, "ID", ID_TEXT_ID, 140, 40, 80, 20, 0, 0x0},
  93. { TEXT_CreateIndirect, "", ID_TEXT_PROGBAR, 140, 65, 80, 20, 0, 0x0},
  94. { LISTBOX_CreateIndirect, "Listbox", ID_LISTBOX, 5, 10, 120, 220, 0, 0x0},
  95. { PROGBAR_CreateIndirect, "Progbar", ID_PROGBAR, 140, 85, 80, 20, 0, 0x0},
  96. // USER START (Optionally insert additional widgets)
  97. // USER END
  98. };
  99.  
  100. /*********************************************************************
  101. * 上次工作时间
  102. **********************************************************************/
  103.  
  104. static struct _Time Time_Last =
  105. {
  106. .s = 0,
  107. .ms = 0,
  108. .us = 0
  109. };
  110.  
  111. /*********************************************************************
  112. * 进度条開始的时间
  113. **********************************************************************/
  114.  
  115. static struct _Time Time_Progbar =
  116. {
  117. .s = 0,
  118. .ms = 0,
  119. .us = 0
  120. };
  121.  
  122. /*********************************************************************
  123. * 接收CC1100的时间
  124. **********************************************************************/
  125.  
  126. static struct _Time Time_Recv_CC1100 =
  127. {
  128. .s = 0,
  129. .ms = 0,
  130. .us = 0
  131. };
  132.  
  133. /*********************************************************************
  134. * 按键状态
  135. **********************************************************************/
  136.  
  137. static struct _Key_State Key_State =
  138. {
  139. .ok = 0,
  140. .cancel = 0,
  141. .up = 0,
  142. .down = 0,
  143. .left = 0,
  144. .right = 0
  145. };
  146.  
  147. /*********************************************************************
  148. * 当前显示状态
  149. *0:未显示,1显示
  150. **********************************************************************/
  151.  
  152. static uint8_t State_Show = 0;
  153.  
  154. /*********************************************************************
  155. * 进度条动画開始标志
  156. *0:终止,1:扫描,2:绑定
  157. **********************************************************************/
  158.  
  159. static uint8_t Flag_Progbar = 0;
  160.  
  161. /*********************************************************************
  162. * 列表框存储器
  163. **********************************************************************/
  164.  
  165. static struct _List List =
  166. {
  167. .len = 0
  168. };
  169.  
  170. /*********************************************************************
  171. * 已绑定脚镣ID
  172. *0:未绑定,其它:ID
  173. **********************************************************************/
  174.  
  175. static uint16_t Fetter_Id_Bind = 0;
  176.  
  177. /*********************************************************************
  178. * 静态函数
  179. **********************************************************************/
  180.  
  181. /*********************************************************************
  182. * 回调函数
  183. **********************************************************************/
  184.  
  185. static void _cbDialog(WM_MESSAGE * pMsg);
  186.  
  187. /*********************************************************************
  188. * 定时工作
  189. **********************************************************************/
  190.  
  191. static void slot_tick(void);
  192.  
  193. /*********************************************************************
  194. * 按键处理
  195. **********************************************************************/
  196.  
  197. static void deal_key(void);
  198.  
  199. /*********************************************************************
  200. * 进度条动画
  201. *參数:percent:百分比
  202. **********************************************************************/
  203.  
  204. static void progbar_show(uint8_t percent);
  205.  
  206. /*********************************************************************
  207. * 发送125k绑定信号
  208. **********************************************************************/
  209.  
  210. static void emit_125k_bind(void);
  211.  
  212. /*********************************************************************
  213. * 处理cc1100接收数据
  214. *參数:task:0:扫描,1:绑定
  215. **********************************************************************/
  216.  
  217. static void deal_cc1100(uint8_t task);
  218.  
  219. /*********************************************************************
  220. * 产生激发数据
  221. *參数:cmd:功能码
  222. * data:产生的2字节激发数据
  223. **********************************************************************/
  224.  
  225. static void generate_exciter_data(uint8_t cmd,uint8_t *data);
  226.  
  227. /*********************************************************************
  228. * 函数
  229. **********************************************************************/
  230.  
  231. /*********************************************************************
  232. * 模块加载
  233. **********************************************************************/
  234.  
  235. void gui_match_load(void)
  236. {
  237. //新建界面
  238. Handle_Gui = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate),
  239. _cbDialog, WM_HBKWIN, 0, 0);
  240. gui_match_show(OFF);
  241. }
  242.  
  243. /*********************************************************************
  244. * 模块执行
  245. **********************************************************************/
  246.  
  247. void gui_match_run(void)
  248. {
  249. struct _Time time;
  250.  
  251. //推断当前是否显示
  252. if (State_Show == 0)
  253. {
  254. return;
  255. }
  256.  
  257. //推断当前是否处于扫描状态
  258. if (Flag_Progbar == 1)
  259. {
  260. deal_cc1100(0);
  261. }
  262. else
  263. {
  264. //推断当前是否处于绑定状态
  265. if (Flag_Progbar == 2)
  266. {
  267. deal_cc1100(1);
  268. }
  269. }
  270.  
  271. //得到当前时间
  272. get_time(&time);
  273.  
  274. //推断是否到工作时间
  275. if (sub_time(time,Time_Last) >= INTERVAL_GUI_MATCH * 1000)
  276. {
  277. //更新时间
  278. Time_Last = time;
  279.  
  280. //定时工作
  281. slot_tick();
  282. }
  283. }
  284.  
  285. /*********************************************************************
  286. * 设置显示状态
  287. *參数:enable:0:关闭显示,1:打开显示
  288. **********************************************************************/
  289.  
  290. void gui_match_show(uint8_t enable)
  291. {
  292. WM_HWIN hItem;
  293.  
  294. State_Show = enable;
  295. if (enable)
  296. {
  297. //设置列表框为焦点
  298. hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
  299. WM_SetFocus(hItem);
  300.  
  301. WM_ShowWindow(Handle_Gui);
  302. }
  303. else
  304. {
  305. WM_HideWindow(Handle_Gui);
  306. }
  307. }
  308.  
  309. /*********************************************************************
  310. * 得到当前的显示状态
  311. *返回:0:关闭显示,1:打开显示
  312. **********************************************************************/
  313.  
  314. uint8_t gui_match_get_show(void)
  315. {
  316. return State_Show;
  317. }
  318.  
  319. /*********************************************************************
  320. * 得到绑定的脚镣id
  321. *返回:0:未绑定,其它:脚镣id
  322. **********************************************************************/
  323.  
  324. uint16_t gui_match_get_fetter_id_bind(void)
  325. {
  326. //return Fetter_Id_Bind;
  327. return 0x100;
  328. }
  329.  
  330. /*********************************************************************
  331. * 定时工作
  332. **********************************************************************/
  333.  
  334. static void slot_tick(void)
  335. {
  336. uint32_t ms = 0;
  337. uint8_t percent = 0;
  338. WM_HWIN hItem;
  339.  
  340. //按键处理
  341. deal_key();
  342.  
  343. //推断当前进度条是否须要显示
  344. if (Flag_Progbar)
  345. {
  346. //推断是否是扫描
  347. if (Flag_Progbar == 1)
  348. {
  349. //推断激发信号是否结束
  350. if (inf_exciter_get_busy() == 0)
  351. {
  352. //关闭激发模块电源
  353. inf_exciter_power(OFF);
  354. }
  355. }
  356.  
  357. //推断是否到工作时间
  358. ms = sub_time(Time_Last,Time_Progbar) / 1000;
  359. if (ms < TIME_PROGBAR_GUI_MATCH)
  360. {
  361. percent = ms * 100 / TIME_PROGBAR_GUI_MATCH;
  362. progbar_show(percent);
  363. }
  364. else
  365. {
  366. //结束进度条动画
  367. Flag_Progbar = 0;
  368. progbar_show(100);
  369.  
  370. //文本:结束
  371. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_PROGBAR);
  372. TEXT_SetFont(hItem, &GUI_FontHZ12);
  373. TEXT_SetText(hItem,"结束");
  374. }
  375. }
  376. }
  377.  
  378. /*********************************************************************
  379. * 按键处理
  380. **********************************************************************/
  381.  
  382. static void deal_key(void)
  383. {
  384. WM_HWIN hItem;
  385. uint8_t index = 0;
  386. uint16_t id = 0;
  387. uint8_t data[3] = {0};
  388.  
  389. //推断下键是否按下
  390. if (inf_key_detect_hold(KEY_DOWN))
  391. {
  392. if (Key_State.down == 0)
  393. {
  394. Key_State.down = 1;
  395.  
  396. //按键状态改变
  397. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_DOWN);
  398. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
  399.  
  400. //发送按键信号
  401. GUI_SendKeyMsg(GUI_KEY_DOWN, 1);
  402. }
  403. }
  404. else
  405. {
  406. if (Key_State.down == 1)
  407. {
  408. Key_State.down = 0;
  409.  
  410. //按键状态改变
  411. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_DOWN);
  412. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
  413. }
  414. }
  415.  
  416. //推断上键是否按下
  417. if (inf_key_detect_hold(KEY_UP))
  418. {
  419. if (Key_State.up == 0)
  420. {
  421. Key_State.up = 1;
  422.  
  423. //按键状态改变
  424. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_UP);
  425. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
  426.  
  427. //发送按键信号
  428. GUI_SendKeyMsg(GUI_KEY_UP, 1);
  429. }
  430. }
  431. else
  432. {
  433. if (Key_State.up == 1)
  434. {
  435. Key_State.up = 0;
  436.  
  437. //按键状态改变
  438. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_UP);
  439. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
  440. }
  441. }
  442.  
  443. //推断扫描键是否按下
  444. if (inf_key_detect_hold(KEY_OK) && (Flag_Progbar == 0))
  445. {
  446. if (Key_State.ok == 0)
  447. {
  448. Key_State.ok = 1;
  449.  
  450. //按键状态改变
  451. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_OK);
  452. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
  453.  
  454. //文本:開始扫描
  455. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_PROGBAR);
  456. TEXT_SetFont(hItem, &GUI_FontHZ12);
  457. TEXT_SetText(hItem,"開始扫描");
  458.  
  459. //開始扫描
  460. Flag_Progbar = 1;
  461. //保存当前时间
  462. get_time(&Time_Progbar);
  463.  
  464. //打开125k电源
  465. inf_exciter_power(ON);
  466. //发送125k绑定信号
  467. emit_125k_bind();
  468.  
  469. //清空列表框
  470. List.len = 0;
  471. hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
  472. listbox_clear(hItem);
  473. }
  474. }
  475. else
  476. {
  477. if (Key_State.ok == 1)
  478. {
  479. Key_State.ok = 0;
  480.  
  481. //按键状态改变
  482. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_OK);
  483. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
  484. }
  485. }
  486.  
  487. //推断清除键是否按下
  488. if (inf_key_detect_hold(KEY_LEFT))
  489. {
  490. if (Key_State.left == 0)
  491. {
  492. Key_State.left = 1;
  493.  
  494. //按键状态改变
  495. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_LEFT);
  496. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
  497.  
  498. //清空列表框
  499. List.len = 0;
  500. hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
  501. listbox_clear(hItem);
  502. }
  503. }
  504. else
  505. {
  506. if (Key_State.left == 1)
  507. {
  508. Key_State.left = 0;
  509.  
  510. //按键状态改变
  511. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_LEFT);
  512. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
  513. }
  514. }
  515.  
  516. //推断绑定键是否按下
  517. if (inf_key_detect_hold(KEY_RIGHT) && (Flag_Progbar == 0))
  518. {
  519. if (Key_State.right == 0)
  520. {
  521. Key_State.right = 1;
  522.  
  523. //按键状态改变
  524. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_RIGHT);
  525. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
  526.  
  527. //推断当前是否有项
  528. if (List.len == 0)
  529. {
  530. return;
  531. }
  532. //得到脚镣id
  533. hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
  534. index = LISTBOX_GetSel(hItem);
  535. if (index >= List.len)
  536. {
  537. //清空列表框
  538. List.len = 0;
  539. hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
  540. listbox_clear(hItem);
  541. return;
  542. }
  543. id = List.buf[index];
  544. //数据
  545. data[0] = 0;
  546. data[1] = 0;
  547. data[2] = 0;
  548. //等待能够发送
  549. while (cc1100_judge_tx() == 0);
  550. //发送对码绑定帧
  551. cc1100_tx(CMD_RF_BIND,id,data);
  552.  
  553. //開始绑定
  554. Flag_Progbar = 2;
  555. //保存当前时间
  556. get_time(&Time_Progbar);
  557.  
  558. //更新绑定的脚镣ID
  559. Fetter_Id_Bind = 0;
  560. //更新文本
  561. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_MATCH);
  562. TEXT_SetFont(hItem, &GUI_FontHZ12);
  563. TEXT_SetText(hItem,"未绑定脚镣");
  564.  
  565. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_ID);
  566. TEXT_SetFont(hItem, &GUI_FontHZ12);
  567. TEXT_SetText(hItem,"ID:0");
  568.  
  569. //更新文本
  570. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_PROGBAR);
  571. TEXT_SetFont(hItem, &GUI_FontHZ12);
  572. TEXT_SetText(hItem,"正在绑定");
  573. }
  574. }
  575. else
  576. {
  577. if (Key_State.right == 1)
  578. {
  579. Key_State.right = 0;
  580.  
  581. //按键状态改变
  582. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_RIGHT);
  583. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
  584. }
  585. }
  586.  
  587. //推断返回键是否按下
  588. if (inf_key_detect_hold(KEY_CANCEL) && (Flag_Progbar == 0))
  589. {
  590. if (Key_State.cancel== 0)
  591. {
  592. Key_State.cancel = 1;
  593.  
  594. //按键状态改变
  595. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_CANCEL);
  596. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS | BUTTON_STATE_PRESSED);
  597. }
  598. }
  599. else
  600. {
  601. if (Key_State.cancel == 1)
  602. {
  603. Key_State.cancel = 0;
  604.  
  605. //按键状态改变
  606. hItem = WM_GetDialogItem(Handle_Gui, ID_BUTTON_CANCEL);
  607. BUTTON_SetState(hItem,BUTTON_STATE_HASFOCUS);
  608.  
  609. //返回主界面
  610. gui_match_show(OFF);
  611. gui_main_show(ON);
  612. }
  613. }
  614. }
  615.  
  616. /*********************************************************************
  617. * 进度条动画
  618. *參数:percent:百分比
  619. **********************************************************************/
  620.  
  621. static void progbar_show(uint8_t percent)
  622. {
  623. WM_HWIN hItem;
  624.  
  625. //进度条显示
  626. hItem = WM_GetDialogItem(Handle_Gui, ID_PROGBAR);
  627. PROGBAR_SetValue(hItem,percent);
  628. }
  629.  
  630. /*********************************************************************
  631. * 发送125k绑定信号
  632. **********************************************************************/
  633.  
  634. static void emit_125k_bind(void)
  635. {
  636. uint8_t data[2] = {0};
  637.  
  638. //生成激活数据
  639. generate_exciter_data(CMD_125K_BIND,data);
  640. //生成新的激发序列
  641. inf_exciter_generate_frame(data,2);
  642.  
  643. //等待空暇
  644. while (inf_exciter_get_busy());
  645. //发送
  646. inf_exciter_start();
  647. }
  648.  
  649. /*********************************************************************
  650. * 处理cc1100接收数据
  651. *參数:task:0:扫描,1:绑定
  652. **********************************************************************/
  653.  
  654. static void deal_cc1100(uint8_t task)
  655. {
  656. struct _Rx_Buf_CC1100 buf;
  657. WM_HWIN hItem;
  658. char str[20] = {0};
  659.  
  660. buf = cc1100_get_rx_buf();
  661. //推断是否是最新帧
  662. if (compare_time(buf.time,Time_Recv_CC1100) != 2)
  663. {
  664. return;
  665. }
  666.  
  667. //保存时间
  668. Time_Recv_CC1100 = buf.time;
  669.  
  670. if (task == 0)
  671. {
  672. //推断功能码是否是上传脚镣ID帧
  673. if (buf.cmd != CMD_RF_UP_FETTER_ID)
  674. {
  675. return;
  676. }
  677.  
  678. //推断是否还有存储空间
  679. if (List.len >= LIST_LEN)
  680. {
  681. return;
  682. }
  683.  
  684. //更新数据
  685. List.buf[List.len++] = buf.src_id;
  686. sprintf(str,"%d",List.buf[List.len - 1]);
  687. //更新列表框
  688. hItem = WM_GetDialogItem(Handle_Gui, ID_LISTBOX);
  689. LISTBOX_AddString(hItem, str);
  690.  
  691. return;
  692. }
  693.  
  694. if (task == 1)
  695. {
  696. //推断功能码是否是确认对码绑定
  697. if (buf.cmd != CMD_RF_ACK_BIND)
  698. {
  699. return;
  700. }
  701.  
  702. //更新绑定的脚镣ID
  703. Fetter_Id_Bind = buf.src_id;
  704. //更新文本
  705. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_MATCH);
  706. TEXT_SetFont(hItem, &GUI_FontHZ12);
  707. TEXT_SetText(hItem,"已绑定脚镣");
  708.  
  709. hItem = WM_GetDialogItem(Handle_Gui, ID_TEXT_ID);
  710. TEXT_SetFont(hItem, &GUI_FontHZ12);
  711. sprintf(str,"ID:0x%x",Fetter_Id_Bind);
  712. TEXT_SetText(hItem,str);
  713.  
  714. return;
  715. }
  716. }
  717.  
  718. /*********************************************************************
  719. * 产生激发数据
  720. *參数:cmd:功能码
  721. * data:产生的2字节激发数据
  722. **********************************************************************/
  723.  
  724. static void generate_exciter_data(uint8_t cmd,uint8_t *data)
  725. {
  726. uint8_t temp = 0;
  727. uint8_t check = 0;
  728.  
  729. temp = cmd << 6;
  730. temp |= LOCAL_ID >> 4;
  731. data[0] = temp;
  732. temp = LOCAL_ID << 4;
  733.  
  734. check = checksum4(data,2);
  735. temp |= check;
  736. data[1] = temp;
  737. }
  738.  
  739. /*********************************************************************
  740. * 回调函数
  741. **********************************************************************/
  742.  
  743. static void _cbDialog(WM_MESSAGE * pMsg)
  744. {
  745. WM_HWIN hItem;
  746.  
  747. switch (pMsg->MsgId)
  748. {
  749. case WM_INIT_DIALOG:
  750. {
  751. //初始化窗口
  752. //添加小按键
  753. FRAMEWIN_AddCloseButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 0);
  754. FRAMEWIN_AddMaxButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 1);
  755. FRAMEWIN_AddMinButton(pMsg->hWin, FRAMEWIN_BUTTON_RIGHT, 2);
  756. FRAMEWIN_SetFont(pMsg->hWin, &GUI_FontHZ12);
  757. FRAMEWIN_SetText(pMsg->hWin,"对码绑定");
  758.  
  759. //初始化列表框
  760. hItem = WM_GetDialogItem(pMsg->hWin, ID_LISTBOX);
  761. // //设置内容
  762. // LISTBOX_SetFont(hItem, &GUI_FontHZ12);
  763. // LISTBOX_AddString(hItem, "0x10");
  764. // LISTBOX_AddString(hItem, "0x11");
  765. // LISTBOX_AddString(hItem, "0x12");
  766. // LISTBOX_AddString(hItem, "0x13");
  767. // LISTBOX_AddString(hItem, "0x14");
  768. // List.buf[0] = 0x10;
  769. // List.buf[1] = 0x11;
  770. // List.buf[2] = 0x12;
  771. // List.buf[3] = 0x13;
  772. // List.buf[4] = 0x14;
  773. // List.len = 5;
  774.  
  775. //设置为焦点
  776. WM_SetFocus(hItem);
  777. SCROLLBAR_CreateAttached(hItem, SCROLLBAR_CF_VERTICAL);
  778.  
  779. //初始化按键
  780. hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_OK);
  781. BUTTON_SetFont(hItem, &GUI_FontHZ12);
  782. BUTTON_SetText(hItem,"扫描");
  783.  
  784. hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_CANCEL);
  785. BUTTON_SetFont(hItem, &GUI_FontHZ12);
  786. BUTTON_SetText(hItem,"返回");
  787.  
  788. hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_UP);
  789. BUTTON_SetFont(hItem, &GUI_FontHZ12);
  790. BUTTON_SetText(hItem,"上");
  791.  
  792. hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_DOWN);
  793. BUTTON_SetFont(hItem, &GUI_FontHZ12);
  794. BUTTON_SetText(hItem,"下");
  795.  
  796. hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_LEFT);
  797. BUTTON_SetFont(hItem, &GUI_FontHZ12);
  798. BUTTON_SetText(hItem,"清除");
  799.  
  800. hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_RIGHT);
  801. BUTTON_SetFont(hItem, &GUI_FontHZ12);
  802. BUTTON_SetText(hItem,"绑定");
  803.  
  804. //初始化文本
  805. hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_MATCH);
  806. TEXT_SetFont(hItem, &GUI_FontHZ12);
  807. TEXT_SetText(hItem,"未绑定脚镣");
  808.  
  809. hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_ID);
  810. TEXT_SetFont(hItem, &GUI_FontHZ12);
  811. TEXT_SetText(hItem,"ID:0");
  812.  
  813. hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_PROGBAR);
  814. TEXT_SetFont(hItem, &GUI_FontHZ12);
  815. TEXT_SetText(hItem,"结束");
  816.  
  817. //初始化进度条
  818. hItem = WM_GetDialogItem(pMsg->hWin, ID_PROGBAR);
  819. PROGBAR_SetBarColor(hItem,0,GUI_RED);
  820. PROGBAR_SetBarColor(hItem,1,GUI_GREEN);
  821.  
  822. break;
  823. }
  824. default:
  825. {
  826. WM_DefaultProc(pMsg);
  827. break;
  828. }
  829. }
  830. }

ucgui界面设计演示样例2的更多相关文章

  1. JAVA简单Swing图形界面应用演示样例

    JAVA简单Swing图形界面应用演示样例 package org.rui.hello; import javax.swing.JFrame; /** * 简单的swing窗体 * @author l ...

  2. 百度地图 Android SDK - 检索功能使用的简单演示样例

    百度地图 SDK 不仅为广大开发人员提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发人员提供了多种 LBS 检索的能力. 通过这些接口,开发人员能够轻松的訪问百度的 LBS 数据,丰富自己的移 ...

  3. SNF快速开发平台MVC-各种级联绑定方式,演示样例程序(包含表单和表格控件)

    做了这么多项目,经常会使用到级联.联动的情况. 如:省.市.县.区.一级分类.二级分类.三级分类.仓库.货位. 方式:有表单需要做级联的,还是表格行上需要做级联操作的. 实现:实现方法也有很多种方式. ...

  4. 虚幻4Matinee功能 基本概念及简单演示样例(Sequence编辑器)

    虚幻4提供的Matinee功能十分强大,能够用来制作动画.录制视频. 它的核心想法是在Matinee编辑器内提供一套自己的时间坐标系,在这个相对时间内通过调节actor的属性来改变actor的状态,进 ...

  5. 【Unity 3D 游戏开发】Unity3D 入门 - 工作区域介绍 与 入门演示样例

    一. 工作区域具体解释 1. Scence视图 (场景设计面板) scence视图简单介绍 : 展示创建的游戏对象, 能够对全部的游戏对象进行 移动, 操作 和 放置; -- 演示样例 : 创建一个球 ...

  6. java 覆盖hashCode()深入探讨 代码演示样例

    java 翻盖hashCode()深入探讨 代码演示样例 package org.rui.collection2.hashcode; /** * 覆盖hashcode * 设计HashCode时最重要 ...

  7. java并行调度框架封装及演示样例

    參考资料:  阿里巴巴开源项目 CobarClient  源代码实现. 分享作者:闫建忠 分享时间:2014年5月7日 ---------------------------------------- ...

  8. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例

    什么是 JBoss MSC JBoss MSC 即 JBoss Modular Service Container,是第三代 JBoss 产品 JBoss 7和WildFfly的内核,JBoss MS ...

  9. 让你提前认识软件开发(19):C语言中的协议及单元測试演示样例

    第1部分 又一次认识C语言 C语言中的协议及单元測试演示样例 [文章摘要] 在实际的软件开发项目中.常常要实现多个模块之间的通信.这就须要大家约定好相互之间的通信协议,各自依照协议来收发和解析消息. ...

随机推荐

  1. leetcode刷题——排序

    知识点 CS-Notes 备忘-必备算法 题目 冒泡排序 插入排序 归并排序 选择排序 快速排序 希尔排序 堆排序 桶排序 题解 CS-Notes awesome-algorithm

  2. js 百度云搜索框

    // ==UserScript==// @name 百度云插件+APIKey// @namespace // @version 5.0.2.1// @description 在百度云网盘的页面添加一个 ...

  3. Myeclipse 添加Android开发工具

    1.JDK是必须的,同时配置相应环境变量. 2.Android SDK 下载后解压缩需要把SDK目录下的tools和platform-tools加入环境变量. 3.MyEclipse中安装ADT插件 ...

  4. Java-获取Class对象的名称

    package com.tj; public class MyClass2 { public static void main(String[] args) { Class cls = java.la ...

  5. cf898d Alarm Clock

    区间上有 \(n\) 个点,问你为达到目的:长度为 \(m\) 的区间内点的个数都 $ < k$需要去掉多少个点. 贪心.每个区间我们总是去掉最后的,也就是说除非万不得已我们是不会去掉点的. 队 ...

  6. Python 打印嵌套list中每个数据(遍历列表)

    new_list = ["H1","H2",1999] for each_list in new_list: print (each_list); 若列表中包含 ...

  7. hihoCoder1381 - Little Y's Tree

    Portal Description 给出一个\(n(n\leq10^5)\)个点的带边权的树.进行\(Q\)次询问:每次删除树上的\(k\)条边,求剩下的\(k+1\)个连通块中最远点对距离的和.\ ...

  8. uva 11806 容斥原理+dfs

    In most professional sporting events, cheerleaders play a major role in entertaining the spectators. ...

  9. EMD距离

    一.场景介绍   最近在研究一个场景:图片质量评分,给一张图片一个预测的分数.   里面提到了用 EMD(Earth Mover’s Distance)算法来评估两张图片之间的分布距离.下面主要讲解下 ...

  10. msp430入门学习42

    msp430的其他十 msp430入门学习