从.NET Framework迁移至.NET 6.0后nModbus4库出现C#编译错误
解决nModbus4中ModbusSerialMaster.CreateRtu参数不匹配的问题
问题根源
你安装的NSModbus4 4.0.2版本存在API定义错误,导致ModbusSerialMaster.CreateRtu方法错误要求传入TcpClient,而非文档指定的SerialPort对象。
解决方案
- 卸载错误的NuGet包:打开VS2022的NuGet包管理器,找到已安装的NSModbus4 (4.0.2),点击卸载并清理项目。
- 安装正确的包版本:
- 若坚持使用NSModbus系列,尝试安装3.x版本(该版本的
CreateRtu方法参数符合文档规范,接收SerialPort); - 或者切换到官方的nModbus包(注意包名无NS前缀),其API设计更稳定,
ModbusSerialMaster.CreateRtu默认接收SerialPort参数。
- 若坚持使用NSModbus系列,尝试安装3.x版本(该版本的
- 修正代码示例:
using System.IO.Ports; using Modbus.Serial; // 初始化串口 var serialPort = new SerialPort("COM3", 9600, Parity.None, 8, StopBits.One); serialPort.Open(); // 创建RTU主站实例 var rtuMaster = ModbusSerialMaster.CreateRtu(serialPort); - 核对版本与文档:确保你参考的库文档与实际安装的包版本一致,避免因版本迭代导致的API不兼容问题。
内容的提问来源于stack exchange,提问作者Phillip Burlison
相关产品推荐
相关产品推荐

