基于C++的车道系统设计与实现

2015-10-19 07:09井福荣
电脑知识与技术 2015年20期

井福荣

摘要:信息系统旨在帮助高速公路收费站的后台一体化运营管理,实现后台服务中心与各个收费站点的信息的同步和智能化的管理。信息的实时与同步是每个企业增强管理、提高工作效率的基础,该文设计实现的车道实时对讲系统就是做到每个收费站点的信息与后方服务中心的实时同步,确保后台服务中心与各个站点的无障碍交流。

关键词:实时通信;信息同步;车道系统

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)20-0066-04

Design and Implementation of Lane System Based on C++

JING Fu-rong

(School of Information Engineering, Jiangxi University of Science and Technology, Ganzhou 341000, China)

Abstract: Information system is designed to help the highway toll station in the background of integrated operations management, to achieve the background service center and the information of the various toll stations to synchronize and intelligent management. Each enterprise should strengthen management of Information real-time and synchronization and improve work efficiency. This paper presents the design and implementation of lane real-time intercom system is to achieve real-time synchronization for each charge of site information and the rear service center, to ensure that the background service center and each site of barrier free communication.

Key words: real time communication; information synchronization; lane system

当今社会,互联网的飞速发展,给人们的工作和生活带来了极大的便利和效率,信息化,电子化的管理,实时的相互通讯成为了人们工作中的一部分;近年来,我国道路交通事业的飞速发展,取得诸多辉煌的成绩,但同一些发达国家比起来,我国的交通运输业还是存在一定的差距,尤其在智能交通领域这一块,我国的普及率远不及一些欧美发达国家,那么如何实现交通领域的智能化管理,节约运营成本,提高交通事业的运营效率,就成了我们在未来几年来交通事业发展的关键指标,车道实时对讲系统旨在帮助高速公路收费站的后台一体化运营管理,实现后台服务中心与各个收费站点的信息的同步和智能化的管理。

信息的实时与同步是每个企业增强管理、提高工作效率的基础,车道实时对讲系统就是要做到每个收费站点的信息与后方服务中心的实时同步,并且实现后台服务中心与各个站点的无障碍交流,后台服务中心可以方便的对其管理的每个站点进行信息的广播、交流,站点在也可以方便实时的告知后方服务中心自己目前的状况,真正做到信息的实时同步。

本系统是车道收费系统中的一个子系统,主要用于加强收费站的各个车道站点与后台服务中心的联系,由于高速公路收费站点的特殊性,大多处在偏僻的地方,远离社区,那么确保各个站点的信息的同步以便及时处理相关的收费站点信息就显得至关重要,本系统很好的实现了这个目标。

1 系统需求分析[]

1.1 功能需求

1)功能需求分析

系统构建的过程中最主要的步骤之一就是先做好需求分析,需求分析是软件生存周期中的关键一步。根据软件工程学中开发软件的要求,对系统全部功能和相关的技术进行具体的分析,分析时采用结构化的分析方法,自顶向下、逐层分解问题。结合企业要求以及实际的具体分析,要求本系统具有以下功能:

服务器端界面要求有:管理界面要求美观大方,个性化;各模块无间隙融合,操作简洁,功能丰富;能够很好的识别出各个车道站点的信息,具有默认排序功能;能够记录最近通话的站点,当前报警的站点、通话请求的站点。

客户端端因内嵌在window xp操作系统中,默认开启的服务形式,所以没有任何界面显示,主要响应系统按钮:报警按钮、对讲按钮、音量控制(+、-,静音)等。

2)功能详细需求

服务器端具有的功能有:

①对讲、接受对讲:服务器可以单击相应模块直接和客户端进行对讲;当客户端请求通话时,服务器单击相对应的客户端模块,就可以接受对讲。

②广播:服务器端可以对所有当前连接的客户端进行广播,通知重要的消息。

③录音:客户端和服务器进行对讲通话的时候,可以对通话内容进行录音,以便备用。

④音量控制(+、-、静音):控制调节音量大小。

⑤收费车道信息提示包括:车道号、收费员姓名、收费时间等,客户端连接到服务器时,会在服务器这边进行相应的显示其当前的具体的一些信息。

⑥状态提示:每个客户端上班、下班、请求通话、通话中、报警,网络错误等状态都会在服务器进行相应的显示,客户端和服务器实时保持状态信息同步。

客户端具有的功能有:

①报警:当收费员收费过程中难免会遇到一些紧急情况,如车主违规操作,收费员人身收费威胁等情况,这种情况下一键报警的功能就很有必要,系统实现了这个功能。

②请求通话:如果客户端有需要和后台通话的情况时,可以很方便的使用通话按钮进行请求通话,后台服务中心接受之后,就可以进行通话。

③音量控制(+、-、静音):服务器广播或客户端服务器进行对讲通话时可以随时调节控制客户端的音量大小。

1.2 系统性能要求

1) 时间性能要求:在实际应用中由于客户端的大量频繁的访问,服务器响应时间应该尽可能缩短,对于有特殊需求的应用,还要求达到实时响应。

2)存储性能要求:根据应用中的实际情况配置适当容量的存储设备,特别是音频存储设备容量方面要适当得配置。

3) 稳定性安全性要求:要求软件尽可能的稳定,对于一般的应用系统,对安全性要求不高,对于特殊的应用,还需要在安全性方面加以保证,所以要相应提高服务器端的配置。

2 总体设计

1)车道对讲系统原理及示意图

车道对讲系统本质是语音通讯和文本通讯的结合,服务器和客户端是一对多的连接,服务端和客户器的整体设计如图1所示:

图1 整体设计图

① 音通讯

语音通讯在windows操作系统下可以采用Microsoft提供的WaveX低级音频函数实现,主要的原理就是音频采集、编码、发送、解码、播放等几个阶段。

②文本通讯

文本通讯相比语音通讯比较简单,这里我们利用文本通讯发送自定义的协议消息包,在客户端和服务器使用TCP/IP协议进行socket连接之后,主要发送自定义的协议消息包:

图2 文本通讯原理图

2)总体结构及示意图

车道对讲系统客户端和服务器端的交互其本质上最终是语音和文本的交叉通讯,其总体结构示意图如图3:

图3 总体结构

① 音通讯:

图4 语音通讯结构图

②文本通讯:

图5 文本通讯结构图

3)总体程序流程及示意图

图6 总体流程图

车道对讲系统有客户端和服务器两部分组成,服务器可以连接多个客户端,客户端连接之后,都会在服务器的具体位置显示其指定的标识,当客户端和服务器连接之后,就可以进行语音文本等具体信息的交互、客户端和服务器连接的程序流程图如图6。

3 车道系统的详细实现

3.1整个系统的开发

系统开发采用的是C++ builder,为了说明代码的编写,下面以“网络音频数据传输”模块为例进行阐述:

网络数据流不间断的传送与接收是语音通讯流畅的基础,本系统采用TCP/IP协议来实现这个目的。C++ builder提供了用于socket通信的控件,使用socket控件clientsocket控件和serversocket控件可以很方便的使服务器和客户端进行通信,只要clientsocket控件和serversocket控件设置的通信端口号一致,serversocket控件设置为侦听状态,clientsocket控件这边连接即可实现通信,具体流程图如图7:

图7 音频数据的输入输出

代码具体实现如下:

1)socket连接:

本段代码由于客户端和服务器socket连接,当serversocket和clientsocket的Active属性为true,且端口号一致的情况下,客户端和服务器就建立了连接。

2)音频输入输出设备打开:

本段代码封装了Microsoft低级音频打开音频输入输出函数,方便用于接收输出音频数据流。

3)音频数据发生和接收:

Socket控件提供了用于接收发发送数据流的函数,即上面的SendBuf和ReceiveBuf函数,可以用于接收音频数据数据流。

4)音频输入输出设备关闭:

当断开通话时,需要关闭音频输出输出设备,停止数据流的输入输出,可以使用上面的两个函数。

3.2 界面模块划分及其实现

本系统服务器端划分为5个模块,车站列表显示模块、车道信息显示模块、功能按键操作模块、当前报警记录模块及通话请求记录模块,其结构图如图8。

1)系统主界面

①服务器主界面

服务器主界面的简单易用是应用程序人性化的基本要素,本系统服务器充分考虑到了这一点,下面是服务器主界面,如图8:

图8 服务器主界面

②客户端主界面

客户端默认开启服务的形式,即实际是没有界面的,配置在便携式路桥收费计算机上,由于条件限制,这里用一个模拟测试界面如图9:

图9 客户端模拟界面

2)服务器端界面设计

①车站列表显示模块

该模块主要显示站点信息,显示后台服务中心控制的所有站点,单击选中状态可以在车道信息显示模块显示该站点,未选中则不显示,如图10:

图10 车站列表显示模块

②车道信息显示模块

收费车道信息显示模块是服务器端显示界面的基础,其他模块的操作多多少少都依赖于收费车道信息模块显示的收费车道信息,所以,它的实现就显得至关重要,收费车道界面如图11:

图11 车道信息显示模块

由于界面较多,考虑到篇幅,只提供了以上界面。

4 结束语

本文详细阐述了基于C++实现车道对讲系统,通过测试和试运行基本满足了收费站的需求。但本系统的局限在于指定在局域网内进行通讯、而非在广域网通讯,且以读取配置文件的形式进行提前的配置,所以在客户端和服务器使用之前需要确保配置文件的正确性、一致性;客户端配置中包含服务器的IP,如果服务器端的IP改变的话,所有的客户端都要相应的改变,所以在便捷性上存在缺陷,配置文件中预设了通讯需要的端口号,客户端和服务器是一致的,但当有其他应用程序占用该端口号时,客户端和服务器通讯就会出现问题,需要更改端口号,由于服务器和客户端端口号要保持一致性,所以端口号是不能随便更改的,这点不具有便捷性,也是本文后续研究的方向之一。

参考文献:

[1] Andrew Konenig,Barbara E Moo. Accelerated C++中文版[M]. 靳志伟, 译.北京: 机械工业出版社, 2007.

[2] Stanley B LippmanBarbara, E Moo JoséeLaJoie. C++Primer[M]. 李师贤, 蒋爱军, 译. 4版.北京: 人民邮电出版社, 2006.

[3] Steve McConnell.代码大全[M]. 金戈, 汤凌, 陈硕,等, 译. 2版. 北京:电子工业出版社, 2006.

[4] 姚光起. 一种氧气镐材料的制备方法[P]. 中国专利. 891056088, 1980-07-03.

[5] 王青. 高速公路不停车收费车道系统的设计与实现[D]. 大连: 大连海事大学, 2012.