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·
   53   54   55   56   57   58   59   60   61   62   63