硬汉嵌入式论坛

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

[有问必答] 这个小程序没看懂到底在讲啥 能帮忙解释下不

[复制链接]

9

主题

18

回帖

9

积分

新手上路

积分
9
发表于 2015-3-27 20:59:05 | 显示全部楼层 |阅读模式
void TOUCH_Scan(void)
{
uint16_t usAdcX;
uint16_t usAdcY;
static uint16_t s_usXBuf[SAMPLE_COUNT];
static uint16_t s_usYBuf[SAMPLE_COUNT];
static uint8_t s_ucPos = 0;
static uint8_t s_count = 0;
static uint8_t s_down = 0;
static uint16_t s_usSaveAdcX, s_usSaveAdcY; /* 用于触笔抬起事件,保存按下和移动的最后采样值 */
if (g_tTP.Enable == 0)
{
  return;
}
/* 获得原始的ADC值,未滤波 */
if (g_ChipID == IC_8875)
{
  /* 如果主程序正在访问RA8875,则丢弃本次触摸采集,避免影响显示 */
  if (RA8875_IsBusy())
  {
   return;
  }
  usAdcX = RA8875_TouchReadX();
  usAdcY = RA8875_TouchReadY();
}
else
{
  usAdcX = TSC2046_ReadAdc(ADC_CH_X);
  usAdcY = TSC2046_ReadAdc(ADC_CH_Y);
}
if (TOUCH_PressValid(usAdcX, usAdcY))
{
  /* 按压30ms之后才开始采集数据 */
  if (s_count >= 30)
  {
   s_usXBuf[s_ucPos] = usAdcX;
   s_usYBuf[s_ucPos] = usAdcY;
   /* 采集10ms数据进行滤波 */
   if (++s_ucPos >= SAMPLE_COUNT)
   {
    s_ucPos = 0;
       /* 对ADC采样值进行软件滤波 */
    g_tTP.usAdcNowX = TOUCH_DataFilter(s_usXBuf, SAMPLE_COUNT);
    g_tTP.usAdcNowY = TOUCH_DataFilter(s_usYBuf, SAMPLE_COUNT);
    if (s_down == 0)
    {
     s_down = 1;
     /* 触摸按下事件 */
     TOUCH_PutKey(TOUCH_DOWN, g_tTP.usAdcNowX, g_tTP.usAdcNowY);
     s_usSaveAdcX = g_tTP.usAdcNowX;
     s_usSaveAdcY = g_tTP.usAdcNowY;
    }
    else
    {
     if (TOUCH_MoveValid(s_usSaveAdcX, s_usSaveAdcY, g_tTP.usAdcNowX, g_tTP.usAdcNowY))
     {
      /* 触摸移动事件 */
      TOUCH_PutKey(TOUCH_MOVE, g_tTP.usAdcNowX, g_tTP.usAdcNowY);
      s_usSaveAdcX = g_tTP.usAdcNowX;
      s_usSaveAdcY = g_tTP.usAdcNowY;
     }
     else
     {
      g_tTP.usAdcNowX = 0; /* for debug stop */
     }
    }
   }
  }
  else
  {
   s_count++;
  }
}
else
{
  if (s_count > 0)
  {
   if (--s_count == 0)
   {
    /* 触摸释放事件 */
    //TOUCH_PutKey(TOUCH_RELEASE, g_tTP.usAdcNowX, g_tTP.usAdcNowY);
    TOUCH_PutKey(TOUCH_RELEASE, s_usSaveAdcX, s_usSaveAdcY);
    g_tTP.usAdcNowX = 0;
    g_tTP.usAdcNowY = 0;
    s_count = 0;
    s_down = 0;
   }
  }
  s_ucPos = 0;
}
}
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106840
QQ
发表于 2015-3-27 22:56:00 | 显示全部楼层
一层一层的捋顺比较方便理解。从大的if else语句开始捋顺关系。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 06:58 , Processed in 0.159545 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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