📄 pctouch.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 + -