void encodeGPRS(Qstring gprsSC); //解析读出的信息,并唤醒
//QLServer中的响应操作
QAServer线程主要是用于执行相关的响应操作,如拨打/接听电话等。QAServer线程主要包含以下函数(相关的槽函数将在下面讨论):
void call(QString); //打电话
void answer(); //接电话
void hanUp(); //挂电话
void sendMessage(QString MES,QString serverNum,QString TeleNum);
//发送短信,调用了enCodeMES
void enCodeMES(QString MES,QString serverNum,QString TeleNum);
//对要发送的短信进行编码
void readMessage(QStirng index)//读取短信,并触发用户界面层的界面操作
( //调用了unCodeMES)
void unCodeMES(QString mesrc,QString phonenum);//解析要读取的短信
整个应用程序共包括3个线程及主线程,从而构成了用户界面层。所有涉及界面的操作必须在主线程中实现,主线程也被称为GUI线程,它是唯一一个允许执行GUI相关操作的线程(而且必须在创建一个QThread之前创建QApplication(or QCoreApplication)对象)。在QAServer中的界面操作,则是通过 signal/slot 机制,通过QAServer线程类中创建一个 signal (信号),在主线程的界面管理类中创建一个slot(槽)。一旦QAServer线程发送相关修改界面的信号,主线程即接收并对信号进行处理,进而调用相应的界面管理类的方法(槽)来响应操作。
1.2 线程间的通信流程
本段以接收,阅读短信并发送短信为例,说明服务程序层的线程间通信的流程,如图2
○1QLServer线程和QAServer线程以及主线程,消息循环,等待可能输入进行相应。QLServer不断监听GPRS/GSM模块传送过来的信号,当有短信到来时,由QLServer解析出是短信信号,并把解析出的短信索引位置(index)通过QT线程之间的传递机制发送给QAServer线程。
○2QAServer线程通过索引位置(index)解析出发送方的号码,并发送消息给主线程。
○3主线程调用界面管理对象中的方法,弹出提示框,提示有新短信到来,用户是否需要阅读短信。用户点击阅读短信,主线程将短信索引位置返回发送给QAServer线程。
○4QAServer线程接收到消息后,调用短信解析函数readMessage,解析出短信内容,并(把)发送消息给主线程,主线程调用界面管理中的方法,显示短信内容。
○5编辑短信内容,输入目标号码,点击发送短信。主线程将短信内容、短信中心号码、目标号码以消息的形式,发送给QAServer线程
○6QAServer线程调用sendMessage函数,编码短信。并通过AT指令,向GPRS模块串
口写入编码后的短信。短信将被GPRS模块发送。
图2 线程间的通信(以接收,阅读,发送短信为例)
1.3 线程间通信机制的方式与实现
1.3.1 QCOP协议
QCOP是Qt内部的一种通信协议,该协议用于不同的客户之间在同一地址空间内部或者不同的进程之间的通信。目前,此机制还只在 Qt 的嵌入式版本(Qt/Embedded)中提供.
QCOP利用继承自QObject的QCopChannel类来实现。QCopChannel可以实现多个线程之间的通信。QCopChannel类提供了
请下载论文,论文或程序为doc或rar格式,只上传部分目录查看,如果需要此论文或程序,请点击-下载论文,下载需要资料或是论文。