基于arm的gprs通信系统的设计论文内容摘要:

b [root@localhost tslib]$./ (4) tmake 的设置 解压后的 源文件需要作一定的修改后才能用于产生 Makefile 文件,需要 修改的内容如下: [root@localhost tslib]$vi /qt2/++/ 在 TMAKE_LIBS 处加 –lts, 在 TMAKE_LINK 处该为 armlinuxg++. 输入 :w。 保存。 (5) 编译。 进入 目录,运行 “ ” 脚本 [root@localhost tslib]cd /qt2/ [root@localhost ]$. (choise item:license yes:color depth:16。 Virtual Framebuffer:no) 以后即可以在此目录下面编译可在目标机上面运行的程序。 串口 通信 模块的实现 基于 ARM 的 GPRS 通信系统的设计 第 18 页(共 52 页) 串口操作主要是先打开串口,再设置它的参数, 串口流程 如图 10 所示。 图 10 串口 通信 流程图 本系统采取了将串口的所有操作做成一个类,类名为 MySerial,它包含了 3 个函数,分别为: 1. tatic int set_opt(int fd,int nSpeed, int nBits, char nEvent, int nStop)。 该函数实现了设置串口的一些参数, fd 为用户打开的文件标识符, nSpeed 为波特率, nBits 为数据位, nEvent 为奇偶效验, nStop 为停止位。 失败返回 0。 把三个函数都设置成为静态 函数的原因是它们可以和类无关,可以单独被调用或者设置,也可以使用类来调用它们。 其中设置串口参数的关键是在于串口配置的数据结构 [9]: struct termio { unsigned short c_iflag。 /* 输入模式标志 */ unsigned short c_oflag。 /* 输出模式标志 */ unsigned short c_cflag。 /* 控制模式标志 */ unsigned short c_lflag。 /* local mode flags */ unsigned char c_line。 /* line discipline */ 打开串口 设置串口 读 /写串口 关闭串口 保存以前串口配置 激活选项 设置波特率 设置数据位 设置奇偶校验 设置停止位 设置最少字符和等待时间 处理要写入的引用对象 激活配置 过程论述 第 19 页(共 52 页) unsigned char c_cc[NCC]。 /* control characters */ }。 设置串口的过程如下: (1) 串口配置使用 tcgetattr(fd,amp。 oldtio)函数 struct termios newtio,oldtio。 tcgetattr( fd,amp。 oldtio ); (2) 激活选项有 CLOCAL 和 CREAD, 用于本地连接和接收使能。 | = CLOCAL | CREAD。 (3) 设置波特率 ,使用函数 cfsetispeed、 cfsetospeed cfsetispeed(amp。 newtio, B115200)。 cfsetospeed(amp。 newtio, B115200)。 (4) 设置数据位,需使用掩码设置。 amp。 = ~CSIZE。 |= CS8。 (5) 设置奇偶校验位,使用 c_cflag 和 c_iflag。 设置奇校验: |= PARENB。 |= PARODD。 |= (INPCK | ISTRIP)。 设置偶校验: |= (INPCK | ISTRIP)。 |= PARENB。 amp。 = ~PARODD。 (6) 设置停止位,通过激活 c_cflag 中的 CSTOPB 实现。 若停止位为 1,则清除CSTOPB,若停止位为 2,则激活 CSTOPB。 amp。 = ~CSTOPB。 (7) 设置最少字符和等待时间,对于接收字符和等待时 间没有特别要求时,可设为 0。 [VTIME] = 0。 基于 ARM 的 GPRS 通信系统的设计 第 20 页(共 52 页) [VMIN] = 0。 (8) 处理要写入的引用对象 tcflush 函数刷清(抛弃)输入缓存(终端驱动程序已接收到,但用户程序尚未读)或输出缓存(用户程序已经写,但尚未发送)。 int tcflush(int filedes, int queue ) (9) 激活配置。 在完成配置后,需激活配置使其生效 , 使用 tsettattr()函数 ,它的原型: int tcgetattr(int filedes, struct termios * termptr)。 int tcsetattr(int filedes, int opt, const struct termios * termptr)。 2. static int open_port(int fd,int port)。 该函数实现了打开端口,第一个参数为任意,第二个参数为打开的串口端口,如port 为 1 则打开串口 0( ttyS0)。 返回打开的文件标识符。 因为在 Linux 下操作串口等设备与操作文件相同。 所以操作串口的函数是下面一些常用的函数: fd = open( /dev/ttyS0,O_RDWR|O_NOCTTY|O_NDELAY)。 read(fd,buff,8)。 write(fd,buff,8)。 open 函数 是打开串口 0 并返回文件标识符, read 和 write 分别是读和写的函数。 其中 fd 为文件标识符, buff 为缓冲区, 8 为缓冲区大小。 而 open_port函数则封装了 open函数, open_port第二个参数为选择串口号的参数。 3. static int nwrite(int serialfd,const char *data,int datalength)。 该函数实现了往串口写数据,其中第一个参数是文件标识符, data 为要传送的数据, datalength 为要传送数据的长度。 返回成功写入数据的长度。 nwrite 函数则将 write 函数封装,实现把第二个参数的字符串输出到串口。 nwrite 第二个参数设置成 const char*方便在主程序使用 QString。 原因在于 QString有个函数为 latin1(),将 QString 转换成 const char*。 应用程序的 UI设计 本系统采用的是 界面设计程序 UI[10]。 它拥有两个 UI 界面,一个为短信界面,一个为电话界面。 过程论述 第 21 页(共 52 页) 背景图片和按钮图片都是用 photoshop 完成的,在程序中加载。 短信界面如图 11 所示。 图 11 短信界面 短信 UI 拥有 4 个按钮, 5 个文本框, 1 个图片框,它们分别拥有如下功能: Call 按钮:进入 Call 的 UI 界面。 Send 按钮:发送短信(发送前检测短信中心号码,接受号码和内容是否为空)。 Open 按钮:阅读 “ 对方号码 ” 指定 ID 的短信。 Exit 按钮:退出按钮。 短信中心号码文本框:显示短信中心号码,属性为只读。 内容(左)文本框:预发送的短信内容。 对方号码 文本框:预发送短信的接收人的号码。 内容(右)文本框:显示读出来的内容,属性为只读。 State 文本框:显示所有的状态信息。 图片框:显示背景图片。 基于 ARM 的 GPRS 通信系统的设计 第 22 页(共 52 页) 此 UI 为 继承 gprs 类的 gprs_impl 类的对象 [11],而 gprs 类是一个框架类,并不包含图片等信息,所以在 gprs_impl 类的构造函数中要初始化图片。 图片相关的信息在构造函数将调用的 initPic()中初始化。 QString strPicDir=/pic/。 Btn_ClosesetPixmap(QPixmap (strPicDir+))。 Btn_OpensetPixmap(QPixmap (strPicDir+))。 Btn_CallsetPixmap(QPixmap (strPicDir+))。 Btn_SendsetPixmap(QPixmap (strPicDir+))。 BackImgsetPixmap(QPixmap (strPicDir+))。 其中 strPicDir 是 图片存放的 目录 ,本系统 是放在根目录下的 pic 目录中。 电话 界面如图 12 所示。 图 12 电话界面 电话 UI 拥有 16 个按钮, 2 个文本框, 1 个图片框,它们分别拥有如下功能: Exit 按钮:退出该 UI 回到短信 UI。 Message 按钮:退出该 UI 打电话按钮:拨打电话 过程论述 第 23 页(共 52 页) 挂电话按钮:挂电话 0- 9 按钮:电话数字按钮,按相应键在 Num 文本框中显示 C 按钮:删除上一个数字 按钮: 号 Num 文本框:显示号码的文本框,属性为只读,初始值为 10086 State 文本框:显示所有的状态信息。 图片框:显示背景图片。 此 UI 与 gprs_impl 类似,是继承 call 类的 call_impl 类的对象,而 call 类是一个框架类,并不包含图片等信息,所以在 call_impl 类的构造函数中要初始化图片。 图片相关的信息在构造函数将调用的 initPic() [12]中初始化。 AT命令编码解码模块的实现 AT 命令 作 为 XSCALE 开发板与 GPRS 模块通信的协议语言。 GPRS 通信系统使用 AT 命令通过串口向 GPRS 模块发送控制命令。 GSM 规范对短消息传输定义了三种控制协议:即二进制协议 (块模式 ),基于字符的 AT 命令接口协议 (文本模式 )和基 于字符的十六进制编码二进制传输块接口协议(PDU 模式 )。 块模式 ( Block mode) 是使用二进制编码来传输用户数据的接口协议。 为了提高可靠性,它带有差错保护,适合于链接不完全可靠的地区,尤其是要求控制远程设备的情况。 它属于 GSM 第一阶段的短消息传输接口协议。 目前, PDU 已取代了块模式。 文本模式( Text mode)是使用 AT 命令传输文本数据的接口协议。 该模式适合于非智能终端 、终端仿真器等。 PDU 模式相当于计算机网络中的分组交换接口协议。 这种传送方式能够很平稳地过渡到 GPRS,因此 GSM 规 范要求用户尽可能地使用 PDU 模式处理短消息。 所以本 系统 采用的是 PDU 模式来编码和解码。 与短消息相关的常用的 AT 指令如表 1 所示。 基于 ARM 的 GPRS 通信系统的设计 第 24 页(共 52 页) 表 1 常用与短消息相关的 AT指令 AT 指令 功 能 AT+CMGC Send an SMS mand(发出一条短消息命令) AT+CMGD Delete SMS message(删除 SIM 卡内存的短消息) AT+CMGF Select SMS message formate(选择短消息信息格式: 0PDU。 1文本) AT+CMGL List SMS message from preferred store(列出 SIM 卡中的短消息 PDU/text:。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。