战舰自带的GUI有没有介绍使用的资料

2019-07-21 01:06发布

    战舰自带的GUI有没有资料。

    可以显示一个按钮。但是实在不明白,怎么针对触摸屏的数据,来更新按钮的状态和获取按钮的返回值。(现在我按不按的没反应)
    

    觉得UCGUI 用起来不太熟悉,很多地方不懂。觉得战舰自带的GUI精简一点,实用。原子老师有没有自带GUI的资料?

    基础有点差,看最后一个例程的代码也没太看懂怎么实现按键状态更新的。

     以下是我拷贝出来的可以运行了的一段代码。实现了显示一个按钮,但是按不按没反应。

#include "includes.h" 
#include "malloc.h"  
#include "spblcd.h"

#define BUTTON_0 1
#define BUTTON_1 2
#define BUTTON_2 3
#define BUTTON_3 4
#define BUTTON_4 5
#define BUTTON_5 6
#define BUTTON_6 7


_btn_obj * tbtn[10];
//{0,100,100,50,BUTTON_0,2,0,"BUTTON0",16,10,BTN_DFU_BCFUC,BTN_DFU_BCFDC,(u16*)gui_memin_malloc(4*2),NULL,NULL};


void BUTTON_Clear(void)
{
tbtn[0]=btn_creat(0,100,100,50,0,0x02);//创建按钮
tbtn[0]->sta=0;
tbtn[0]->caption="BUTTON1";//名字
tbtn[0]->font=16;//字体
tbtn[0]->arcbtnr=10; 
tbtn[0]->picbtnpathu=0; 
tbtn[0]->picbtnpathd=0; 
btn_draw(tbtn[0]);//画按钮




}
//main函数  
int main(void)
{
u8 WHILE = 1;
u8 ra=0;
delay_init(168); //延时初始化  
uart_init(115200); //初始化串口波特率为115200
  LED_Init(); //初始化LED 
  LCD_Init(); //LCD初始化  
  BEEP_Init(); //蜂鸣器初始化
  KEY_Init(); //按键初始化 
  AT24CXX_Init();     //EEPROM初始化
W25QXX_Init(); //初始化W25Q128


my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMCCM); //初始化CCM内存池 

tp_dev.init(); 
gui_init();  

LCD_Clear(RED); //黑屏
POINT_COLOR=WHITE;
BACK_COLOR=BLACK;

// btn_test(10,100,100,100,0,0,10,"TESTBUTTON",0,0);





BUTTON_Clear();
while(WHILE)
{

ra = btn_check(tbtn[0],&in_obj);
if(ra)
{
    if((tbtn[0]->sta&0X80)==0)//有有效操作
   {
       LED0 = 0;
    }
}
}
return 0;
}

// tp_dev.scan(0); 
// if(tp_dev.sta&TP_PRES_DOWN) //触摸屏被按下
// {
// if(tp_dev.x[0] < lcddev.width && tp_dev.y[0]<lcddev.height)
// {
// TP_Draw_Big_Point(tp_dev.x[0],tp_dev.y[0],BLUE); //画图     
// }
// }else delay_ms(10); //没有按键按下的时候  




























友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
正点原子
1楼-- · 2019-07-21 06:24
没有介绍.
按键的扫描:btn_check
之前,必须加入触摸屏扫描.
才可以执行相关操作.
MJM
2楼-- · 2019-07-21 09:53
回复【2楼】正点原子:
---------------------------------
while(WHILE)
{
tp_dev.scan(0); //加入
ra = btn_check(tbtn[0],&in_obj);
if(ra)
{
if((tbtn[0]->sta&0X80)==0)
{

}
LED0 = 1;
}
LED1= ~LED1;
delay_ms(500);
}

是这样么?,还是不行啊
正点原子
3楼-- · 2019-07-21 11:52
 精彩回答 2  元偷偷看……

一周热门 更多>