-
Notifications
You must be signed in to change notification settings - Fork 136
3.2 根据协议报文,扩展Protocal和ProtocalLinker
parallelbgls edited this page Jun 29, 2017
·
5 revisions
扩展传输层的步骤如下:
-
扩展IProtocalFormatting或ProtocalUnit,实现协议的内核
- 继承IInputStruct,实现协议的输入类。
- 继承IOutputStruct,实现协议的输出类。
- 继承ProtocalUnit,实现输入类转字节数组函数Format和字节数组转输出类函数Unformat。
- 如果继承ProtocalUnit的同时添加SpecialProtocalUnitAttribute属性([SpecialProtocalUnit]),则该协议不会执行ProtocalLinker中的BytesExtend和BytesDecact函数。
- 请注意,您很有可能需要继承多个ProtocalUnit,实现通讯中的不同协议。
-
扩展IProtocal或BaseProtocal,实现协议的托管类
- 你应该为每种通讯大类都扩展一次Protocal,并指定它的ProtocalLinker,比如ModbusRtuProtocal装载了ModbusRtuProtocalLinker而ModbusTcpProtocal装载了ModbusTcpProtocalLinker。
-
扩展ProtocalLinker,实现具体的协议
- 要根据ProtocalLinker的名称命名一个ProtocalLinkerBytesExtend,同时继承IProtocalLinkerBytesExtend,实现BytesExtend,BytesDecact两个方法,实现ProtocalLinker通用的协议扩展,把协议内核扩展为具体协议。
- 扩展ProtocalLinker,注意ProtocalLinker有两个跟通讯方式挂钩的ComProtocalLinker和TcpProtocalLinker,根据协议的通讯方式应从这两个类继承。因为具体协议中已经包含了它的通讯方式,所以如果你想实现自己的通讯方式,请同时实现它的ProtocalLinker然后继承这个类。
- 实现ProtocalLinker的CheckRight函数,这个函数检查通讯返回包是否正确。
Modbus.Net Hangzhou Delian Science Technology Co.,Ltd. © 2023
-
2 Specification of Modbus.Net main framework
- 2.1 Modbus.Net Architecture
- 2.2 Transmission Control Layer Controller
- 2.3 Transmission Link Layer Connector
- 2.4 Concrete Protocol Layer ProtocolLinker
- 2.5 Abstract Protocol Layer Protocol
- 2.6 Protocol Presentation Layer Utility
- 2.7 Device Application Layer Machine
- 2.8 Task Application Layer MachineJob
-
3 Using Modbus.Net to implement a protocol
- 3.1 Global Tools
- 3.2 Extends Protocol and ProtocolUnit according to protocol specification
- 3.3 Extends Connector to create a link method
- 3.4 Extends Machine and Utility, creating two apis
- 3.5 Extends API methods to Machine and Utility
- 3.6 Extends Formater, Translator and Combiner, Creating Encoding,Decoding,Combining methods for address
- 3.7 Extends Controller, to control message