歡迎光臨
每天分享高質量文章

DotNetty 實現 Modbus TCP 系列 (二) ModbusFunction 類圖及繼承舉例

DotNetty 實現 Modbus TCP 系列 (一) 報文類

ModbusFunction 類圖如下:

如前文所述,所有請求/相應的 PDU 均繼承自 ModbusFunction,其子類傳入對應的 Function Code 並實現三個方法:

  • CalculateLength:Data 部分的長度(該方法也可以為屬性,但屬性沒有強制性,怕漏掉故改為抽象方法)
  • Decode:從緩衝區解析 Data
  • Encode:在傳輸前對 Data 編碼

實現舉例

每個 Function Code 均對應 ModbusFunction 的兩個子類:請求類和響應類,以 0x03(讀取保持暫存器值)為例:

請求類

請求報文 Data 說明:

響應類

響應報文 Data 說明:

其中 ModbusCommand 為 Function Code 的列舉:

文中為方便理解請求類和響應類均直接繼承 ModbusFunction,實際開發中請求類和響應類均沒有直接繼承 ModbusFunction,而是根據其他 Function Code 的 Data 進行再次抽象後繼承。

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

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


.NET社群新聞,深度好文,歡迎訪問公眾號文章彙總 http://www.csharpkit.com






    閱讀原文

    贊(0)

    分享創造快樂