📄 pda.c
字号:
/*========================================================================
*
* 版权所有 (C) 2000-2001 吴柏建. All Rights Reserved.
*
* 文件: pda.c
* 内容: PSDE之演示如何使用PSDE功能函数制作电子词典模拟器。
* 作者: 吴柏建。
* 制作日期: 2000.7.28-2001.8.3
* 修改日期: 2001..
*
*========================================================================*/
#ifdef _WIN32
/*Include <windows.h> for use function GetLocalTime()*/
#include <windows.h>
#endif
#include <stdio.h>
#include "pda.h"
#ifdef _PSDE_
/*LCD显示缓冲区*/
extern unsigned char lcdDisBuffer[3808];
/*点阵区域LCD显示缓冲区*/
unsigned char DisBuffer[672];
/*ROM首指针*/
unsigned char *RomAddress;
#endif
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□
□ 图象数据数组 generated by 《PdaTools-BmpToGray.exe》
□
□ 图象数据头部(有)长度为6字节的DATAHEAD结构。
□ 扫描模式:0(0:水平 1:垂直 2:字节垂直,数据水平 3:字节水平,数据垂直 4:Nucleus)
□ 灰度: (1:单色 2:四灰 4:十六灰 8:256色)
□ 宽度: 112
□ 高度: 48
□
□---2001.8.6--16:26----------------------------------------------------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
const unsigned char Image_Ship[678]={0,1,112,0,48,0,
0,0,0,0,0,6,0,0,0,48,0,0,0,0,0,0,0,0,0,6,0,0,0,240,0,0,0,0,0,0,0,
0,0,6,0,0,0,224,0,0,0,0,0,0,0,0,0,6,0,0,0,64,0,0,0,0,0,0,0,0,0,6,
0,0,0,64,0,0,0,0,0,0,0,0,0,6,0,0,0,224,0,0,0,0,0,0,0,0,0,6,0,0,0,
224,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,
0,0,0,0,0,0,6,128,0,0,64,0,0,0,0,0,0,0,0,0,6,0,0,0,16,0,0,0,0,0,0,
0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,81,128,0,64,0,0,0,0,0,0,0,0,0,15,
129,128,0,0,0,0,0,0,0,0,0,0,0,38,0,0,0,2,2,4,0,0,0,0,0,0,0,0,24,128,
0,19,56,0,0,0,0,0,0,0,0,0,8,224,0,2,56,16,0,0,0,0,0,0,0,0,127,240,
0,0,16,48,0,0,0,0,0,0,0,0,255,240,0,0,0,48,0,0,0,0,0,0,0,0,6,160,
0,0,15,240,0,0,0,0,0,0,0,0,6,28,0,161,255,240,0,0,0,0,0,0,0,0,30,
29,255,181,255,244,0,0,0,0,0,0,0,0,6,31,72,0,0,254,0,0,0,0,0,0,0,
48,93,249,192,0,0,63,1,64,128,0,0,0,0,48,25,240,99,0,0,63,0,0,64,
0,0,0,0,24,17,225,192,0,0,127,0,0,64,0,0,0,0,0,0,224,0,0,1,0,0,0,
64,0,0,0,0,96,12,192,0,1,192,0,0,1,224,0,0,0,0,112,31,192,0,0,0,0,
0,1,224,0,0,0,0,0,119,192,0,0,0,0,0,1,128,0,0,0,12,127,255,192,0,
0,0,0,0,1,128,0,0,0,28,255,255,128,0,112,0,0,0,1,128,0,0,0,7,255,
191,192,0,120,0,0,0,3,128,0,0,0,7,255,255,199,0,120,0,0,131,3,0,0,
0,0,7,254,0,103,128,120,0,0,143,131,112,0,0,0,0,0,0,39,128,0,4,144,
15,131,240,7,240,62,0,0,0,3,0,0,4,0,7,195,255,71,255,255,206,0,0,
0,0,0,0,0,7,195,255,240,127,247,206,0,0,0,0,0,0,0,7,135,255,224,0,
0,14,0,0,0,0,0,0,0,3,7,255,240,16,64,0,0,0,0,0,0,0,0,0,7,255,248,
48,64,0,0,0,0,0,0,0,0,0,7,255,248,0,64,0,0,0,0,0,0,0,0,0,7,255,252,
0,0,0,0,0,0,0,0,0,0,0,15,255,253,255,168,0,0,0,0,16,0,0,7,255,143,
255,255,255,255,255,0,135,224,0,0,0,0,0,39,255,255,255,255,255,255,
255,255,191,248,15,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,};
/*PDA的系统全局时间*/
PDATIME SysTime;
/*PDA秒中断处理函数。*/
void IntSecond(void)
{
PDAMSG msg;
TimeSecondAdd(&SysTime);
msg.type=MSG_SECOND;
SendMsg(&msg);
}
/*PDA按键中断处理函数。*/
void IntKey(void)
{
PDAMSG msg;
#ifdef _PSDE_
msg.key=PSDE_GetMsgButton();
#elif
/*PDA获得按键消息代码*/
#endif
if(msg.key!=-1)
{
msg.type=MSG_KEY;
SendMsg(&msg);
}
#ifdef _PSDE_
/*获取键盘的字符输入*/
msg.character=PSDE_GetMsgChar();
if(msg.x!=-1)/*msg.x==msg.character*/
{
msg.type=MSG_CHAR;
SendMsg(&msg);
}
#endif
}
/*PDA入口函数。*/
void main()
{
PDAMSG msg;
char StrBuf[256];
#ifdef _PSDE_
/*PSDE模拟PDA初始化代码。*/
SYSTEMTIME time;
GetLocalTime(&time);
SysTime.second = time.wSecond;
SysTime.minute = time.wMinute;
SysTime.hour = time.wHour;
SysTime.day = time.wDay;
SysTime.month = time.wMonth;
SysTime.year = time.wYear;
SysTime.week=GetWeek(SysTime.year,SysTime.month,SysTime.hour);
PSDE_INT_SetSecond();
PSDE_SetFuncSecond(IntSecond);
PSDE_SetFuncKey(IntKey);
PSDE_SetLcdColor(0,143,194,92);
PSDE_SetLcdColor(1,12,12,12);
PSDE_SetLcdColor2(0,133,184,82);
PSDE_SetLcdColor2(1,12,12,12);
memset(lcdDisBuffer,0,3808);
memset(DisBuffer,0,672);
DispStr(0,0,"PSDE演示!");
#else
/*PDA初始化代码。*/
#endif
while(1)
{
while(GetMsg(&msg))switch(msg.type)
{
case MSG_SECOND:/*秒中断发送的消息*/
sprintf(StrBuf,"%d月%d日%d:%d:%d",SysTime.month,SysTime.day,SysTime.hour,SysTime.minute,SysTime.second);
DispStr(0,20,StrBuf);
break;
case MSG_CHAR:
DispChar(0,0,msg.character);
break;
case MSG_KEY:
DispBmp(0,0,(unsigned char *)Image_Ship);
sprintf(StrBuf,"Key%d press",msg.key);
DispStr(16,0,StrBuf);
break;
}
#ifdef _PSDE_
PSDE_CpuHalt();
#else
/*PDA使CPU halt的指令。*/
#endif
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -