Files
softbus_daemon/plugins/protocols/modbusrtu/README.md
2026-04-07 14:20:04 +08:00

38 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Modbus RTU 协议模块(`modbusrtu`
本目录实现 **Modbus RTU** 的成帧、编解码与解析插件,供守护进程静态编译与 `plugins/protocols/modbus_rtu` 动态库(`.so`)共用同一套源码。
## 目录结构
| 子目录 | 职责 |
|--------|------|
| `types/` | PDU 数据模型:`ModbusRtuPdu` 及各类请求/响应结构体,供编解码与 `ProtocolEnvelope` 使用。 |
| `codec/` | ADU 与 `ModbusRtuPdu` 的互转:`decodeModbusRtu` / `encodeModbusRtu`(依赖 `types``framer` 中的 CRC 等工具函数)。 |
| `framer/` | 字节流成帧:`ModbusRtuFraming`长度预测、CRC`ModbusRtuFramerPlugin`Stage1 插件会话)。 |
| `parser/` | Stage2 协议插件:`ModbusRtuProtocolPlugin`,将完整帧解析为 `ProtocolEnvelope` / 兼容 JSON。 |
## 依赖方向(建议遵守)
```
types (无本模块内依赖)
codec、framer (可依赖 typescodec 使用 framer 中的 crc16/crcOk
parser (依赖 codec、types不反向依赖 framer 插件类)
```
成帧与解析在流水线中分属不同阶段;**解析侧只应处理 `CompleteFrame`**,与 `PipelineContext::frameKind` 约定一致。
## 与动态库的关系
- 动态库入口:`plugins/protocols/modbus_rtu/plugin_stub.cpp`,导出 `softbus_create_protocol_plugin` / `softbus_create_framer_plugin` 等符号。
- 主工程 `CMakeLists.txt` 同样列出本目录下源文件,用于无 `.so` 时的内置链接;路径与 include 均以 `plugins/protocols/modbusrtu/...` 为准。
## 配置提示
`daemon_config.json``plugins.framers` 中配置 `libmodbus_rtu.so` 路径即可加载成帧插件;解析插件加载方式与 `PluginHost` / 工程内注册逻辑一致。
## 扩展其它协议时的参考
新增协议(如 Modbus TCP、CANopen建议沿用类似分层**types → codec/framer → parser**,并在各自 `plugin_stub` 中导出统一 ABI 工厂函数,由 `PluginHost` 注册到 `PluginManager`