图5-6至图5-11。
图5-6注册请求报文
图5-7注册应答报文
图5-8 呼叫请求报文
图5-9 呼叫通报报文
图5-10被叫端呼叫应答报文
图5-11服务器呼叫应答报文
对上图中各数据报文中字段含义如下:
总长度:8bit,表示报文的总长度。
类型:8bit,表示报文的类型,在这个字节的不同值代表不同的数据报文
类型,其中0x10:注册报文请求,0x12:注册报文失败,0x20:呼叫请求,0x22被叫通报,0x21:呼叫成功,0x23呼叫失败。
标长:8bit,标号的长度,标号类似于该用户的用户名。
能力:8bit,能力主要用于该用户使用资源的权利,服务器可以根据用户的能力判断用户是否对资源有实用的权限。本项目中默认用户都有发送报文和接受报文的能力,并用0x00表示。
Random:16bit,Random是客户端产生的一个16位的随机数,服务器返回的应答报文应是Random+1。Random在一些协议中,主要作用是保证信息的新鲜性,防止重放攻击。
CRC:8bit,CRC的全拼是Cyclic Redundancy Check,又称之为循环冗余校验。在本项目中,使用一个简单的CRC,将数据包前面的所有数据以八位为一个分组进行异或,将最后的结果存入最后的八位中。
源标长:8bit,主叫端用户名的用户名。 目的标长:8bit,接受方标号的长度。 目的标号:8bit,目的端用户名的用户名。
上述五种数据报文中,注册请求和应答请求主要在用户登录系统时注册使用,呼叫请求,呼叫通报,客户端呼叫应答和服务器呼叫应答主要在呼叫请求的过程中。具体过程为主叫方将呼叫请求发送至服务器,服务器收到请求后解析数据包产生呼叫通告报文发给被叫方,等待被叫方的呼叫应答报文,然后将结果传递给主叫方,同时,如果被叫方长时间没有反应,则服务器会产生呼叫失败报文给主叫方。
对于数据类型的报文,其主要目的是承载通信双方的数据以及相对于数据的应答。主要包括数据报文、应答报文和数据结束报文。报文格式如图所示:
图5-11 数据报文 图5-12括数据报文
图5-13 应答报文
图5-14 结束报文
从图中可以看出数据类报文结构和信令类相比,有了包号,数据长度和数据字段,其中数据长度和数据主要表示传输的数据,而对于包号,主要作用是中断可以根据包号重组收到的数据包,保持数据包的完整性。
5.4 uC/GUI的移植
5.4.1 uC/GUI的目录结构
uC/GUI推荐的目录结构如图4-7所示,在工程文件夹中保持uC/GUI程序文件(包括头文件)的独立性和完整性可以使uC/GUI的升级更加简单(仅需简单的替换GUI子文件夹)。
图5-15 uC/GUI目录结构
各个子文件夹的容说明如下表所示:
表5-2 uC/GUI文件结构及说明 目录 Config GUI\\AntiAlias GUI\\ConvertMono GUI\\ConvertColor GUI\\Core 容 配置文件 抗锯齿支持* 用于灰度级显示的颜色转换程序* 用于彩色显示的颜色转换程序* uC/GUI核心文件 GUI\\Font GUI\\LCDDriver GUI\\MemDev GUI\\Widget GUI\\WM 注释:标注“*”的为可选模块
字体文件 LCD驱动程序 存储设备支持* 控件库* 窗口管理器* 5.4.2 在目标系统上应用uC/GUI的配置过程
uC/GUI的移植过程如图5-15所示:
图5-16 uC/GUI移植过程
1.底层驱动程序,使其可以正常显示。 2.在工程项目中加入uC/GUI程序包。
3.修改有关的配置头文件(在将uC/GUI程序包加入到工程项目文件中后,
首先要做的就是要对uC/GUI进行相关的配置,以使其与自己所采用的具体硬件环境相适应。
具体步骤如下:
编写TFT-LCLCDConf.h 、GUIConf.h 、GUITouchConf.h
5.4.3 LCDConf.h的配置(低层配置)
LCDConf.h中包含与具体型号的液晶显示器硬件相关的宏定义,主要有两大类:
1.LCD宏:定义显示分辨率以及其他可选特性(例如镜像等); 2.LCD控制器宏:定义如何访问你所使用的LCD控制器。 本文程序中LCDConf.h文件的容如下: #ifndef LCDCONF_H #define LCDCONF_H
#define LCD_XSIZE (320) //定义水平分辨率 #define LCD_YSIZE (240) //定义垂直分辨率
#define LCD_CONTROLLER (9325) //定义LCD控制器的型号 #define LCD_BITSPERPIXEL (16) //定义每个像素的颜色位数
#define LCD_FIXEDPALETTE (565) //定义调色板格式,此处采用565 //颜色格式
#define LCD_SWAP_RB (1) //交换红蓝基色
#define LCD_INIT_CONTROLLER() ili9325_Initializtion(); //LCD控制器
//初始化函数 #endif
5.4.4 GUIConf.h的配置(高层配置)
GUIConf.h头文件中的容主要用来配置GUI库的一些可选功能,例如是否使用窗口管理器(WM)、控件库(widget library)功能以及是否启用多任务环境支持等选项。
本文程序中GUIConf.h文件的具体容如下所示:
#ifndef GUICONF_H #define GUICONF_H
#define GUI_OS (1) //启用多任务环境支持 #define GUI_SUPPORT_TOUCH (0) //不启用触摸屏