图形化计算器




物理与电子工程学院

《嵌入式系统设计》
设计性实验报告





题 目 图形化计算器的设计
系 别 电子科学与技术系
年 级 12级 专 业 电子科学与技术
班 级 电科121 学 号 050212101
学生姓名 蔡 浩
指导教师 浦 炜
实验时间 2015年5月23号

目 录
课题要求 2

1.本课题的目的 2

2.运行环境 2

正文 3

一.课题分析 3

二.系统设计 6

三.技术实现问题 7

四.总结与体会 8

设计性实验报告成绩: 指导教师签名: 20

课题要求
本课题的目的
在ucOS-II下设计一个图形化界面的计算器,实现计算器功能。利用ucOS-II下图形界面设计的API函数设计一个操作界面,含数字键、运算键(扩展功能可以增加其它进制运算等)。可以利用触摸屏功能进行操作运算。(扩展功能将数字的显示在数码管上实现)
该项目将主要涉及对ucOS-II下相关API函数的使用、基本图形控件的使用、消息传递机制的掌握运用等方面的综合设计能力的培养和提高。


运行环境
1.代码修改:
用的是Source Insight 3便于查找有关函数,提高了分析问题、解决问题的速度。

2.代码编译:
用的是Code Warrior for ARM Developer Suite是一款平时做实验常用的ARM的集成开发环境。
正文
一. 课题分析
我设计的图形化计算器具有这几个模块:文本框的创建、触摸屏界面的设计、按键功能设计、计算器逻辑功能设计。
1.文本框的创建
参照了3000光盘的ADS实验中的“Exp18文本框控件”,使用CreatTextCtrl()函数来创建文本框控件,且需要赋予文本框相应的ID号。用SetTextCtrlText()讲需要输出的文本以Unicode格式添加到文本框。一下为创建文本框、文本框初始化的代码:
void CreateText()
{
structRECT rect;//定义矩形框结构
U16 str[20];
char initString[20] = "Please input:";
SetRect(&rect, 5,5,315,35); //设置PID参数轴1P的文本框
pText=CreateTextCtrl(ID_Text,&rect,FONTSIZE_MIDDLE,CTRL_STYLE_FRAME, NULL, NULL);//创建文本框
strChar2Unicode(str, initString);//将整形数据转换为Unicode数据
SetWndCtrlFocus(NULL, ID_Text);//将焦点移到文本框中
SetTextCtrlText(pText, str,TRUE);//设置文本框内容
}
2.触摸屏界面设计
触摸屏界面设计包含文本框和各个按键。整个触摸屏大小是320*240。根据所需要的按键数量,设计出了以下界面

文本框的创建在上文已经介绍,这里介绍一下各个按键的创建,首先给每个控件一个对应的ID号,如#define zero_Button_ID 100。然后设置每个控件上要显示的提示字,如char zero_Button_Caption_8[]="0";。因为文本框不能直接显示

字符串的格式,需要中间用strChar2Unicode()把字符串格式转化为Unicode的编码,然后再送给文本框输出。如strChar2Unicode(zero_Button_Caption_16, zero_Button_Caption_8);。接着还要确定每个控件的坐标,如
zero_Button_RECT.bottom=90;
zero_Button_RECT.left=0;
zero_Button_RECT.right=80;
zero_Button_RECT.top=40;
再运用CreateButton函数创建控件,如pzero_Button=CreateButton(zero_Button_ID, pzero_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, zero_Button_Caption_16, NULL);。最后运用DrawButton函数来把控件在屏幕上画出来,如DrawButton(pzero_Button);。
3.按键功能设计
设计的功能有清零功能,在不管什么情况下按下清零键,可以清空所有数据,且在文本框中显示0。以及设计了简单的整数四则运算,以及解决了除以0的情况,在这个计算机中遇到除0情况,设计了结果自动归0。还可以无限循环的计算不同的运算式。这些功能都是在for(;;)循环里面。
4.计算器逻辑功能设计
计算器逻辑功能设计是最主要的部分。根据按下的不同的键来设置不同的状态。此计算器所实现的功能有:多位数的整数四则运算,结果可以显示负数。运算结果存在上限,要是超过上限会导致溢出,运算结果不正确。因此,我设置了运算数为10位数,要是超出了10位数,会导致计算器不能正常运行。本设计存在清零共能:“AC”键,当用户输入错值时可以按下“AC”键,清空所有数据,重新输入。以下为运算流程图:

二. 系统设计
1.硬件系统
液晶电路:触摸屏用于显示和通过触摸动作来输入。
2.软件系统
我们这个计算器是基于UCOS-II操作系统下完成的。简单介绍下UCOS-II操作系统:
严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。
对一个多任务的操作系统来说,任务间的通信和同步是必不可少的。uC/OS-II中提供了4种同步对象,分别是信号量,邮箱,消息队列和事件。所有这些同步对象都有创建,等待,发送,查询的接口用于实现进程间的通信和同步。
uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次,时间频率取决于用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。
uC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数,系统时间

函数。

三. 技术实现问题
此程序总体而言,还有很多功能远远没有达到。比如小数点功能,连加连减,小键盘输入,数码管显示等,功能有待完善。在编程的过程过遇到了许多问题,这里说一些记忆比较深刻的问题。
(1) 需要了解文本框输出需要的编码格式是Unicode,所以不管是整型数据输出还是字符串输出,都要转化为这种编码格式。但是仅仅知道这些还是不够的,还要具体理解那几个转化编码的函数,及其使用方法。因为,在编程的过程中一开始没注意到函数的不同,用错了函数名,结果在文本框里面输出了乱码。
(2) 在我的代码中一开始,我把data整型数组的下标和字符串数组shuju的下标同时用的i来记。结果在第一轮计算后,把i清0后,第二轮运算就无法正常实现。处理方法:我用h来记shuju数组的下标了;
(3) 经过上述修改后,可以循环到第二轮计算,但是在第一轮计算中结果正确,第二轮输出结果错误。错误现象是在正确的结果前还多了两位,依次是第一轮的加数和被加数。经过一番调试,把result输出到终端测试,才发现是计算错误而不是显示错误。由此发现是因为经过第一轮计算后a和b的值没有清空,在第二轮运算中也参与了计算,导致计算结果错误。
四. 总结与体会
这个设计性试验和之前的实验相比确实难度大了很多,不过我还是用自己的思路把这次实验完成了,有点小小的成就感。但是此程序有待完善,只是完成了最基本的功能,其他拓展功能还未实现。
在这个实验中,多次运用了UCOS操作系统的功能,多种函数的调用,如API函数,文本框控件的设置和绘制,系统的消息循环,消息的响应机制等。基本熟悉了UCOS系统的使用方法。
源代码:
#include"..\ucos-ii\includes.h" /* uC/OS interface */
#include "..\ucos-ii\add\osaddition.h"
#include "..\inc\drv.h"
#include "..\inc\drv\tchscr.h"
#include
#include
#pragma import(__use_no_semihosting_swi)
#define zero_Button_ID 100
#define one_Button_ID 101
#define two_Button_ID 102
#define three_Button_ID 103
#define four_Button_ID 104
#define five_Button_ID 105
#define six_Button_ID 106
#define seven_Button_ID 107
#define eight_Button_ID 108
#define nine_Button_ID 109
#define jia_Button_ID 110
#define jian_Button_ID 111
#define cheng_Button_ID 112
#define chu_Button_ID 113
#define dengyu_Button_ID 114
#define AC_Button_ID 115
#define ID_Text 116
PTextCtrl pText;

///******************任务定义***************///
OS_STK Main_Stack[STACKSIZE*8]={0, }; //Main_Test_Task堆栈
void Main_Task(void *Id); //Main_Test_Task
#define Main_Task_Prio 12
OS_EVENT *Nand_Rw_Sem;
OS_EVENT *Uart_Rw_Sem;
void initOSGUI() //初始化操作系统的

图形界面
{
initOSMessage();
initOSList();
initOSDC();
initOSCtrl();
initOSFile();
}
void CreateText()
{
structRECT rect;//定义矩形框结构
U16 str[20];
char initString[20] = "Please input:";
SetRect(&rect, 5,5,315,35); //设置PID参数轴1P的文本框
pText=CreateTextCtrl(ID_Text, &rect, FONTSIZE_MIDDLE, CTRL_STYLE_FRAME, NULL, NULL);//创建文本框

strChar2Unicode(str, initString);//将整形数据转换为Unicode数据
SetWndCtrlFocus(NULL, ID_Text);//将焦点移到文本框中

SetTextCtrlText(pText, str,TRUE);//设置文本框内容

}

int main(void)
{
ARMTargetInit(); //开发板初始化
OSInit(); //操作系统初始化
uHALr_ResetMMU();//复位MMU
LCD_Init(); //初始化LCD模块
LCD_printf("LCD initialization is OK\n");//向液晶屏输出数据
LCD_printf("320 x 240 Text Mode\n");
initOSGUI();//初始化图形界面
LoadFont();//调Unicode字库
LoadConfigSys();//使用config.sys文件配置系统设置
LCD_printf("Create task on uCOS-II...\n");
OSTaskCreate(Main_Task, (void *)0, (OS_STK *)&Main_Stack[STACKSIZE*8-1], Main_Task_Prio);// 创建系统任务
OSAddTask_Init();//创建系统附加任务
LCD_printf("Starting uCOS-II...\n");
LCD_printf("Entering graph mode...\n");
LCD_ChangeMode(DspGraMode);//变LCD显示模式为文本模式
InitRtc();//初始化系统时钟
Nand_Rw_Sem=OSSemCreate(1); //创建Nand-Flash读写控制权旗语,初值为1满足互斥条件//
OSStart();//操作系统任务调度开始
//不会执行到这里
return 0;
}
void Main_Task(void *Id) //Main_Test_Task
{ int data[10]={0,0,0,0,0,0,0,0,0,0};

int i=0,j,h=0;
int a=0,b=0;
int result;
char suan;
char string[10];
U16 dataString_16[30];
U16 shujuString_16[30];
char shuju[30];
POSMSG pMsg;
structPOINT Touch_Position,*pTouch_Position;
ButtonCtrl zero_Button,one_Button,two_Button,three_Button,four_Button,five_Button,six_Button,seven_Button,eight_Button,nine_Button,
jia_Button,jian_Button,cheng_Button,chu_Button,dengyu_Button,AC_Button;
PButtonCtrl pzero_Button,pone_Button,ptwo_Button,pthree_Button,pfour_Button,pfive_Button,psix_Button,pseven_Button,peight_Button,pnine_Button,pjia_Button,pjian_Button,pcheng_Button,pchu_Button,pdengyu_Button,pAC_Button;
structRECT zero_Button_RECT,one_Button_RECT,two_Button_RECT,three_Button_RECT,four_Button_RECT,five_Button_RECT,six_Button_RECT,seven_Button_RECT,eight_Button_RECT,nine_Button_RECT,jia_Button_RECT,
jian_Button_RECT,cheng_Button_RECT,chu_Button_RECT,dengyu_Button_RECT,AC_Button_RECT/*,Text_Rect*/;
structRECT *pzero_Button_RECT,*pone_Button_RECT,*ptwo_Button_RECT,*pthree_Button_RECT,*pfour_Button_RECT,*pfive_Button_RECT,
*psix_Button_RECT,*pseven_Button_RECT,*peight_Button_RECT,*pnine_Button_RECT,*pjia_Button_RECT,
*pjian_Button_RECT,*pcheng_Button_RECT,*pchu_Button_RECT,*pdengyu_Button_RECT,*pAC_Button_RECT/*,*pText_Rect*/;
char zero_Button_Caption_8[]

="0";
char one_Button_Caption_8[]="1";
char two_Button_Caption_8[]="2";
char three_Button_Caption_8[]="3";
char four_Button_Caption_8[]="4";
char five_Button_Caption_8[]="5";
char six_Button_Caption_8[]="6";
char seven_Button_Caption_8[]="7";
char eight_Button_Caption_8[]="8";
char nine_Button_Caption_8[]="9";
char jia_Button_Caption_8[]="+";
char jian_Button_Caption_8[]="-";
char cheng_Button_Caption_8[]="*";
char chu_Button_Caption_8[]="/";
char dengyu_Button_Caption_8[]="=";
char AC_Button_Caption_8[]="AC";

U16 zero_Button_Caption_16[20];
U16 one_Button_Caption_16[20];
U16 two_Button_Caption_16[20];
U16 three_Button_Caption_16[20];
U16 four_Button_Caption_16[20];
U16 five_Button_Caption_16[20];
U16 six_Button_Caption_16[20];
U16 seven_Button_Caption_16[20];
U16 eight_Button_Caption_16[20];
U16 nine_Button_Caption_16[20];
U16 jia_Button_Caption_16[20];
U16 jian_Button_Caption_16[20];
U16 cheng_Button_Caption_16[20];
U16 chu_Button_Caption_16[20];
U16 dengyu_Button_Caption_16[20];
U16 AC_Button_Caption_16[20];

pTouch_Position=&Touch_Position;

pzero_Button=&zero_Button;
pone_Button=&one_Button;
ptwo_Button=&two_Button;
pthree_Button=&three_Button;
pfour_Button=&four_Button;
pfive_Button=&five_Button;
psix_Button=&six_Button;
pseven_Button=&seven_Button;
peight_Button=&eight_Button;
pnine_Button=&nine_Button;
pjia_Button=&jia_Button;
pjian_Button=&jian_Button;
pcheng_Button=&cheng_Button;
pchu_Button=&chu_Button;
pdengyu_Button=&dengyu_Button;
pAC_Button=&AC_Button;


pzero_Button_RECT=&zero_Button_RECT;
pone_Button_RECT=&one_Button_RECT;
ptwo_Button_RECT=&two_Button_RECT;
pthree_Button_RECT=&three_Button_RECT;
pfour_Button_RECT=&four_Button_RECT;
pfive_Button_RECT=&five_Button_RECT;
psix_Button_RECT=&six_Button_RECT;
pseven_Button_RECT=&seven_Button_RECT;
peight_Button_RECT=&eight_Button_RECT;
pnine_Button_RECT=&nine_Button_RECT;
pjia_Button_RECT=&jia_Button_RECT;
pjian_Button_RECT=&jian_Button_RECT;
pcheng_Button_RECT=&cheng_Button_RECT;
pchu_Button_RECT=&chu_Button_RECT;
pdengyu_Button_RECT=&dengyu_Button_RECT;
pAC_Button_RECT=&AC_Button_RECT;

strChar2Unicode(zero_Button_Caption_16, zero_Button_Caption_8);
strChar2Unicode(one_Button_Caption_16, one_Button_Caption_8);
strChar2Unicode(two_Button_Caption_16, two_Button_Caption_8);
strChar2Unicode(three_Button_Caption_16, three_Button_Caption_8);
strChar2Unicode(four_Button_Caption_16, four_Button_Caption_8);
strChar2Unicode(five_Button_Caption_16, five_Button_Caption_8);
strChar2Unicode(six_Button_Caption_16, six_Button_Caption_8);
strChar2Unicode(seven_Button_Caption_16, seven_Button_Caption_8);
strChar2Unicode(eight_Button_Caption_16, eight_Button_Caption_8);
strChar2Unicode(nine_Button_Caption_16, nine_Button_Caption_8);
strChar2Unicode(jia_Button_Caption_16, jia_Button_Caption_8);
strChar2Unicode(jian_Button_Caption_16, jian_But

ton_Caption_8);
strChar2Unicode(cheng_Button_Caption_16, cheng_Button_Caption_8);
strChar2Unicode(chu_Button_Caption_16, chu_Button_Caption_8);
strChar2Unicode(dengyu_Button_Caption_16, dengyu_Button_Caption_8);
strChar2Unicode(AC_Button_Caption_16, AC_Button_Caption_8);

zero_Button_RECT.bottom=90;
zero_Button_RECT.left=0;
zero_Button_RECT.right=80;
zero_Button_RECT.top=40;

one_Button_RECT.bottom=90;
one_Button_RECT.left=80;
one_Button_RECT.right=160;
one_Button_RECT.top=40;
two_Button_RECT.bottom=90;
two_Button_RECT.left=160;
two_Button_RECT.right=240;
two_Button_RECT.top=40;

three_Button_RECT.bottom=90;
three_Button_RECT.left=240;
three_Button_RECT.right=320;
three_Button_RECT.top=40;

four_Button_RECT.bottom=140;
four_Button_RECT.left=0;
four_Button_RECT.right=80;
four_Button_RECT.top=90;

five_Button_RECT.bottom=140;
five_Button_RECT.left=80;
five_Button_RECT.right=160;
five_Button_RECT.top=90;

six_Button_RECT.bottom=140;
six_Button_RECT.left=160;
six_Button_RECT.right=240;
six_Button_RECT.top=90;

seven_Button_RECT.bottom=140;
seven_Button_RECT.left=240;
seven_Button_RECT.right=320;
seven_Button_RECT.top=90;

eight_Button_RECT.bottom=190;
eight_Button_RECT.left=0;
eight_Button_RECT.right=80;
eight_Button_RECT.top=140;

nine_Button_RECT.bottom=190;
nine_Button_RECT.left=80;
nine_Button_RECT.right=160;
nine_Button_RECT.top=140;

dengyu_Button_RECT.bottom=190;
dengyu_Button_RECT.left=160;
dengyu_Button_RECT.right=240;
dengyu_Button_RECT.top=140;

AC_Button_RECT.bottom=190;
AC_Button_RECT.left=240;
AC_Button_RECT.right=320;
AC_Button_RECT.top=140;

jia_Button_RECT.bottom=240;
jia_Button_RECT.left=0;
jia_Button_RECT.right=80;
jia_Button_RECT.top=190;

jian_Button_RECT.bottom=240;
jian_Button_RECT.left=80;
jian_Button_RECT.right=160;
jian_Button_RECT.top=190;

cheng_Button_RECT.bottom=240;
cheng_Button_RECT.left=160;
cheng_Button_RECT.right=240;
cheng_Button_RECT.top=190;

chu_Button_RECT.bottom=240;
chu_Button_RECT.left=240;
chu_Button_RECT.right=320;
chu_Button_RECT.top=190;

pzero_Button=CreateButton(zero_Button_ID, pzero_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, zero_Button_Caption_16, NULL);
pone_Button=CreateButton(one_Button_ID, pone_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, one_Button_Caption_16, NULL);
ptwo_Button=CreateButton(two_Button_ID, ptwo_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, two_Button_Caption_16, NULL);
pthree_Button=CreateButton(three_Button_ID, pthree_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, three_Button_Caption_16, NULL);
pfour_Button=CreateButton(four_Button_ID, pfour_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, four_Button_Caption_16, NULL);
pfive_Button=CreateButton(five_Button_ID, pfive_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, five_Button_Caption_16, NULL);
psix_Button=CreateButton(six_B

utton_ID, psix_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, six_Button_Caption_16, NULL);
pseven_Button=CreateButton(seven_Button_ID, pseven_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, seven_Button_Caption_16, NULL);
peight_Button=CreateButton(eight_Button_ID, peight_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, eight_Button_Caption_16, NULL);
pnine_Button=CreateButton(nine_Button_ID, pnine_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, nine_Button_Caption_16, NULL);
pjia_Button=CreateButton(jia_Button_ID, pjia_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, jia_Button_Caption_16, NULL);
pjian_Button=CreateButton(jian_Button_ID, pjian_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, jian_Button_Caption_16, NULL);
pcheng_Button=CreateButton(cheng_Button_ID, pcheng_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, cheng_Button_Caption_16, NULL);
pchu_Button=CreateButton(chu_Button_ID, pchu_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, chu_Button_Caption_16, NULL);
pdengyu_Button=CreateButton(dengyu_Button_ID, pdengyu_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, dengyu_Button_Caption_16, NULL);
pAC_Button=CreateButton(AC_Button_ID, pAC_Button_RECT, FONTSIZE_SMALL, CTRL_STYLE_3DDOWNFRAME, AC_Button_Caption_16, NULL);

ClearScreen();

DrawButton(pzero_Button);DrawButton(pone_Button);
DrawButton(ptwo_Button);DrawButton(pthree_Button);
DrawButton(pfour_Button);DrawButton(pfive_Button);
DrawButton(psix_Button);DrawButton(pseven_Button);
DrawButton(peight_Button);DrawButton(pnine_Button);
DrawButton(pjia_Button);DrawButton(pjian_Button);
DrawButton(pcheng_Button);DrawButton(pchu_Button);
DrawButton(pdengyu_Button);DrawButton(pAC_Button);

CreateText();

for(;;)
{
pMsg=WaitMessage(0);
switch(pMsg->Message)
{
case OSM_TOUCH_SCREEN:
Touch_Position.x=pMsg->WParam&0xffff;
Touch_Position.y=pMsg->WParam>>16;
if(IsInRect2(pzero_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=0;
shuju[h]='0';
Uart_Printf("0");
}
elseif(IsInRect2(pone_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=1;
shuju[h]='1';
Uart_Printf("1");
}
elseif(IsInRect2(ptwo_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=2;
shuju[h]='2';
Uart_Printf("2");
}
elseif(IsInRect2(pthree_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=3;
shuju[h]='3';
Uart_Printf("3");
}
elseif(IsInRect2(pfour_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=4;
shuju[h]='4';
Uart_Printf("4");
}
elseif(IsInRect2(pfive_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=5;
shuju[h]='5';
Uart_Printf("5");
}
elseif(IsInRect

2(psix_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=6;
shuju[h]='6';
Uart_Printf("6");
}
elseif(IsInRect2(pseven_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=7;
shuju[h]='7';
Uart_Printf("7");
}
elseif(IsInRect2(peight_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=8;
shuju[h]='8';
Uart_Printf("8");
}
elseif(IsInRect2(pnine_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
data[i]=9;
shuju[h]='9';
Uart_Printf("9");
}
elseif(IsInRect2(pjia_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
suan='+';
Uart_Printf("+");
shuju[h]='+';
for(j=0;ja=a*10+data[j];
for(j=0;jdata[j]=0;
i=0;


}
elseif(IsInRect2(pjian_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
suan='-';
Uart_Printf("-");
shuju[h]='-';
for(j=0;ja=a*10+data[j];
for(j=0;jdata[j]=0;
i=0;

}
elseif(IsInRect2(pcheng_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
suan='*';
Uart_Printf("*");
shuju[h]='*';
for(j=0;ja=a*10+data[j];
for(j=0;jdata[j]=0;
i=0;

}
elseif(IsInRect2(pchu_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
suan='/';
Uart_Printf("/");
shuju[h]='/';
for(j=0;ja=a*10+data[j];
for(j=0;jdata[j]=0;
i=0;

}
elseif(IsInRect2(pAC_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
i=0;
h=0;
for(j=0;jdata[j]=0;
a=0;
b=0;
result=0;
Int2Unicode(result,dataString_16);
SetWndCtrlFocus(NULL, ID_Text );
SetTextCtrlText(pText, dataString_16, TRUE);
break;


}
elseif(IsInRect2(pdengyu_Button_RECT, pTouch_Position)&&(pMsg->LParam==TCHSCR_ACTION_CLICK))
{
for(j=0;jb=b*10+data[j];
for(j=0;jdata[j]=0;

if(suan=='+')
result=a+b;
else if(suan=='-')
result=a-b;
else if(suan=='*')
result=a*b;
else if(suan=='/')
{ if(b!=0)
result=a/b;
else
result=0;
}
Int2Unicode(result,dataString_16);
SetWndCtrlFocus(NULL, ID_Text );
SetTextCtrlText(pText, dataString_16, TRUE);


Uart_Printf("=%d",result);
shuju[0]='\0';
h=0;
i=0;
a=0;
b=0;
break;
}

i++;
h++;
shuju[h]='\0';

strChar2Unicode( shujuString_16,shuju);
SetWndCtrlFocus(NULL, ID_Text );

SetTextCtrlText(pText, shujuString_16, TRUE);

}
DeleteMessage(pMsg);
OSTimeDly(100);
}
}
参考文献:1:UP-3000实验指导书
2:《嵌入式系统基础教程》 金建设
3:《嵌入式实时操作系μC/OS-2》 Jean https://www.360docs.net/doc/1c7823436.html,brosse

设计性实验报告成绩: 指导教师签名:


相关文档
最新文档