DotNetty 实现 Modbus TCP 系列 (一) 报文类

DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例

DotNetty 作为一个半成品,我们不需要关注细节的实现,只需要关注自己的业务即可,所以最主要的就是处理 Codecs 和 Handler。

所有的 Codecs 和 Handler 均直接或间接继承自 ChannelHandlerAdapter。为什么要分为 Codecs 和 Handler,个人理解是 Codecs 负责将消息解码为我们所需的对象或者将处理的结果编码,Handler 对解码得到的对象进行逻辑处理,达到职责分离的目的。

DotNetty 中可以注册多个 Codecs/Handler,入站消息按照注册的先后顺序执行,出站消息按照注册的先后逆序执行。

对于 Client 端:

  • 入站:ModbusDecoder --> ModbusResponseHandler

  • 出站:ModbusEncoder

对于 Server 端:

  • 入站:ModbusDecoder --> ModbusRequestHandler

  • 出站:ModbusEncoder

ModbusDecoder

ModbusDecoder 继承了 ByteToMessageDecoder。继承了 ByteToMessageDecoder 的类必须实现的唯一的抽象方法:Decode,该方法将 ByteBuffer 解析为 List,如果 List 不为空则会将该 List 传递给下一个 ChannelHandlerAdapter。

ModbusDecoder 同时为 Client 端和 Server 端使用,如果是 Server 端则将消息解析成请求类,反之如果是 Client 端则将消息解析成响应类。

ModbusResponseHandler

将接收到的响应信息加入 responses 供后续处理。

ModbusRequestHandler

responseService 为一个抽象类,用来自定义处理接收到的请求并返回结果,需要在实现 Server 端时继承并实现。

文中代码仅添加了 0x03 的方法)

ModbusEncoder

如果是 ModbusFrame 消息则 Flush,否则传递到下一个 ChannelHandlerAdapter。

开源地址:https://github.com/VictorBu/modbus-tcp

原文地址:https://www.cnblogs.com/victorbu/p/10370890.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler相关推荐

  1. DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例

    DotNetty 实现 Modbus TCP 系列 (一) 报文类 ModbusFunction 类图如下: 如前文所述,所有请求/相应的 PDU 均继承自 ModbusFunction,其子类传入对 ...

  2. DotNetty 实现 Modbus TCP 系列 (一) 报文类

    Modbus TCP/IP 报文 报文最大长度为 260 byte (ADU = 7 byte MBAP Header + 253 byte PDU) Length = Unit Identifier ...

  3. 西门子PLC-S7200smart--------------章节一modbus TCP通信

    文章目录 西门子PLC-S7200smart modbusTCP通信 一.西门子编程软件 1.西门子编程软件下载 2.软件启动和新建工程 二.modbus TCP协议 三.modbus TCP协议实践 ...

  4. 汇川AM系列 Modbus TCP通信设置

    一 .概述 单击网络组态中的PLC设备,会显示PLC内部所支持的主/从站的使能窗口,如下图所示,单击窗口中的复选框按钮来使能CPU所支持的主/从站功能,再从视图右侧的"网络设备列表" ...

  5. 威纶通屏幕(HMI)开发基本教程三:如何新建一个工程(modbus Tcp/Ip 工程)

    1.下载和安装EasyBuilder Pro,下载地址 :http://www.weinview.cn/ServiceSupport/Download/Index.aspx 2.打开Utility M ...

  6. 力控 串口服务器 虚拟串口,M4系列串口服务器与力控组态软件MODBUS TCP 协议通信--有人物联网.pdf...

    M4系列串口服务器与力控组态软件MODBUS TCP 协议通信--有人物联网.pdf M4 系列串口服务器与力控组态软件MODBUS TCP 协议通信 M4系列串口服务器与力控组态软件MODBUS T ...

  7. 三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法

    三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法 本次和大家分享三菱FX5U系列PLC与汇川IT6000系列触摸屏进行MODBUS TCP通信的具体方法,由于汇 ...

  8. modbus总线协议(三)modbus tcp

    一.介绍 modbus tcp是用于以太网的数据帧,比如和用网口和plc通信的时候就可以选择用modbus tcp. 二.modbus tcp协议详解 1.模式 和rtu一样,master和slave ...

  9. 通讯接口应用笔记3:使用W5500实现Modbus TCP服务器

      前面我们设计实现了W5500的驱动程序,也讲解了驱动的使用方式.在最近一次的项目应用中,正好有一个使用W5500实现TCP通讯的需求,所以我们就使用该驱动程序轻松实现.这一篇中我们就来说一说基于我 ...

最新文章

  1. 高级C语言教程-sscanf()函数使用方式
  2. Spring+Hibernate+c3p0连接池配置-连接无法释放的问题解决方案
  3. ref:下一个项目为什么要用 SLF4J
  4. 微型计算机应用领域及应用,自考“微型计算机应用基础”自考大纲(1)
  5. Ubuntu16.04下Mongodb官网安装部署步骤(图文详解)(博主推荐)
  6. Angularjs+Nodejs图片上传
  7. 论高校计算机信息管理能力的提升,论高校计算机信息管理能力的提升
  8. “升级 iOS 最新系统后,我弃用了 iPhone!”
  9. SpringCloud常见面试题总结二
  10. DCC2020:VVC帧内预测中基于梯度的CU划分早停止
  11. php模拟微信公众账号登陆,[微信公众号]php版模拟登录,向指定用户推送消息目前...
  12. int,long,double数值类的基本类型导致更新数据被清零
  13. 探讨顶级 Layer 1 智能合约区块链的代币经济学
  14. fcitx输入法代码分析总结
  15. pyecharts第十节、地图(三、省份地图)
  16. 万维全自动题库c语言,万维全自动考试系统操作手册.doc
  17. 微信小程序轮播图设计
  18. 计算机科学与集成系统做什么,集成电路设计与集成系统专业学什么 附学习科目和课程...
  19. java打印表格到打印机
  20. 【正点原子MP157连载】第二十五章 pinctrl和gpio子系统实验-摘自【正点原子】STM32MP1嵌入式Linux驱动开发指南V1.7

热门文章

  1. 原生sql实现restful接口调用
  2. centos7下别名(alias)的特殊用法
  3. Linux 内核中断内幕【转】
  4. 从零开始来看一下Java泛型的设计
  5. 安装Wamp时出现无法启动此程序,因为计算机中丢失MSVCR110.dll的解决方法
  6. Windows2008应用之配置客户端自动添加打印机
  7. 在 ASP.NET 中实现会话状态的基础
  8. ABP Framework:移除 EF Core Migrations 项目,统一数据上下文
  9. Monitor 监测CPU与内存
  10. 国产数据库占央采九成份额