基于Qt的智能手机系统服务层实现

时间:2022-09-21 11:10:25

基于Qt的智能手机系统服务层实现

摘要:智能手机的软件系统由四层结构组成,系统服务层是其中的第二层,通信协议栈、设备驱动模块接口和本地引擎都由此层处理。介绍了基于Qt编程开发环境实现智能手机系统服务层的两种方案,结合智能手机的语音通话、短信收发等基本功能,分析了多线程和定时器等两种方案的实现过程,总结了两种方案的优缺点。

关键词:智能手机;系统服务层;Qt;多线程;定时器

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599 (2011) 10-0000-02

Qt-Based Smart Phone System Service Layer Realization

Dong Wen

(Hubei Vocational College of Land Resources,Jingzhou434000,China)

Abstract:Smart phone software system by the four structures,the system service layer is the second layer,the communication protocol stack,device driver module interfaces and local engines this layer.Describes the programming development environment based on Qt smart phone system service layer to achieve the two programs,combined with smart phones for voice calls,messaging and other basic functions,analysis of multi-threading and timers and other two programs to achieve the process,summed up the two advantages and disadvantages.

Keywords:Smart phone;System services layer;Qt;Multi-threading;Timer

智能手机软件系统一般可分为四层结构:最底层是操作系统层,主要实现对嵌入式Linux内核的移植、裁剪,以及Linux的快速启动和电源管理等功能;第二层是系统服务层,集成了GSM/GPRS/TD-SCDMA等2G/3G多模协议栈,为设备驱动模块提供统一的接口,支持本地引擎和多媒体编解码器的开发,为嵌入式数据库提供服务等。第三层是中间层,包括嵌入式GUI图形用户接口、智能手机中间件系统以及嵌入式浏览器层等;最上层是应用层,实现智能手机的各项应用功能[1]。

Qt是诺基亚开发的一个跨平台C++图形用户界面应用程序框架,提供了多线程和定时器等两种开发多用户程序的方式,给应用程序开发者建立艺术级的图形用户界面提供了所需的功能。本文基于嵌入式Linux操作系统和Qt4.5编程开发环境,用多线程和定时器两种方式实现了智能手机的系统服务层功能,并比较了两种方案实现系统服务层的优缺点。

一、多线程机制实现系统服务层

(一)服务线程的设计与线程间通信

通话和短信是智能手机的基本功能之一。本文以短信的收发为例,介绍利用Qt的多线程机制实现系统服务层功能的方法。为实现短信的收发,本文设计了三个线程:GUI线程(主线程)、响应线程(QAServer线程)和监听线程(QLServer线程)。其中,QAServer线程用于响应用户的操作;QLServer线程用于对GPRS模块串口进行监听[2]。三个线程之间的调用与协作方式为:

1.QLServer监听GSM/GPRS模块传送过来的信号,当有短信到来时,由QLServer解析出是短信信号,并把解析出的短信索引位置(index)通过QT线程之间的传递机制发送给QAServer线程。

2.QAServer线程通过索引位置(index)解析出发送方的号码,并发送消息给主线程。

3.主线程调用界面管理中的方法,弹出提示框提示有新短信到来,等待用户阅读。若用户点击阅读短信,主线程便将短信索引位置返回给QAServer线程。

4.QAServer线程接收到消息后,调用短信解析函数read Message,解析出短信内容,然后发送消息给主线程,主线程调用界面管理中的方法,显示短信内容。

5.编辑短信内容,输入目标号码,点击发送短信。主线程将短信内容、短信中心号码、目标号码等以消息的形式,发送给QAServer线程。

6.QAServer线程调用send Message函数对短信编码,然后通过AT指令,向GPRS模块串口写入编码后的短信,由GPRS模块将短信发送出去[3]。

(二)线程间通信的实现

线程间的通信通过QCOP协议实现。QCOP是Qt内部的一种通信协议,该协议用于不同的客户之间在同一地址空间内部或者不同的进程之间进行通信。目前,这种机制只在Qt的嵌入式版本(Qt/Embedded)中提供。

QCOP利用继承自QObject的QcopChannel类来实现多个线程之间的通信。QCopChannel类提供静态函数send()来发送需要传递的消息和数据,静态函数is Registered()来查询某个Channel是否已经被注册。当从channel中接收消息和数据时,需要构造一个QcopChannel子类并重写receive()函数,或者提供一个槽并利用connect()函数将receive()信号连接起来。

下面以QLServer线程监听到新短信,向QAServer线程发送短信索引位置(Message index)为例,说明采用QCOP机制线程之间的通信方式。

在QLServer中的方法:

QByteArray data;

QDataStream out(&data,QIODevice::WriteOnly);

out

QCopChannel::send("/System/NewMessage","newMessage(QString)",data);//发送消息

在QAServer中的方法:

QCopChannel*channel=new QCopChannel("/System/NewMessage",this);//注册Channel

QObject::connect(channel,SIGNAL(received(const QString&,const QByteArray&)),this,SLOT(proMsg(const QString&,const QByteArray&)));

二、定时器方式实现系统服务层

首先建立一个GprsServer类,在类的构造函数中创建并启动定时器TimerProcess,并利用信号和槽机制中的connect函数,将定时器超时与功能处理函数processGprs相关联。然后通过功能处理函数processGprs来间隔的读取串口和处理用户的相关操作(如接/打电话等)。用户的不同操作将通过标志变量来确定,用户的操作和读取串口提取出来的信息都会设置相应的标志变量(如用户点击发送短信,SendMF被置为1。SendMF为1并且定时器超时,发短信功能代码将被执行同时SendMF被重置为0)。图1为使用定时器的流程图。

图1.定时器实现服务层的程序流程图

三、测试结果

基于UP-TECH嵌入式开发平台和Linux操作系统对多线程和定时器两种方案实现系统服务层进行了测试,实现了智能手机电话拨打/接听/拒接和手机短信接收/发送等基本功能。测试结果表明:

1.使用多线程将程序划分为多个独立的任务,可以提高应用程序的响应速度。在GPRS串口采集线程运行的过程中,用户界面一直处于活动状态,可以即时无延迟感的响应用户的操作。另外多线程中有专门的线程负责采集GPRS数据的线程,这样就可以保证读出GPRS串口发送过来的全部数据,确保了数据的完整性。但使用多线程会带来一些不确定因素,如果线程之间的通信没有处理好,会产生数据的不同步和线程安全问题。另外,使用多线程在技术上有一定的难度。

2.使用定时器的优点是功能的划分比较明确,实现难度相对较低,出现异常的情况可以得到控制。缺点是对设备的利用率不高,每次对GPRS串口的采集都有一定的时间间隔,这就要求硬件设备有一定大小的缓冲区。在一定情况下,如大量信息的接收,有可能产生数据的丢失。

3.两种方案都均具有良好的可扩展性:采用多线程方案时,只需要添加线程和增加功能函数即可对手机功能进行扩展;采用定时器方案时,也只需要增加相应的标志变量和功能函数,同样可以对手机的功能良好的扩展。

四、结束语

智能手机的软件系统可分为四层结构。其中第二层为系统服务层,是连接操作系统层与中间层和应用层的接口,直接关系智能手机各项功能的实现。本文基于Qt4.5,采用多线程和定时器等两种方案实现了智能手机后台系统服务层的功能,并对两种方案的优缺点进行了比较和总结,对智能手机的开发者具有一定的参考价值。

参考文献:

[1]周绪宏,梁阿磊,戚正伟.基于嵌入式Linux的智能手机系统软件的设计与实现[J].计算机应用与软件,2008,25(3):59-61

[2]周绪宏.智能手机系统软件设计与研究[D].上海交通大学,2007

[3]李志伟.基于AT指令的串行通信程序的设计[J].微计算机信息,2007,9

[作者简介]董文(1967-),男,湖北京山人,本科,讲师,主要从事计算机控制系统的研究。

上一篇:《网络综合布线设计与施工》课程建设探讨 下一篇:城市污水处理研究进展