关于UCGUI+UCOS中GUI_GetKey()得不到键值的问题。

2019-08-13 19:02发布

/////////////////////////UCOSII任务堆栈设置///////////////////////////////////
//START 任务
#define START_TASK_PRIO         1
#define START_STK_SIZE      64
OS_STK START_TASK_STK[START_STK_SIZE];
void start_task(void *pdata);  //TOUCH任务
#define TOUCH_TASK_PRIO      3
#define TOUCH_STK_SIZE       1000
OS_STK TOUCH_TASK_STK[TOUCH_STK_SIZE];
void   TOUCH_TASK(void *pdata); #define DISP_TASK_PRIO        4
#define DISP_TASK_SIZE      1000
OS_STK DISP_TASK_STK[DISP_TASK_SIZE] ;
void DISP_Task(void *pdata);
void start_task(void *pdata)
{
  OS_CPU_SR cpu_sr=0;
 pdata = pdata;
 OSStatInit();     //初始化统计任务.这里会延时1秒钟左右 
  OS_ENTER_CRITICAL();   //进入临界区(无法被中断打断)
 OSTaskCreate(TOUCH_TASK,(void *)0,(OS_STK*)&TOUCH_TASK_STK[TOUCH_STK_SIZE-1],TOUCH_TASK_PRIO);
 OSTaskCreate(DISP_Task,(void *)0,(OS_STK*)&DISP_TASK_STK[DISP_TASK_SIZE-1],DISP_TASK_PRIO); 
 OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
 OS_EXIT_CRITICAL();    //退出临界区(可以被中断打断)
}
void TOUCH_TASK(void *pdata)
{
 pdata=pdata;
 while(1)
 {
  GUI_TOUCH_Exec();
  OSTimeDly(10);
 }
} void ANY_INIT()
{
  delay_init();       //延时函数初始化
 delay_ms(1000);
 uart_init(9600);
 TP_Init();           //触摸屏初始化
 TIM3_Int_Init(1199,7199);
  RTC_Init();
  BEEP_Init();
  GUI_Init();
 AT24CXX_Init();
 Beep(); 
} void DISP_Task(void *pdata)
{
  BUTTON_Handle OK;
  GUI_PID_STATE touchpoint;
  GUI_SetColor(GUI_BLACK);
  GUI_SetFont(&GUI_Font24B_ASCII);
 
  GUI_SetBkColor(GUI_WHITE);
  GUI_Clear();
  LCD_BLSet(5);
  OK=BUTTON_Create(100,100,200,100,GUI_ID_OK,WM_CF_SHOW);
  BUTTON_SetBkColor(OK, 1, GUI_RED);
  GUI_GotoXY(10,20);
  GUI_Exec();
  while(1)
  {
   GUI_PID_GetState(&touchpoint);
   GUI_DispDecAt(touchpoint.x,600,0,3);
   GUI_DispDecAt(touchpoint.y,600,20,3);
   GUI_DispDecAt(touchpoint.Pressed,600,40,1);
   if(GUI_GetKey()==GUI_ID_OK)
    GUI_DispString("A");   
  }
 
}
int main(void)
 {
 ANY_INIT();
 OSInit();  
  OSTaskCreate(start_task,(void *)0,(OS_STK *)&START_TASK_STK[START_STK_SIZE-1],START_TASK_PRIO );//创建起始任务
 OSStart();
 } 这里是个小测试,一个任务扫描按键,一个显示。     GUI_PID_GetState(&touchpoint);
   GUI_DispDecAt(touchpoint.x,600,0,3);
   GUI_DispDecAt(touchpoint.y,600,20,3);
   GUI_DispDecAt(touchpoint.Pressed,600,40,1); 可以通过上面的把按触摸的物理坐标,和触摸状态全都显示出来。 可是当点击按钮是没有什么反应,GUI_GetKey()得不到值。就像那个地方不存在按钮不样。请大家帮我分析下原因。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
wfy9041
1楼-- · 2019-08-13 23:05
附件是程序。板子是自己做的。
wfy9041
2楼-- · 2019-08-13 23:52
顶一下。。。
八度空间
3楼-- · 2019-08-14 01:36
GUI_TOUCH_Exec();这个家伙扫描要比较频繁的,100次/秒吧
wfy9041
4楼-- · 2019-08-14 05:45
回复【4楼】Badu_Space:
---------------------------------
100次一秒刚才试好下也不行啊。OSTimeDly(1)都不行。
wfy9041
5楼-- · 2019-08-14 10:56
 精彩回答 2  元偷偷看……
八度空间
6楼-- · 2019-08-14 15:19
回复【5楼】wfy9041:
---------------------------------
可以参考一下这个帖子http://www.openedv.com/posts/list/36299.htm

一周热门 更多>