跳点的原因可能是落笔点和抬笔点采样不准确吧
就是刚按下和刚抬起的那一次采样,由于触摸屏的原因可能不准
把这些点丢弃,只在定时器中断中采的点才有效试试.
点赞  2010-6-17 11:41
引用: 引用 40 楼 reallyu 的回复:
跳点的原因可能是落笔点和抬笔点采样不准确吧
就是刚按下和刚抬起的那一次采样,由于触摸屏的原因可能不准
把这些点丢弃,只在定时器中断中采的点才有效试试.


对刚才经过测试,的确是这两个部分有问题,现在应该可以解决。嘿嘿。
刚才测试了半小时,比较数据规律。是这个原因。
点赞  2010-6-17 12:06
[url=http://www.cnblogs.com/we-hjb/archive/2009/12/16/1626020.html][/url]
看看这里,希望有所帮助。
点赞  2010-6-17 13:26
引用: 引用 40 楼 reallyu 的回复:
跳点的原因可能是落笔点和抬笔点采样不准确吧
就是刚按下和刚抬起的那一次采样,由于触摸屏的原因可能不准
把这些点丢弃,只在定时器中断中采的点才有效试试.

搞定了,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
不过不是在定时器中采样才有效,定时器中有效会导致系统很慢,并且有更严重的问题产生。
我是一次采样4个点,然后在触摸屏检测到触摸屏中断的时候调用TSP_GetXY函数三次,获得三个平均值点,
然后排序,要中间的那个,因为通常都是第一个平均值点有问题。

嘿嘿,这个肯定是硬件问题产生的。不过还是比较有规律,现在修改一下小软件解决,过阵子试试硬件怎么搞,纠结啊。硬件出问题,奖金迟迟拿不到,真是太不爽了。
点赞  2010-6-17 17:50
定时器中有效会导致系统很慢,并且有更严重的问题产生。

这个... 肯定是你搞错了什么地方,不过不管怎么样,搞定了就好
点赞  2010-6-17 18:17
引用: 引用 42 楼 sunrain_hjb 的回复:
http://www.cnblogs.com/we-hjb/archive/2009/12/16/1626020.html
看看这里,希望有所帮助。


不错的思路,嘿嘿,等我也写一篇触摸屏驱动调试相关的博客,明天写一半吧。
等我把一些6410 的触摸屏纠正好了再写完整。
点赞  2010-6-17 20:50
学习下。。。
点赞  2010-6-17 21:57
问题是解决了,不过感觉比较顺利,所以我现在对触摸屏还是不太了解,刚才百度一下,搜到了不少eeworld的帖子
http://topic.eeworld.net/u/20080720/10/5ace51ec-c0ac-43da-b001-3620cdcf3543.html
今天继续学习一下,揭开我对触摸屏幕驱动的疑惑。
点赞  2010-6-18 14:56
引用: 引用 44 楼 reallyu 的回复:
定时器中有效会导致系统很慢,并且有更严重的问题产生。

这个... 肯定是你搞错了什么地方,不过不管怎么样,搞定了就好

原先不行,是因为这个触摸屏驱动存在bug,纠正后,试验了一下,发现效果不好,跳点问题好一些了,可是产生抖动了,如果要做好,估计要修改很多哦。

根据试验结果得知:这个触摸屏在第一次通知系统按下有效后,以后如果通知他有效,或者无效都是没有用的,除非重新按下检测。系统只要坐标值,嘿嘿,这个驱动有点bug就是如下代码
//if (dx > TSP_CHANGE || dy > TSP_CHANGE)——原来的代码
if (dx < TSP_CHANGE || dy < TSP_CHANGE)——改了之后,不过因为前面已经通知系统有效,所以不影响使用
{
        *pUncalX = x = tx;
        *pUncalY = y = ty;

        //RETAILMSG(TRUE,(TEXT("dx > TSP_CHANGE :dx= %d\r\n"),dx));
        //RETAILMSG(TRUE,(TEXT("dy > TSP_CHANGE :dy= %d\r\n"),dy));
                                       
        *pTipStateFlags = TouchSampleValidFlag | TouchSampleDownFlag;
}
点赞  2010-6-18 15:58
引用: 引用 48 楼 gooogleman 的回复:
//if (dx > TSP_CHANGE || dy > TSP_CHANGE)——原来的代码
if (dx < TSP_CHANGE || dy < TSP_CHANGE)——改了之后,不过因为前面已经通知系统有效,所以不影响使用
{
*pUncalX = x = tx;
*pUncalY = y = ty;

//RETAILMSG(TRUE,(TEXT("dx > TSP_CHANGE :dx= %d\r\n"),dx));
//RETAILMSG(TRUE,(TEXT("dy > TSP_CHANGE :dy= %d\r\n"),dy));

*pTipStateFlags = TouchSampleValidFlag | TouchSampleDownFlag;
}


这个我搞错了,改了之后触摸屏会抖动的,看来还是存在问题。
并且以后提示按下也是有效的。

哎,好郁闷啊。现在发现一个悲剧的问题。双拼的那个软键盘不再产生抖动的问题,可是英文版本的那个键盘照样会跳点,并且频率还比较高,真是又要花点时间搞搞了。嘿嘿。神奇的问题啊。
点赞  2010-6-18 17:26
300 分, 真是令人心动啊

pb 中的 catalog 内有一个 "Touch Driver Test Application", 加入就可後执行 etcha.exe, 这时将该程式视窗移到 4 个角落, 并点入该视窗中不要放, 这时就可以看出这支 touch sw/hw 好不好, 好的是压着再久也是一小点, 不好的点会越长越大, 甚至还会不时天外飞来一笔.

touch 是 analog 的东西, 若是信号太脏, 那是 hardware 的问题, 光靠 software 是很难校正回来的, 建议 lz 用 oscilloscope 看看波形, 若是量测时波形的厚度太大, 那用请 hardware 加一些 capacitor 做 filter, 先 delay 一段时间再取样再试试看.

Paul, Chao @ Techware
点赞  2010-6-18 18:05
硬件的问题很难通过软件来解决,先确认硬件到底有没有问题吧。
点赞  2010-6-18 21:41
引用: 引用 51 楼 sunrain_hjb 的回复:
硬件的问题很难通过软件来解决,先确认硬件到底有没有问题吧。

硬件是绝对有问题的了,因为一模一样的驱动,放到FL2440上不会出现,在我的PDA却会,的确是我们硬件没有加电容和电感。现在产品已经成型了,卖了半年了,所以不可能改的。呵呵。所以相当的纠结,我再继续搞。降低一些跳点频率也好。
点赞  2010-6-19 10:06
gman,搞个滤波算法,把偏离大的点滤掉啊
点赞  2010-6-19 11:01
引用: 引用 50 楼 paul_chao 的回复:
300 分, 真是令人心动啊

pb 中的 catalog 内有一个 "Touch Driver Test Application", 加入就可後执行 etcha.exe, 这时将该程式视窗移到 4 个角落, 并点入该视窗中不要放, 这时就可以看出这支 touch sw/hw 好不好, 好的是压着再久也是一小点, 不好的点会越长越大, 甚至还会不时天外飞来一笔.

touch 是 anal……


老兄,真的是如你所说啊,我软件的办法是白搭了,测试了很挫。
点赞  2010-6-19 16:21
根据情况,这个是硬件问题了,软件无法搞定,结贴。嘿嘿。
点赞  2010-6-22 00:13
mark
点赞  2010-7-1 16:06
123
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复