📄 pendrv.c
字号:
/***************************************************************************************\
*
* Copyright (c) 2001 National ASIC Center, All Rights Reserved
*
* File Name : pendrv.c
* Version : 1.0
* Programmer : longn_qi
*
* Date of Creation: 2001/11/01
* Date of Last Modify: 2001/11/01
*
* Description: This is an application file for simulating pen interrupt buffer with read
* and write operations.
*
* Local Function List:
* void InitPenIntBuf( )
* unsigned char WritePenIntBuf( PENDATA *pPenData )
* unsigned char ReadPenIntBuf( PENDATA *pPenData )
*
* Global Variable List:
*
* Note: Further file description refers to simdrv.txt
*
***************************************************************************************
*
* Modification History
*
* 2001/11/01 by longn_qi create file.
*
\***************************************************************************************/
/* System and Standard Header */
#include <string.h>
/* Application Header */
#include <sys\pen.h>
#include <intmsg.h>
#include <intdef.h>
/* Local Macro Definition */
//#define MAX_PENBUF 20
/* External Variable */
// import
__declspec( dllimport ) PENDATA pen;
/* Static Variable */
PENDATA PEN_BUF[ MAX_PENBUF ];
unsigned char PEN_BUF_writecount;
unsigned char PEN_BUF_readcount;
/* Local Defined Function */
//////////////////////////////////////////////////////////////
// Function Name: InitPenIntBuf
// Param In: Param Description
// None
//
// Return Type: Result Code Description
// void
// Description: Initial pen interrupt buffer
//////////////////////////////////////////////////////////////
void InitPenIntBuf( )
{
memset(PEN_BUF,0,sizeof(PENDATA) * MAX_PENBUF);
PEN_BUF_writecount = 0;
PEN_BUF_readcount = 0;
return;
}
//////////////////////////////////////////////////////////////
// Function Name: WritePenIntBuf
// Param In: Param Description
// PENDATA *pPenData pointer to a pen interrupt
// structure
//
// Return Type: Result Code Description
// unsigned char BUF_FULL pen buffer is full
// NEGLECT neglect pen interrupt
// SUCCESS write to pen buffer
// successfully
// Description: Write pen interrupt buffer.
//////////////////////////////////////////////////////////////
unsigned char WritePenIntBuf( PENDATA *pPenData )
{
unsigned char nextPenWriteCount,prevPenWriteCount;
nextPenWriteCount = ( PEN_BUF_writecount+1 )%MAX_PENBUF;
prevPenWriteCount = ( PEN_BUF_writecount-1 + MAX_PENBUF )%MAX_PENBUF;
// buffer full
if( nextPenWriteCount == PEN_BUF_readcount )
return BUF_FULL;
// distinguish pen interrupt
switch( PEN_BUF[prevPenWriteCount].flag )
{
case SM_PENDOWN:
case SM_PENMOVE:
if( pen.flag != PENUP )
PEN_BUF[PEN_BUF_writecount].flag = SM_PENMOVE;
else
PEN_BUF[PEN_BUF_writecount].flag = SM_PENUP;
break;
case SM_PENUP:
if( pen.flag != PENUP )
PEN_BUF[PEN_BUF_writecount].flag = SM_PENDOWN;
else
return NEGLECT; // ignore contiuous pen up message
break;
default:
PEN_BUF[PEN_BUF_writecount].flag = SM_PENUP; // for initial
}
PEN_BUF[PEN_BUF_writecount].x = pen.x;
PEN_BUF[PEN_BUF_writecount].y = pen.y;
PEN_BUF_writecount = nextPenWriteCount;
return SUCCESS;
}
//////////////////////////////////////////////////////////////
// Function Name: ReadPenIntBuf
// Param In: Param Description
// PENDATA *pPenData pointer to a pen interrupt
// structure for storing pen data
// read from key buffer.
//
// Return Type: Result Code Description
// unsigned char BUF_EMPTY pen buffer is empty
// SUCCESS read pen buffer
// successfully
// Description: Read pen Interrupt buffer
//////////////////////////////////////////////////////////////
unsigned char ReadPenIntBuf( PENDATA *pPenData )
{
if( PEN_BUF_readcount == PEN_BUF_writecount ) // buffer empty
return BUF_EMPTY;
pPenData->x = PEN_BUF[ PEN_BUF_readcount ].x;
pPenData->y = PEN_BUF[ PEN_BUF_readcount ].y;
pPenData->flag = PEN_BUF[ PEN_BUF_readcount ].flag;
PEN_BUF_readcount++;
if( PEN_BUF_readcount >= MAX_PENBUF ) PEN_BUF_readcount = 0;
return SUCCESS;
}
//////////////////////////////////////////////////////////////
// Function Name: CheckPenIntBuf
// Param In: Param Description
// None
//
// Return Type: Result Code Description
// unsigned char BUF_EMPTY pen buffer is empty.
// BUF_FULL pen buffer is full.
// BUF_NORMAL pen buffer is readable
// and writable.
//
// Description: Check pen interrupt buffer status.
//////////////////////////////////////////////////////////////
unsigned char CheckPenIntBuf( )
{
unsigned char nextPenWriteCount;
if( PEN_BUF_readcount == PEN_BUF_writecount ) // buffer empty
return BUF_EMPTY;
nextPenWriteCount = ( PEN_BUF_writecount+1 )%MAX_PENBUF;
if( nextPenWriteCount == PEN_BUF_readcount ) // buffer full
return BUF_FULL;
return BUF_NORMAL;
}
void PenEnable(void)
{
// TK_Scan_Start();
}
void PenDisable(void)
{
// TK_Scan_Stop();
}
void TouchPanelHandler(void)
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -