基于Linux操作系统的网络应用软件开发 联系客服

发布时间 : 星期六 文章基于Linux操作系统的网络应用软件开发更新完毕开始阅读b0c8b60b905f804d2b160b4e767f5acfa1c7837f

界面如图3-2所示。

图3-2 数据采集终端界面

主菜单中只有两个动作,设置和关闭,设置可以完成对要连接的服务器IP地址及端口号的设置,还能设置数据采集终端的采样周期和警报上限。关于菜单是有关该程序的介绍。

数据采集终端包括的功能有拨号建立GPRS连接,与服务器建立连接,数据采集,数据处理,传送处理后的数据以及接受服务器的远程指令控制。由于本文的主要目的是设计一个通用的软件平台,而拨号建立连接GPRS相当于是平台运用的是个实例。

在对功能进行说明前,首先说明应用层协议。为了实现客户端与上位机的通信,两者之间应当具有应用层协议。本文设计的应用程序客户端与上位机之间的应用层协议结构如图3-3所示。

12

数据块大小数据类型数据 图3-3 应用层协议格式

在对功能进行说明前,首先说明应用层协议。为了实现客户端与上位机的通信,两者之间应当具有应用层协议。

数据块大小是命令类型与数据所占的字节数。

数据类型标识了所包含的数据的类型,本文的应用程序支持三种类型: (1) ‘I’为信息类型,其后的内容是数据采集终端与上位机之间的交

换信息,主要在连接建立初期传送这类信息,用于上位机获取并登记数据采集终端的信息,该类型的数据包括‘F’和‘R’两种,‘F’是在建立连接时,又数据采集终端向上位机发送终端信息,而上位机接到信息并登记后,以‘R’数据回复。

(2) ‘C’为命令类型,其后的数据是预定义的一些命令,该类数据

一般由上位机首先发起,然后接收数据采集终端的反馈信息。 (3) ‘D’为数据类型,其后的数据就是数据采集终端发往上位机的

数据处理结果。

建立连接是完成其他功能的前提,数据采集终端只有在连接建立的情况下才能完成与上位机的通信。因此首先要说明连接建立的过程。连接建立过程经历了以下步骤:

(1)服务器首先要处于运行状态,然后客户端点击连接按钮,此时,客户端使用套接字执行QTcpSocket::connectToHost()函数请求与服务器连接;

(2)服务器监听到有连接请求,创建新的线程,并在新线程内创建套接字,当建立起与服务器的连接后,客户端的套接字会发出QTcpSocket::connected()信号,客户端接收到该信号后,向服务器发送本客户端的信息;

(3)服务器接收到客户端信息,进行登记并回复客户端; (4)客户端收到服务器回复再次回复服务器,以证明自己身份;

13

(5)客户端与服务器均更新自己的状态,完成连接的建立。 上面的步骤提到的客户端信息,主要包含了服务器从套接字获得的客户端的IP地址和端口号,以及客户端发送来的客户端的设置,包括采样周期和报警上限等。服务器将客户信息保存在一个动态分配的ClientDataConnectionInfo结构中,然后,服务器以IP地址:端口号的形式作为键,将其保存在一个全局的QMap对象中,便于以后使用。由于使用的是全局对象,同时服务器采用了多线程,因此需要使用QMutex实现互斥访问[10]。

连接建立以后,就可以设计其他功能了,数据采集与数据处理是一对生产者与消费者线程,只有数据采集线程采集到一定量的数据后,数据处理线程才会开始运行并处理数据。这点使用QSemaphore信号量实现,本文设计了一个双缓冲结构,即虽然采集1024个数据点,但缓冲区设定为2048,空闲空间信号量被初始化为2048,而己用空间信号量被初始化为0,数据采集线程每次获取1024个空闲空间信号量,然后释放1024个已用空间信号量,而实际上还有1024个缓冲空间可用;而数据处理线程每次获取1024个己用空间信号量,然后释放1024个可用空间信一号量。这样做的目的是当采样周期时间比数据处理耗时短时,可以保证数据采集线程不会因为等待数据处理线程执行后清空缓冲区而使数据采集延时。

当连接已建立且服务器端发送采集命令时,两个线程开始运行。两个线程的区别主要体现在两点:数据采集线程中间会休眠,而数据处理线程不休眠;数据采集线程获得的数据放入缓冲区供数据处理线程使用,而数据处理线程处理后得到的结果要通过网络发送给上位机。另外,需要说明的是,本文由于实际条件所限,并没有进行实际的数据采集,而是通过产生1024个随机数来模拟数据采集,而数据处理则通过对1024个数求平均值进行模拟。

剩下的最后一个数据采集终端功能是执行上位机的命令。这类似于建立连接时上位机与数据采集终端交换信息的过程,只不过传递的命令是‘C’类型,数据是相应的命令,这里不再赘述,其他命令的执行与此

14

类似。

(三)上位机应用软件设计

上位机应用软件不需要进行Qt库移植,Qt有支持Windows的版本,直接安装使用即可。操作菜单包括运行服务器,控制数据采集终端开始或停止采集,远程关闭数据采集终端。设置菜单包括两个设置,一个是对上位机的设置,另一个是当与某个数据采集终端连接时,若处一于未采集状态,则一可以进行远程参数

设置。查询菜单是查看当前选中的客户端的运行状态和信息。关于菜单.是对软件的介绍。中间的表格用来显示超限的数据,可以清除记录。选择客户端列表示当前与服务器连接着的数据采集终端的键,即数据采集终端IP地址:端口号,没有连接时则显示无,这样,用户可以选择想要控制或者查看的客户端。图3-4中的状态下有一个客户端与服务器相连,且出现了错误数据。

图3-4 上位机界面

15