Skip to content

3.2 根据协议报文,扩展Protocal和ProtocalLinker

parallelbgls edited this page Jun 29, 2017 · 5 revisions

扩展传输层的步骤如下:

  1. 扩展IProtocalFormatting或ProtocalUnit,实现协议的内核

    • 继承IInputStruct,实现协议的输入类。
    • 继承IOutputStruct,实现协议的输出类。
    • 继承ProtocalUnit,实现输入类转字节数组函数Format和字节数组转输出类函数Unformat。
    • 如果继承ProtocalUnit的同时添加SpecialProtocalUnitAttribute属性([SpecialProtocalUnit]),则该协议不会执行ProtocalLinker中的BytesExtend和BytesDecact函数。
    • 请注意,您很有可能需要继承多个ProtocalUnit,实现通讯中的不同协议。
  2. 扩展IProtocal或BaseProtocal,实现协议的托管类

    • 你应该为每种通讯大类都扩展一次Protocal,并指定它的ProtocalLinker,比如ModbusRtuProtocal装载了ModbusRtuProtocalLinker而ModbusTcpProtocal装载了ModbusTcpProtocalLinker。
  3. 扩展ProtocalLinker,实现具体的协议

    • 要根据ProtocalLinker的名称命名一个ProtocalLinkerBytesExtend,同时继承IProtocalLinkerBytesExtend,实现BytesExtend,BytesDecact两个方法,实现ProtocalLinker通用的协议扩展,把协议内核扩展为具体协议。
    • 扩展ProtocalLinker,注意ProtocalLinker有两个跟通讯方式挂钩的ComProtocalLinker和TcpProtocalLinker,根据协议的通讯方式应从这两个类继承。因为具体协议中已经包含了它的通讯方式,所以如果你想实现自己的通讯方式,请同时实现它的ProtocalLinker然后继承这个类。
    • 实现ProtocalLinker的CheckRight函数,这个函数检查通讯返回包是否正确。

Home

Clone this wiki locally