电吹风厂家
免费服务热线

Free service

hotline

010-00000000
电吹风厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

系统的消息循环

发布时间:2020-07-21 17:36:46 阅读: 来源:电吹风厂家

一、 实验目的学习使用系统的消息循环。掌握如何通过系统的消息循环来响应键盘的消息,同时学会使用图形模式下的液晶屏文字显示函数。最终实现按不同的键,在屏幕上显示不同的文字;同时,把键盘的按键号码输出到PC 机的终端显示。二、实验内容通常在多任务操作系统中,任务之间的通讯是通过任务之间发送消息来实现的。在本操作系统的Main_Task 任务中,定义了一个消息队列。本次实验将通过使用这个消息队列接收键盘的按键消息,并把键盘的按键显示在液晶屏和PC 机的终端上。三、预备知识1、用ARM SDT 2.5 集成开发环境,编写和调试程序的基本过程。2、基于操作系统的应用程序的框架结构。3、会使用Source Insight 3 编辑C 语言源程序4、操作系统的绘图API 函数和绘图设备上下文(DC)的使用四、实验设备及工具(包括软件调试工具)硬件:ARM 嵌入式开发板、用于ARM7TDMI 的JTAG 仿真器、PC 机Pentumn100 以上软件:PC 机操作系统win98、ARM SDT 2.51 集成开发环境、仿真器驱动程序、SourceInsight 3.0、超级终端通讯程序、USB 下载程序五、实验步骤1、在ARM SDT 2.51 中,使用实验一中创建好的模板,新建一个项目work1。把操作系统的所需要的头文件(*.h)和库文件(*.alf)加入工程中。2、用Source Insight 3 创建一个工程,把work1 中的C 语言源文件文件加入。3、打开Main.c 文件,仔细阅读Key_Scan_Task 函数——系统的键盘扫描函数。理解系统中Main_Task 任务消息队列的创建和发送的过程。void Key_Scan_Task(void *Id){U32 key;POSMSG pmsg;for (;;){key=GetKey();pmsg=OSCreateMessage(OSM_KEY,(key+1)0xffff,key>>16);if(pmsg)SendMessage(pmsg);}}4、在Main_Task 任务中加入代码,实现消息循环。即:等待消息、处理(响应)消息、删除消息。具体的流程图如图所示。

提示:⑴ 使用WaitMessage 接收消息,通常等待时间设置为无限长。⑵ 如图4-1 所示,系统的消息循环是一个无限循环。⑶ 系统的消息结构定义如下:typedef struct {U32 Message;U32 WParam;U32 LParam;}OSMSG, *POSMSG;收到消息以后(即,WaitMessage 函数返回),通过判断消息结构中Message 的成员来判断消息类型。如果是键盘消息,则Message 的值为OSM_KEY,WParam 参数存储的是按键的号码,LParam 参数存储的是同时系统按下的功能键(如果没有,则为0)。⑷ 开始等待下一条消息之前必须使用DeleteMessage 删除消息,释放系统的内存空间。5、编写键盘消息响应函数,处理键盘的消息。当有键盘消息收到的时候,把按键号码显示在液晶屏上,同时,发送给PC 机的终端。提示:⑴ 使用TextOut 函数在液晶屏的图形方式下绘图。此函数输出的字符数组必须是基于双字节Unicode 编码的。⑵ 使用Int2Unicode 函数完成整型变量到Unicode 字符串的转换。⑶ 通过Uart_SendByte 函数向串行口发送一个字节的数据6、用ARM SDT 2.5 编译、下载并调试上述程序,检查运行结果7、生成发行版本的.bin 文件,通过USB 下载到嵌入式开发板中,运行并检查输出结果。

12 Nginx 的 Http 模块介绍(下)

17 Ruby 的范围

Java 运算符

15 Ruby 的模块