硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4975|回复: 2
收起左侧

[μCGUI] 请教一下ucGUI通过触摸屏输入数据问题

[复制链接]

4

主题

17

回帖

29

积分

新手上路

积分
29
发表于 2014-2-21 14:19:58 | 显示全部楼层 |阅读模式
如题,我现在做一个界面,通过触摸屏要输入数据,输入的数据要交给底层处理,本来是想通过一个edit控件,触摸edit控件然后弹出一个做的简单键盘来输入,但是现在遇到问题不能解决了,首先是做的键盘点OK键不能关闭键盘,其他都好的,其次是edit里输入的数字都是以EDIT_AddKey()函数输入的字符,我底层不知道要怎么获取edit显示的数据,请各位达人指教我改怎么解决这两个问题?或者有其他好办法吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2014-2-21 18:31:05 | 显示全部楼层
1. 你可以尝试直接将键盘建立在EDIT的下面进行输入,如果新建立一个窗口,不能关闭的话可能是因为你关闭的方式不对。
2. EDIT有专门的获取函数,你在手册里面找找看。要是获取函数不好用的话,你可以自己建立一个buffer,将输入的数据同时
    存到buffer里面就行。
回复

使用道具 举报

4

主题

17

回帖

29

积分

新手上路

积分
29
 楼主| 发表于 2014-2-21 22:35:59 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 你可以尝试直接将键盘建立在EDIT的下面进行输入,如果新建立一个窗口,不能关闭的话可能是因为你关闭的方式不对。
2. EDIT有专门的获取函数,你在手册里面找找看。要是获取函数不好用的话,你可以自己建立一个buffer,将输入的数据同时
    存到buffer里面 .. (2014-02-21 18:31)
版本你好,我看过你写的示波器的代码,你那里面关闭一个框的代码是下面,
case GUI_ID_OK:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                       GUI_EndDialog(hWin, 0);
                        GUI_Clear();//这个如果不要框就关不掉
                  break;
我这样理解正确吗?我这里用MDK试过现象是这样
我用的是STM32VET6的芯片,本来是想用你这种方法,在框架上加按钮和EDIT,但是刷新太慢了,底层驱动我都做了优化,但是还是不行,是我这个芯片本来就不够么?还是哪里没优化好,我主要是把下面这些函数做了优化,是直接操作的寄存器,void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex) {
//    ZQ_LCD_SetPoint( x, y, PixelIndex);
    LCD_XX->LCD_REG = 0x2B;   
    LCD_XX->LCD_RAM = x>>8;
    LCD_XX->LCD_RAM = 0x00FF&x;        
    LCD_XX->LCD_RAM = 0x0001;
    LCD_XX->LCD_RAM = 0x00dF;
   
    LCD_XX->LCD_REG = 0x2A;   
    LCD_XX->LCD_RAM = y>>8;
    LCD_XX->LCD_RAM = 0x00FF&y;        
    LCD_XX->LCD_RAM = 0x0001;
    LCD_XX->LCD_RAM = 0x003f;
   
    LCD_XX->LCD_REG = 0x2C;
  LCD_XX->LCD_RAM = PixelIndex;
}

/*********************************************************************
*
*       LCD_L0_GetPixelIndex
*
* Purpose:
*   Returns the index of the given pixel. The upper layers
*   calling this routine make sure that the coordinates are in range, so
*   that no check on the parameters needs to be performed.
*/
unsigned int LCD_L0_GetPixelIndex(int x, int y) {
  LCD_PIXELINDEX PixelIndex;
  //PixelIndex = ZQ_LCD_GetPointIndex( x,  y);/* ... */
   
    LCD_XX->LCD_REG = 0x2B;   
    LCD_XX->LCD_RAM = x>>8;
    LCD_XX->LCD_RAM = 0x00FF&x;        
    LCD_XX->LCD_RAM = 0x0001;
    LCD_XX->LCD_RAM = 0x00dF;
   
    LCD_XX->LCD_REG = 0x2A;   
    LCD_XX->LCD_RAM = y>>8;
    LCD_XX->LCD_RAM = 0x00FF&y;        
    LCD_XX->LCD_RAM = 0x0001;
    LCD_XX->LCD_RAM = 0x003f;
   
    LCD_XX->LCD_REG = 0x2E;
    PixelIndex = LCD_XX->LCD_RAM;
    PixelIndex = LCD_XX->LCD_RAM;
  return PixelIndex;
}
void LCD_L0_DrawHLine  (int x0, int y,  int x1) {
    uint32_t i;
  //ZQ_LCD_DrawHLine( x0,  y,   x1,  LCD_COLORINDEX);
    LCD_XX->LCD_REG = 0x2B;   
    LCD_XX->LCD_RAM = x0>>8;
    LCD_XX->LCD_RAM = 0x00FF&x0;        
    LCD_XX->LCD_RAM = x1>>8;
    LCD_XX->LCD_RAM = 0x00FF&x1;

    LCD_XX->LCD_REG = 0x2A;
    LCD_XX->LCD_RAM =(y>>8);
    LCD_XX->LCD_RAM =(0x00FF&y);        
    LCD_XX->LCD_RAM =(y>>8);
    LCD_XX->LCD_RAM =(0x00FF&y);        
   
    LCD_XX->LCD_REG = 0x2C;
    for(i=x0; i<x1+1; i++)
    {
        LCD_XX->LCD_RAM = LCD_COLORINDEX;
    }
}

/*********************************************************************
*
*       LCD_L0_DrawVLine
*/
void LCD_L0_DrawVLine  (int x, int y0,  int y1) {
    uint32_t i;
   //ZQ_LCD_DrawVLine( x,  y0,   y1,  LCD_COLORINDEX);
    LCD_XX->LCD_REG = 0x2B;   
    LCD_XX->LCD_RAM = x>>8;
    LCD_XX->LCD_RAM = 0x00FF&x;        
    LCD_XX->LCD_RAM = x>>8;
    LCD_XX->LCD_RAM = 0x00FF&x;

    LCD_XX->LCD_REG = 0x2A;
    LCD_XX->LCD_RAM =(y0>>8);
    LCD_XX->LCD_RAM =(0x00FF&y0);        
    LCD_XX->LCD_RAM =(y1>>8);
    LCD_XX->LCD_RAM =(0x00FF&y1);        
   
    LCD_XX->LCD_REG = 0x2C;
    for(i=y0; i<y1+1; i++)
    {
        LCD_XX->LCD_RAM = LCD_COLORINDEX;//ZQ_LCD_SetPoint( x,  i, color);
    }
}

/*********************************************************************
*
*       LCD_L0_FillRect
*/
void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
    u32 index;
    LCD_XX->LCD_REG = 0x2B;   
    LCD_XX->LCD_RAM = x0>>8;
    LCD_XX->LCD_RAM = 0x00FF&x0;        
    LCD_XX->LCD_RAM = x1>>8;
    LCD_XX->LCD_RAM = 0x00FF&x1;

    LCD_XX->LCD_REG = 0x2A;
    LCD_XX->LCD_RAM =(y0>>8);
    LCD_XX->LCD_RAM =(0x00FF&y0);        
    LCD_XX->LCD_RAM =(y1>>8);
    LCD_XX->LCD_RAM =(0x00FF&y1);
   
    LCD_XX->LCD_REG = 0x2C;
        for(index = 0; index < ((x1 - x0+1)*(y1 - y0+1)); index++)
      {   
        LCD_XX->LCD_RAM = LCD_COLORINDEX;
      }
//ZQ_LCD_FillRect(x0,y0,x1,y1,LCD_COLORINDEX);
   
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-14 01:31 , Processed in 0.260183 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表