保存桌面快捷方式 - - 设为首页 - 手机版
凹丫丫旗下网站:四字成语大全 - 故事大全 - 范文大全
您现在的位置: 范文大全 >> 理工论文 >> 电子通信论文 >> 正文

触摸屏在S3C2410上的应用实例


TmpX=(TmpX)?TmpX:0;

*px=(TmpX*TOUCH_X)/(TOUCH_MAX_X-TOUCH_MIN_X);

}

3.3 坐标滤波程序

坐标滤波程序Touch_Pen_filtering,考虑人机界面中对触摸屏的操作有3种:

*触摸笔在触摸屏上的位置不变;

*触摸笔在触摸屏上连续滑过;

*触摸笔在触摸屏上有大幅度的跳跃。

假设三次连续采样时刻为T1、T2、T3(T3>T2>T1),采样间隔为10ms。由于采样间隔远小于人的反应时间,所以在前两种操作模式下,如果采样点有效,将T1和T3时刻的采样值作平均。其平均值和T2时刻的采样值比较一般不会大于某个门限,否则判定此次采样点为野点。而对于第三种模式下,采样点数据会有很大的跳变。跳变过程中的数据是不稳定的,虽然记入了数据,但被判定成无效的采样点,所以需要在程序中定义一个静态数组x[2]记录相邻的两次采样数据。只有当前后数据持续稳定一段时间,才认为这时的采样点有效。程序中使用的间隔门限FILTER_LIMIT是需要经过试验来选取的。这里只给出X坐标的滤波过程。

//*px为T3时刻的采样值,count是记录连续有效采样点次数的静态变量,标志当前数据持续稳定时间,一旦发现大于//FILTER_LIMIT,count的值又要从0开始计数。

Int Touch_Pen_filtering(int *px){

BOOL retVal;

Static int count=0;

count++;

//如果连续有效采样点次数大于2次,开始进行滤波算法

if(count>2){

count=2;

//将T3时刻采样值和T1时刻采样值作平均

TmpX=(x[0]+*px)/2;

//计算平均值和T2时刻采样值的差值

dx=(x[1]>TmpX)?(x[1]-TmpX):(TmpX-x[1]);

    //如果差值大于门限值,说明T3的采样值无效,判为野点返回值为FALSE。为了避免过大的跳跃,认为触摸笔坐标沿变,使用T2时刻采样值来代替本次采样点,同时静态变量x[]中的数据不变,count重新开始记录连续有效采样点次数

if((dx>FIL TER_LIMIT)){

*px=x[1];

retVal=FLASE;

count=0;

}

//否则采样点有效返回值为TRUE,将T3的采样点记入到x[1]中,T2的采样点移到x[0]中

else{

x[0]=x[1];

x[1]=*px;

《触摸屏在S3C2410上的应用实例(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/145551.html

★温馨提示:你可以返回到 电子通信论文 也可以利用本站页顶的站内搜索功能查找你想要的文章。