硬汉嵌入式论坛

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

[μCGUI] 请教,光标脱影问题!光标路过地方都变成蓝色,窗口也变?

[复制链接]

13

主题

44

回帖

23

积分

初级会员

积分
23
发表于 2014-11-27 00:36:47 | 显示全部楼层 |阅读模式
请教,光标脱影问题!光标路过地方都变成蓝色,窗口也变?谢谢,!
背景色黑色、红色都变蓝!而且触摸窗口没反应,裸跑移植过来的!
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-11-27 08:40:20 | 显示全部楼层
如图

拖影

拖影
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-11-27 09:28:26 | 显示全部楼层
//====================读屏函数================================================================
static unsigned short RD_AD(void)
{
    unsigned short buf=0,temp;
    unsigned char i;
    TP_DIN(0);
    TP_DCLK(1);
    for(i=0;i<12;i++)
    {
        TP_DCLK(0);         
        temp= (TP_DOUT) ? 1:0;
        buf|=(temp<<(11-i));
        //Delayus(5);
        TP_DCLK(1);
    }
//     TP_CS(1);
    buf&=0x0fff;
    return(buf);
}
//====================================================================================
int GUI_TOUCH_X_MeasureX(void)
{
    int i[5],temp;
    u8 cou=0,k=0;
    WR_CMD(CHX);
    RD_AD();
    while(cou<5)    //循环读数5次
    {   
        WR_CMD(CHX);
        cou++;   
        i[cou]=RD_AD();         
    }
        //将数据升序排列
    for(k=0;k<4;k++)
    {      
        for(cou=1;cou<5-k;cou++)
        {
            if(i[cou]>i[cou+1])
            {
                temp=i[cou+1];
                i[cou+1]=i[cou];
                i[cou]=temp;
            }  
        }
    }
    return (i[1]+i[2]+i[3])/3;   
}
//====================================================================================
int GUI_TOUCH_X_MeasureY(void)
{
int i[5],temp;
    u8 cou=0,k=0;
    WR_CMD(CHY);
    RD_AD();
    while(cou<5)    //循环读数5次
    {   
        WR_CMD(CHY);
        cou++;   
        i[cou]=RD_AD();         
    }
        //将数据升序排列
    for(k=0;k<4;k++)
    {      
        for(cou=1;cou<5-k;cou++)
        {
            if(i[cou]>i[cou+1])
            {
                temp=i[cou+1];
                i[cou+1]=i[cou];
                i[cou]=temp;
            }  
        }
    }
    return (i[1]+i[2]+i[3])/3;
}
unsigned int TOUCH_X(void)
{
    unsigned int i;
    i=GUI_TOUCH_X_MeasureX();
    if(i<250||i>3800)return 800;
        else return (3800-i)*40/(380-25);//2011年6月3日之后的屏用3850-350或3600-1000,之前的屏用3850-150
}
unsigned int TOUCH_Y(void)
{
    unsigned int i;
    i=GUI_TOUCH_X_MeasureY();
    if(i<300||i>3800)return 800;
        else return (3800-i)*24/(380-30);
}

void TP_GetAdXY(unsigned int *x,unsigned int *y)
{
    unsigned int adx,ady;
    adx=GUI_TOUCH_X_MeasureX();
    ady=GUI_TOUCH_X_MeasureY();
    *x=adx;
    *y=ady;
}

unsigned int LCD_L0_GetPixelIndex(int x, int y)
{
    return(GetPoint(x,y));
}


u16 GetPoint(u16 x,u16 y)
{
volatile u16 a;
   
    WriteComm(0x2a);   
    WriteData(x>>8);
    WriteData(x&0xff);

    WriteComm(0x2b);   
    WriteData(y>>8);
    WriteData(y&0xff);
    a=0;a=0;a=0;a=0;a=0;
    WriteComm(0x2E);
    a=0;a=0;a=0;a=0;a=0;a=0;
    a = *(__IO u16 *) (Bank1_LCD_D);
    a=0;a=0;a=0;a=0;a=0;
    a = *(__IO u16 *) (Bank1_LCD_D);
    return a;
//      return (a&0xf800)|((a&0x03f0)<<1)|((a&0x3)<<3)|(b>>13);  
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2014-11-27 09:48:07 | 显示全部楼层
你的这个代码在带OS的时候,使用触摸是不是没有问题。
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-11-27 09:54:46 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的这个代码在带OS的时候,使用触摸是不是没有问题。 (2014-11-27 09:48)
也是这个问题!
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-11-27 09:59:31 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的这个代码在带OS的时候,使用触摸是不是没有问题。 (2014-11-27 09:48) 
这就是OS下的现象,请问怎么解决?裸机时可以操作窗口上的按键,加了OS就不能操作了?
回复

使用道具 举报

9

主题

140

回帖

187

积分

初级会员

积分
187
QQ
发表于 2014-11-27 11:16:19 | 显示全部楼层
应该是读点不正确吧。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2014-11-27 11:46:23 | 显示全部楼层

回 mr.boy 的帖子

mr.boy:这就是OS下的现象,请问怎么解决?裸机时可以操作窗口上的按键,加了OS就不能操作了? (2014-11-27 09:59) 
裸机,不使用emWin的是时候,你的触摸是不是能够正确操作。出现这种情况的原因很多,一般读点函数不正确较多,还有就是RGB,BGR转换的问题,因为有些屏读出的像素是BGR格式的,你要转换成RGB。
回复

使用道具 举报

13

主题

44

回帖

23

积分

初级会员

积分
23
 楼主| 发表于 2014-11-27 16:21:58 | 显示全部楼层

回 eric2013 的帖子

eric2013:裸机,不使用emWin的是时候,你的触摸是不是能够正确操作。出现这种情况的原因很多,一般读点函数不正确较多,还有就是RGB,BGR转换的问题,因为有些屏读出的像素是BGR格式的,你要转换成RGB。 (2014-11-27 11:46) 
正解,就是这样的!谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 01:58 , Processed in 0.284740 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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