注意:在项目工程里面–管理NuGet程序包–搜索你需要的包(nmodbus4)–安装即可。
// 私有串口实例 private SerialPort serialPort = new SerialPort(); // 设定串口参数 serialPort.PortName = cbxPort.SelectedItem.ToString(); serialPort.BaudRate = 9600; serialPort.Parity = Parity.None; serialPort.DataBits = 8; serialPort.StopBits = Parity.None; // 创建ModbusRTU主站实例 master = ModbusSerialMaster.CreateRtu(serialPort); // 打开串口 if (!serialPort.IsOpen) serialPort.Open(); // long 读取格式为 ABCD ushort[] buff = master.ReadHoldingRegisters(1, 0, 2); List result = new List(); result.AddRange(BitConverter.GetBytes(buff[1])); result.AddRange(BitConverter.GetBytes(buff[0])); long value = BitConverter.ToInt32(result.ToArray(), 0); double cumulative_weight = Math.Round(Convert.ToDouble(value) / 1000, 2); tbValueFloat.Text = cumulative_weight.ToString(); //关闭串口 serialPort.Close();
正常情况下CDAB读取设备的寄存器数据时,无需处理。
部分情况下ABCD读取设备的寄存器数据时,需要调整顺序。