历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2020年10月15日 | ucgui界面设计示例2

2020-10-15 来源:eefocus

主机:WIN8

开发环境:MDK4.72

ucgui版本:3.90

mcu: stm32f103VE


说明:

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


效果图:

 

源码:gui_match.h

/*********************************************************************

* 对码绑定界面模块头文件

* (c)copyright 2014,jdh

*   All Right Reserved

*新建时间:2014/10/24 by jdh

**********************************************************************/

 

#ifndef _GUI_MATCH_H_

#define _GUI_MATCH_H_

 

/*********************************************************************

* 头文件

**********************************************************************/

 

#include "world.h"

 

/*********************************************************************

* 宏定义

**********************************************************************/

 

/*********************************************************************

* 工作间隔

*单位:ms

**********************************************************************/

 

#define INTERVAL_GUI_MATCH 100  

 

/*********************************************************************

* 进度条显示时间

*单位:ms

**********************************************************************/

 

#define TIME_PROGBAR_GUI_MATCH 3000 

 

/*********************************************************************

* 函数

**********************************************************************/

 

/*********************************************************************

* 模块载入

**********************************************************************/

 

void gui_match_load(void);

 

/*********************************************************************

* 模块运行

**********************************************************************/

 

void gui_match_run(void);

 

/*********************************************************************

* 设置显示状态

*参数:enable:0:关闭显示,1:打开显示

**********************************************************************/

 

void gui_match_show(uint8_t enable);

 

/*********************************************************************

* 得到当前的显示状态

*返回:0:关闭显示,1:打开显示

**********************************************************************/

 

uint8_t gui_match_get_show(void);

 

/*********************************************************************

* 得到绑定的脚镣id

*返回:0:未绑定,其他:脚镣id

**********************************************************************/

 

uint16_t gui_match_get_fetter_id_bind(void);

 

#endif

 



gui_match.c


/*********************************************************************

* 对码绑定界面模块主文件

* (c)copyright 2014,jdh

*   All Right Reserved

*新建时间:2014/10/24 by jdh

*修改时间:2014/10/29 by jdh

**********************************************************************/

 

/*********************************************************************

* 头文件

**********************************************************************/

 

#include "gui_match.h"

#include "cc1100.h"

#include "gui_main.h"

 

/*********************************************************************

* 宏定义

**********************************************************************/

 

#define ID_FRAMEWIN            (GUI_ID_USER + 0x10)

#define ID_BUTTON_OK            (GUI_ID_USER + 0x11)

#define ID_BUTTON_CANCEL            (GUI_ID_USER + 0x12)

#define ID_BUTTON_UP            (GUI_ID_USER + 0x13)

#define ID_BUTTON_DOWN            (GUI_ID_USER + 0x14)

#define ID_BUTTON_LEFT            (GUI_ID_USER + 0x15)

#define ID_BUTTON_RIGHT            (GUI_ID_USER + 0x16)

#define ID_TEXT_MATCH            (GUI_ID_USER + 0x17)

#define ID_TEXT_ID            (GUI_ID_USER + 0x18)

#define ID_TEXT_PROGBAR            (GUI_ID_USER + 0x19)

#define ID_LISTBOX            (GUI_ID_USER + 0x1A)

#define ID_PROGBAR            (GUI_ID_USER + 0x1B)

 

/*********************************************************************

* 列表框存储的数据数量

**********************************************************************/

 

#define LIST_LEN 20

 

/*********************************************************************

* 数据结构

**********************************************************************/

 

/*********************************************************************

* 按键状态

**********************************************************************/

 

struct _Key_State

{

uint8_t ok;

uint8_t cancel;

uint8_t up;

uint8_t down;

uint8_t left;

uint8_t right;

};

 

/*********************************************************************

* 列表框缓存

**********************************************************************/

 

struct _List

{

uint8_t len;

uint16_t buf[LIST_LEN];

};

 

/*********************************************************************

* 静态变量

**********************************************************************/

 

/*********************************************************************

* 界面句柄

**********************************************************************/

 

static WM_HWIN Handle_Gui;

 

/*********************************************************************

* 资源表

**********************************************************************/

 

static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = 

{

  { FRAMEWIN_CreateIndirect, "Frame3", ID_FRAMEWIN, 0, 0, 240, 320, 0, 0x0},

  { BUTTON_CreateIndirect, "OK", ID_BUTTON_OK, 5, 255, 40, 20, 0, 0x0},

  { BUTTON_CreateIndirect, "Button", ID_BUTTON_DOWN, 95, 280, 40, 20, 0, 0x0},

  { BUTTON_CreateIndirect, "UP", ID_BUTTON_UP, 95, 255, 40, 20, 0, 0x0},

  { BUTTON_CreateIndirect, "CANCEL", ID_BUTTON_CANCEL, 185, 255, 40, 20, 0, 0x0},

  { BUTTON_CreateIndirect, "RIGHT", ID_BUTTON_RIGHT, 140, 270, 40, 20, 0, 0x0},

  { BUTTON_CreateIndirect, "LEFT", ID_BUTTON_LEFT, 50, 270, 40, 20, 0, 0x0},

  { TEXT_CreateIndirect, "Match", ID_TEXT_MATCH, 140, 15, 80, 20, 0, 0x0},

  { TEXT_CreateIndirect, "ID", ID_TEXT_ID, 140, 40, 80, 20, 0, 0x0},

  { TEXT_CreateIndirect, "", ID_TEXT_PROGBAR, 140, 65, 80, 20, 0, 0x0},

  { LISTBOX_CreateIndirect, "Listbox", ID_LISTBOX, 5, 10, 120, 220, 0, 0x0},

  { PROGBAR_CreateIndirect, "Progbar", ID_PROGBAR, 140, 85, 80, 20, 0, 0x0},

  // USER START (Optionally insert additional widgets)

  // USER END

};

 

/*********************************************************************

* 上次工作时间

**********************************************************************/

 

static struct _Time Time_Last = 

{

    .s = 0,

    .ms = 0,

    .us = 0

};

 

/*********************************************************************

* 进度条开始的时间

**********************************************************************/

 

static struct _Time Time_Progbar = 

{

    .s = 0,

    .ms = 0,

    .us = 0

};

 

/*********************************************************************

* 接收CC1100的时间

**********************************************************************/

 

static struct _Time Time_Recv_CC1100 = 

{

    .s = 0,

    .ms = 0,

    .us = 0

};

 

/*********************************************************************

* 按键状态

**********************************************************************/

 

static struct _Key_State Key_State = 

{

.ok = 0,

.cancel = 0,

.up = 0,

.down = 0,

.left = 0,

.right = 0

};

 

/*********************************************************************

* 当前显示状态

*0:未显示,1显示

**********************************************************************/

 

static uint8_t State_Show = 0;

 

/*********************************************************************

* 进度条动画开始标志

*0:终止,1:扫描,2:绑定

**********************************************************************/

 

static uint8_t Flag_Progbar = 0;

 

/*********************************************************************

* 列表框存储器

**********************************************************************/

 

static struct _List List = 

{

.len = 0

};

 

/*********************************************************************

* 已绑定脚镣ID

*0:未绑定,其他:ID

**********************************************************************/

 

static uint16_t Fetter_Id_Bind = 0;

 

/*********************************************************************

* 静态函数

**********************************************************************/

 

/*********************************************************************

* 回调函数

**********************************************************************/

 

static void _cbDialog(WM_MESSAGE * pMsg);

 

/*********************************************************************

* 定时工作

**********************************************************************/

 

static void slot_tick(void);

 

/*********************************************************************

* 按键处理

**********************************************************************/

 

static void deal_key(void);

 

/*********************************************************************

* 进度条动画

*参数:percent:百分比

**********************************************************************/

 

static void progbar_show(uint8_t percent);

 

/*********************************************************************

* 发送125k绑定信号

**********************************************************************/

 

static void emit_125k_bind(void);

 

/*********************************************************************

* 处理cc1100接收数据

*参数:task:0:扫描,1:绑定

**********************************************************************/

推荐阅读

史海拾趣

成都芯进(CrossChip)公司的发展小趣事

2013年,三位在半导体行业积累了近十年经验的成电校友,怀揣着对电子技术的热爱和对国产芯片事业的执着,在成都创办了成都芯进电子有限公司(CrossChip)。公司初期专注于模拟和混合信号芯片设计,并以磁传感器芯片作为切入点。一年后,他们的首款产品——开关型霍尔传感器成功实现量产销售,为公司的发展奠定了坚实的基础。

Dearborn Electronics Inc公司的发展小趣事

随着技术的不断进步,Dearborn Electronics Inc.不断投入研发,推出了一系列具有创新性的产品,如钽电容、陶瓷电容器等。这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。同时,公司也积极拓展市场,将产品销售到全球各地,特别是医疗、石油、交通、工业等严苛应用领域。

Elcos AG公司的发展小趣事

随着国内市场的饱和,Elcos AG开始寻求国际化拓展的机会。公司首先在欧洲市场建立了销售网络,通过与当地合作伙伴的紧密合作,逐渐打开了欧洲市场的大门。随后,Elcos AG又将目光投向了亚洲和北美市场,通过设立海外办事处和参加国际展会等方式,积极推广公司品牌和产品。在国际市场的竞争中,Elcos AG凭借其卓越的产品品质和完善的售后服务体系,赢得了众多客户的信赖和支持。

FLEX LTD公司的发展小趣事

在电子科技日新月异的21世纪初,Elcos AG由一群志同道合的电子工程师创立。他们看到了电子元器件市场中的机遇,决定专注于研发和生产高性能的电子元器件。初始阶段,公司面临着资金紧张、技术挑战和市场认知度低的困境。然而,凭借对技术的执着和对市场的敏锐洞察,Elcos AG逐步攻克了技术难题,并通过与几家小型电子产品制造商的合作,打开了市场的大门。

Foxboro I C T Inc公司的发展小趣事

随着国内市场的饱和,Elcos AG开始寻求国际化拓展的机会。公司首先在欧洲市场建立了销售网络,通过与当地合作伙伴的紧密合作,逐渐打开了欧洲市场的大门。随后,Elcos AG又将目光投向了亚洲和北美市场,通过设立海外办事处和参加国际展会等方式,积极推广公司品牌和产品。在国际市场的竞争中,Elcos AG凭借其卓越的产品品质和完善的售后服务体系,赢得了众多客户的信赖和支持。

Electrocube Inc公司的发展小趣事

随着科技的不断进步,Electrocube Inc公司始终将技术创新作为发展的核心动力。公司投入大量研发资金,积极引进高端人才,不断推出具有领先水平的电子产品。其中,一款具有自主知识产权的高温电容器,以其卓越的性能和稳定性,在航空航天、汽车电子等高端领域得到了广泛应用,进一步提升了公司的市场竞争力。

问答坊 | AI 解惑

用555电路做的欠压指示电路

本电路在实验中已经反复测试,在低于13.96V~14.11V时绿灯亮,正常情况下红灯亮。图中D8为双色发光二极管。 电路原理:电池电压为16.8V(四块单板电池)。通过稳压管给555电路一个5脚一个6.2V的参考电压,当2脚的电压高于3.1V时,555电路3脚输出低电 ...…

查看全部问答>

你见过吗?反语翻译机

14.66美金就可以拥有一个反语翻译机!可能他会让你捧腹大笑,因为它会录下你说的所有话,然后逐字逐句反过来播放! 可能你会因此创造很爆笑很棒的词,或者发现自己平时在讲的话,竟然是那么的有趣! …

查看全部问答>

急!!为什么编译时,evc模拟器连接不上

为什么每次编译时总提示:“one or more files from the Emulator foe Windows CE installation is missing.  Reinstall Emulator ...\" 使用标准的模拟器,为什么会这样呢?我重装了一次eVC4.0,还是这样。一个简单的\"Hello Applicati ...…

查看全部问答>

问个问题,WINCE4.2下,怎么用C#写WAV文件的声音播放程序?

大家给个提示,我用的WINCE4.2系统,VS2003的C#开发的.…

查看全部问答>

关于wince关机问题,如何在关机后启动另个程序

我在donet1.0下想实现关机后向服务器发送一个logoff的消息,查阅了api后我调用CeRunAppAtEvent,注册NOTIFICATION_EVENT_OFF_AC_POWER,希望在关机后启动另一个exe来做发送logoff的工作,但是没有反应,我试着注册了其他几个,例如NOTIFICATION_EVE ...…

查看全部问答>

楼宇对讲通信网中的安全技术

楼宇对讲通信网络是无线电通信技术中的一个重要应用领域和组成部分,这项技术的开发和应用开始于上个世纪的20年代,当时主要使用在警察局总部与巡警车之间的车载移动通信服务――并迅速在警察部门得到推广应用。1946年,美国的AT&T公司开发设计出 ...…

查看全部问答>

STM32_IAP例程好像有问题

请教版主,我用st网站提供的“STM32F10x_IAP_V3.1.0”例程时发现,用232下载程序时,iap一切正常,可是改为485通信时,iap跑到Ymodem_Receive 中就不能向外发数据 ,在此之前485发出数据一切正常。程序进入Ymodem_Receive 后,在下面程序“*” ...…

查看全部问答>

求AD转换数值不对,咋回事

请问各位大师,我AD转换的数值不对怎么回事?而且数值不变,我是测温用的,数值应该时刻变化啊…

查看全部问答>

LM3S2B93的LDO问题

利用LM3S2B93设计电路,原本想利用片内LDO提供VDDC,但是在ERRATA中看到,利用片内LDO,存在问题There is a small risk of flash corruption or device failure on power up. The issue can occur with certain VDD and VDDC power sequences. The ...…

查看全部问答>

TI图形库里面的颜色格式是如何定义的?

Grilb.h文件里面如下 #define ClrBlue                 0x000000FF #define ClrRed             ...…

查看全部问答>