廖列法,张幸平
(江西理工大学 信息工程学院,江西 赣州 341000)
数字化时代的到来在很大程度上改变了人们传统的生活生产方式,在各行业领域中基于iOS移动端的应用越来越多,同时随着智能设备的逐渐普遍,移动互联网技术已然成为未来高新技术发展的重要方向。与此同时,移动互联网技术在传统行业中的应用越来越广泛,各个行业的改革也都朝着智能、智慧化方向发展。例如国家电网、各大高校、医院、制造业,家居业等众多领域都纷纷提出建设智能电网[1]、”互联网+”课堂[2]、智慧医疗[3]、智能制造[4]、智能家居[5]。因此传统指挥系统的升级也成为迫切需要解决的问题。
目前,传统的指挥系统要求特定设备,功能较为单一,没有良好的交互界面。比如楼宇对讲系统[6]、基于Linux对讲系统[7]分别使用对讲机、Linux终端作为对讲设备,同时也没有可视化界面,难以满足互联网时代用户的需求。在互联网时代下,如何利用移动互联网技术实现指挥系统的升级成了智能化发展的一个方向。比如以目前主流的iOS系统设备替换原有的旧型专用设备,增加地图上实时显示用户位置,通过耳机控制对讲,增加状态类消息实时显示当前状态,设计更加人性化的UI提升用户体验效果等都是用户提出的真实需求。因此开发基于iOS的智能可视化指挥系统[8]对传统指挥系统的升级具有非常重要的意义以及应用价值。
系统采用主流的C/S架构,通过TCP协议实现客户端与云服务器之间的数据传输。首先,云服务器作为整个系统的数据处理中心,主要负责用户验证,语音流数据,上下线、位置、控制类、状态类等消息的解析与转发,以及提供可靠的数据高速访问和存储服务,同时采用Ngnix[9],Redis[10],Nodejs[11],Mysql[12]作为技术框架,支持分布式集群化部署满足多用户、高并发需求,实现云服务器的高性能,高可用。其中,Nginx为负载均衡反向代理服务器,可实现静态分离,将所有客户端的请求依据权重随机的分配到相应的Nodje服务器,避免单台Nodejs服务器负载过大的问题。Nodejs为应用服务器,负责与客户端之间的数据分析与转发,是整个系统数据的流转中心。Redis为高速缓存服务器,建立主从的集群方案,作为mysql的缓存服务器,实现读写分离,保证数据的持续高速访问。Mysql为多台Nodejs的共享数据库,提供数据存储服务。整个系统的整体框架如1所示。
图1 系统架构
在实现基础对讲功能外,客户端以地图作为基础元素,利用网络定位[13]、GPS定位[14]、离线定位[15]技术监听位置变化信息并实时通过云服务器转发都所有在线的用户,另外除了基本位置消息外,扩展了个人信息(包括头像,真实姓名等)、抢麦消息、麦闲与麦忙消息、上下线消息等,结合这些消息,在地图上可以非常直观看出用户上下线变化、位置变化、麦状态变化等,其主要特点如下:
(1)设备多型化,支持当前主流的iOS移动系统设备作为客户端,不再需要专用设备,随身携带的iOS手机,iPAD就是一台指挥设备。
(2)可视化指挥,在地图上实时显示用户上下线、位置的变化,可以非常直观反应出每个用户的位置信息以及运动轨迹。
(3)特色功能,增加管理员优先抢麦功能,耳麦控制对讲功能,人性化的状态提功能等,增强了指挥系统的功能和提升了客户端的体验效果。
云服务器作为整个系统的数据中心,负责所有数据的解析与转发,控制着整个数据的流向,其数据流程如图2所示。当收到用户上下线、语音流、麦状态等消息时透传给所有在线的用户,再更新用户列表、对语音流进行转码和播放以及显示当前麦的状态。当收到抢麦消息时,如果用户具有管理员权限,都以管理员优先的规则保证抢麦的成功。如果用户是普通用户权限,此时若麦处于空闲状态则抢麦成功,反之,则抢麦失败。如果抢麦成功,用户可以开始说话,同时采集语音流数据进行编码和实时发送到云服务器,再由云服务器转发给所有在线用户。
图2 服务器数据流程
客户端主要分为登录与对讲两个模块。首先,用户在登录模块填写用户名、密码、房间名、服务器地址信息后与云服务器建立连接。其次,进入对讲模块后,根据收到的数据类型做出不同的响应,比如位置消息在地图上标注位置,上下线消息更新用户列表并在地图上增加或删除用户,状态类消息在界面上显示提醒信息,语音流消息进行解码与播放。同时建立数据转发机制,当位置、上下线发送变化时实时发送到云服务器。当需要说话时,发送抢麦消,如果抢麦成功,则进入对讲流程,实时的采集语音流数据,并将编码后的数据实时发送到云服务器,其功能流程如图3所示。
图3 客户端功能流程
利用Object-C层实现音频的录制、播放、事件回调的接口封装(AudioStream),C层实现音频的录制、播放、网络传输。
(1)录音
通过原生组件AudioUnit录制原始PCM格式的音频流,经Speex[8]编码后再发送到服务器。
(2)播放
从网络接收到音频数据流,经Speex解码转换为采样位数为16 bit的PCM格式音频数据,再通过AudioUnit进行播放。
(1)配置音频流[[AudioStream singleStream] setupStream:(NSDictionary *)info];
Info参数参考表1。
表1 视频流Info中的键值对
(2)连接
[[AudioStream singleStream] connect];
(3)断开连接
[[AudioStream singleStream] disconnect];
(4)请求麦
[[AudioStream singleStream] reqMic];
(5)释放麦
[[AudioStream singleStream] freeMic];
(6)录音
[[AudioStream singleStream] record];
(7)停止录音
[[AudioStream singleStream] stopRecord];
(8)注册音频流的事件回调
[[AudioStream singleStream] setAudioStreamEventHandler:
fe_audio_event_handle_t*audio_event_handle_callback];
参数为事件回调函数,回调事件说明参考表2。
表2 回调的事件说明
JSON消息
{′code′:′0′,′cmd′:′xxx′,′msg′:′xxx′}
消息说明参考表3。
表3 JSON消息格式说明
cmd说明参考表4。
表4 消息类型说明
msg说明参考表5。
表5 消息状态说明
(9)自定义消息
[[AudioStream singleStream]sendCustom Event:(id)
msg];
参数为自定义的消息类型。
(10)位置变化消息
通过自定义消息方式发送位置变化消息,具体消息格式如下:
{
"type":"location",
"data":{
"userName":"zxp",
"latitude":"23.171999",
"longitude":"113.462033"
}
}
消息说明参考表6。
表6 消息说明
系统测试中,采用单机部署方案,将系统部署在一台腾讯云服务器,其服务器配置信息为:CentOS 7.2 64位、双核CPU、2 G内存、5 M带宽、1 T磁盘。以iOS手机,iPAD平板电脑作为测试客户端,同时为了提升客户端在不同机型下的适配性,分别在iPad系列,iPhone 5 s、6 s、7、8、X等不同设备上测试,所有的UI界面都能在这些主流机型正常的显示。另外,分别在WiFi和4 G,3 G和2 G,网络不稳定等3种情况下进行测试,从测试结果来看,在网络信号稳定的情况下应用非常稳定顺畅,在网络信号一般但可用的情况下基本可用,不影响正常功能的使用,在网络不稳定、时不时出现网络断开的情况下,应用会断开,但一旦网络可用则会自动重新与云服务器建立连接,恢复对讲的所有功能。同时采用自动化测试工具,对服务器性能进行测试,其测结果见表7。
表7 服务器测试结果
从表7中可以看出,并发量从100增加到1000时,CPU利用率的变化为0.2%,0.3%,0.5%,说明服务器端为轻量型应用服务器,具有良好的性能。另外,消息数量从100增加到1000时,服务器响应时间都在毫秒之间且时间差为0.02 s,0.04 s,0.07 s,说明服务端具有较好消息处理能力,能够达到指挥系统中对消息实时性的要求。
图4登录界面中,输入账号,密码,房间名,服务器地址点击登录与服务器连接完成登录操作。
图4 登录界面
图5、图6对讲界面中,以地图为基础元素,在顶部显示所有在线的用户,同时在地图上标注所有在线用户的位置。
图5 对讲界面-抢麦成功
图6 对讲界面-其它人正在说话
随着人工智能与移动互联网技术在移动端的应用越来越广泛,针对主流的iOS设备实现一套可视化指挥系统,既能增强指挥系统的功能,又能提供多元化的界面交互。另外,整个系统的设计与实现均来自真实项目中用户的实际需求,同时在用户环境下进行分布式集群化部署,当前系统仍在健壮的运行中,评价较好,未收到用户反馈的功能性问题。因此本文为传统指挥系统的升级提供了一套非常实用有效的解决方案。下一步将在另一主流的Android系统上实现相应的指挥系统。