张弘志 尹德胜 李 铁
*中国铁道科学研究院通信信号研究所 助理研究员,100081北京
STP-yh型无线调车机车信号和监控系统 (简称调车监控系统),通过地面设备和车载设备进行无线通信联控,实现调车机车在集中区车场安全作业。为了在产品出厂前最大限度地完成测试,及在实验室对现场问题进行模拟再现,研制完成了调车监控系统模拟测试平台。联锁模拟模块作为模拟测试平台的基础模块,使用了Visual C++6.0语言,运用面向对象技术和多线程技术等,并引入了“设计模式”作为分析和解决问题的工具。
联锁模拟模块替换掉了真实系统中的外部联锁通信机,将联锁码位 (站场联锁设备状态)模拟信息发送给地面设备。由于实验室环境和现场实际通信环境均需要模块适应各种通信方式,如RS-232、RS-485串行,TCP、UDP网络通信,甚至是CAN通信来发送联锁数据,因此专门设计了通用的底层通信接口。
不同的通信接口对应着不同的驱动程序类,且包含着不同的接口函数。如串口RS-232、RS-485对应驱动程序类 CSerial;网口TCP、UDP对应驱动程序类 CTCPSocket或是CUdpSocket;CAN口对应类CCAN。因此可应用设计模式中的适配器模式Adapter来统一不同通信方式的通信接口。具体步骤如下。
1.构建通用接口类基类CCommProduct,制定标准的接口函数,如Open、Close、Read、Write均为虚函数且可被继承。
2.创建CCommProduct的派生类,诸如包装处理串口的 CCommProductSerial,将底层的驱动类(对于串口类,就是CSerial)封装进去,并保持与基类 (通用接口类的)一致的接口,如 Open、Close、Read、Write等。同理,针对网口,用类CCommpProductUDP封装CUdpSocket;针对CAN口,用CCommProductCAN封装CCAN,通信接口UML简化类图如图1所示。……