Page 58 - 智慧地铁建设实践与创新研究
P. 58
智慧地铁建设实践与创新研究
Research on the Practice and Innovation of Smart Metro Construction
在设计接口前,首先对通信格式做一个简单说明。数据串由同步头、用户
ID、消息类型、消息长度、消息 ID、消息数据和校验码组成。校验码用于检验
串口传输的正确性,计算方式为非校验码字节外所有字节求和取反并加 1 再与
key 异或。key 是 TVM 售票系统随机生成的,用于计算握手消息之外消息的校验
码。数据串的组成要素都可能作为传入接口函数的参数。语音交互的前提是先创
建一个会话对象 session,该对象代表软件层面的语音模组,命名一个可以创建语
音会话的接口 createSession,并使用此接口的返回值定义会话对象。此接口参数
较多,需要做详细说明。成功连接回调、成功关闭回调、确认应答回调、心跳回
调、接收语音回调这 5 个参数是回调函数的结果,因与语音售票功能实现有较强
关联性,后续会在语音售票功能实现模块对此类回调函数做进一步说明,此处仅
需知道返回结果作为 createSession 参数即可。其余参数根据功能需要随机选取。
与创建语音会话接口对应的是释放语音会话接口,此接口的作用是释放创建
的会话对象,即在软件中销毁语音模组,以防占用内存,参数是会话对象的地址。
在软件中成功创建语音模组后,接下来便是设置语音模组进入工作状态,即开始
会话接口。该接口的参数依然是会话对象的地址。当无需语音交互时,软件中需
要控制语音模组进入关闭状态,即关闭会话接口。语音模组进入工作状态时,时
刻与售票软件交互数据,售票软件会发送握手消息和初始化命令,确保语音模组、
售票软件二者已通信成功并能正常完成初始化工作,因此发送握手消息接口和初
始化接口的设计是必要的;反之售票软件收到语音模组的消息时,也需要具备发
送确认应答的能力。
需要注意,stopSession 接口被调用后,会向通信接口的三个子线程发送关闭
消息,然后返回,属于异步操作。在对会话对象 session 进行析构时,会发生阻
塞现象,只有当三个子线程全部执行完毕退出后,析构才能彻底完成,所以一定
要在合适的位置调用 stopSession 接口并且只能调用一次。在关闭售票软件时,
切记在最后调用 releaseSession 接口释放资源。
三、智慧地铁自动售票机语音售票功能的集成设计与实现
(一)系统环境与开发工具的分析
开发一款计算机软件,首先要考虑软件的运行环境。目前主流的、应用最广
泛的操作系统有 Linux 和 Windows。Linux 开源免费,稳定性、流畅性、安全性
·46·

