EVE-22 滑动和旋转角度的侦测

22 篇文章 0 订阅

滑动和旋转角度的侦测由命令CMD_TRACK和寄存器REG_TRACKER实现的。

命令CMD_TRACK可以定义一个用户指定的区域内检测触摸的行为,协处理器会将结果保存到REG_TRACKER中。

#define ftCoCmdTrack(x, y, w, h, tag)\

{\

     ftWrDispCmd(CMD_TRACK);\

     ftWrDispCmd(((uint32_t)(y) << 16) | ((x) & 0xffff));\

     ftWrDispCmd(((uint32_t)(h) << 16) | (w));\

     ftWrDispCmd(tag);\

}

参数w,h决定检测触摸的行为,当w,h都为1时表示是当前检测的是旋转,当w,h都为0则关闭检测,否则是检测滑动。如果w > h则是检测横向滑动,w < h是检测竖向滑动。

寄存器REG_TRACKER的低16位对应CMD_TRACK的参数tag,高16位对应检测触摸的值。对应旋转的检测是角度值,而对滑动的检测是移动的像素点的个数。

例1实现如下图的拨码盘

显示指令如下:

ftWrDispCmd(TAG_MASK(1));

ftWrDispCmd(TAG(2));

ftCoCmdTrack((PANEL_WIDTH / 2), (PANEL_HEIGHT / 2), 1, 1, 2);

ftCoCmdDial((PANEL_WIDTH / 2), (PANEL_HEIGHT / 2), 60, 0, gDialAngle * 65535 / 360);

检测指令如下:

track = ft8xxRdMem32(REG_TRACKER);

switch (track & 0xffff)

{

     case 2:

         gDialAngle = (uint16_t)(((track >> 16) & 0xffff) * 360 / 65535);

         break;

}

例2实现如下图的Slider

显示指令如下

ftWrDispCmd(TAG(3));

ftCoCmdTrack((PANEL_WIDTH / 2 - 60), (PANEL_HEIGHT / 2 - 90), 120, 12, 3);

ftCoCmdSlider((PANEL_WIDTH / 2 - 60), (PANEL_HEIGHT / 2 - 90), 120, 12, 0, gSlideH, 100);

检测指令如下:

track = ft8xxRdMem32(REG_TRACKER);

switch (track & 0xffff)

{

     case 3:

         gSlideH = (uint8_t)(((track >> 16) & 0xffff) * 100 / 65535);          break;  

}

例3实现如下图的Slider

 

显示指令如下

ftWrDispCmd(TAG(4));

ftCoCmdTrack((PANEL_WIDTH / 2 + 120), (PANEL_HEIGHT / 2 - 60), 12, 120, 4);

ftCoCmdSlider((PANEL_WIDTH / 2 + 120), (PANEL_HEIGHT / 2 - 60), 12, 120, 0, gSlideV, 100);

检测指令如下:

track = ft8xxRdMem32(REG_TRACKER);

switch (track & 0xffff)

{

     case 4:

         gSlideV = (uint8_t)(((track >> 16) & 0xffff) * 100 / 65535);

         break;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值