⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pctouch.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
字号:
// pctouch.c : 1 模拟 触摸屏。
// 或者模拟所有的外围设备寄存器.
//通过地址来定位.

/*
Log :
*   080122  huangsl     根据新的触摸屏 功能进行 修改,此处只需要实现
*                       BOOLEAN HWTouchGetPixelPoint( UHPOINT* point ) 函数即可.
*/
/******************************************************************/
#include "include.h"

#define PCTOUCH_MAXMSG              2
/******************************************************************/
//由于 仿真情况下 扫描 时间比较长,因此增加 取消息 参数.
INT16U                  PCTouchMsgOutIdx = 0;
INT16U                  PCTouchMsgInIdx = 0;
TOUCHMSG                PCTouchMsg[PCTOUCH_MAXMSG] =
{
    {1}
};

/******************************************************************/
// 1: down , 0 : up
void PCTouchSetTouchState(int  state  , int x , int y)
{
    if (!OSRunning)
        return ;
    if (state >= HWTCH_STATE_MAX  || PCTouchMsgInIdx == PCTOUCH_MAXMSG)
        return;

#if 0   //触摸状态属于 状态量,而 不是 计数量.
    PCCEnterCritical();
    PCTouchMsg[PCTouchMsgInIdx].TouchState = state;
    PCTouchMsg[PCTouchMsgInIdx].TouchPoint.x = (INT16S)(x);
    PCTouchMsg[PCTouchMsgInIdx].TouchPoint.y = (INT16S)(y);

    PCTouchMsgInIdx++;
    if (PCTouchMsgInIdx == PCTOUCH_MAXMSG)
    {
        PCTouchMsgInIdx = 0;
    }

    PCTouchMsgCnt++;

    PCCExitCritical();
#else
    //由于双击的情况,两个 状态必须 记录.
    if (PCTouchMsgInIdx > 0 && HWTCH_STATE_DOWN == PCTouchMsg[0].TouchState &&
            HWTCH_STATE_UP == state)
    {
        PCTouchMsg[1].TouchState = state;
        PCTouchMsg[1].TouchPoint.x = (INT16S)(x);
        PCTouchMsg[1].TouchPoint.y = (INT16S)(y);
        PCTouchMsgInIdx = 2;
    }
    else
    {
        PCTouchMsg[0].TouchState = state;
        PCTouchMsg[0].TouchPoint.x = (INT16S)(x);
        PCTouchMsg[0].TouchPoint.y = (INT16S)(y);
        PCTouchMsgInIdx = 1;
    }


#endif
#if 1
    RockPcRegClearAll();
//        PCCoreSystemRestart(0);
#endif
    //  RockTouchSendMsg( state , x , y );
}

BOOLEAN HWTouchGetPixelPoint(UHPOINT* point)
{

#if 0

    INT32U      st;
    if (PCTouchMsgCnt == 0)
        return FALSE;

    PCCEnterCritical();
    PCTouchMsgCnt--;

    st = PCTouchMsg[PCTouchMsgOutIdx].TouchState;
    *point = PCTouchMsg[PCTouchMsgOutIdx].TouchPoint;

    PCTouchMsgOutIdx++;
    if (PCTouchMsgOutIdx == PCTOUCH_MAXMSG)
    {
        PCTouchMsgOutIdx = 0;
    }
    PCCExitCritical();

    if (st == TM_STATE_UP)
    {
        return FALSE;
    }
    return TRUE;    //TOUCH !
#else
    BOOLEAN     r;

    if (PCTouchMsgInIdx > 0)
        PCTouchMsgInIdx--;



    if (PCTouchMsg[PCTouchMsgOutIdx].TouchState == HWTCH_STATE_UP)
        r = FALSE;
    else
    {
        *point = PCTouchMsg[PCTouchMsgOutIdx].TouchPoint;
        r =  TRUE;
    }

    if (PCTouchMsgInIdx > 0)
    {
        PCTouchMsg[0] = PCTouchMsg[1] ;
    }

    return r;
#endif
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -