2025-03-05 11:21:04 +08:00

85 lines
2.0 KiB
C#

using System;
using System.Collections.Generic;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO.Ports;
using Modbus.Device;
using HslCommunication.ModBus; // 引入 NModbus 库
namespace ControlcBoardsTest
{
internal class ModbusHelper
{
/// <summary>
/// 私有ModbusRTU主站字段
/// </summary>
public static ModbusRtu master=new ModbusRtu(2);
/// <summary>
/// 写入单个线圈
/// </summary>
public static void WriteSingleCoil(byte stationNo, ushort Adr, bool Value)
{
master.Write(Adr.ToString(), Value);
}
public static StopBits GetSelectedStopBits(double stopBits)
{
switch (stopBits)
{
case 1:
return StopBits.One;
case 1.5:
return StopBits.OnePointFive;
case 2:
return StopBits.Two;
default:
return StopBits.One;
}
}
/// <summary>
/// 写入单个寄存器
/// </summary>
public static void WriteSingleRegister(byte stationNo, ushort Value, ushort result)
{
master.Write(Value.ToString(), result);
}
/// <summary>
/// 读取输出线圈
/// </summary>
/// <returns></returns>
public static bool[] ReadCoils(byte stationNo, ushort Value, ushort result)
{
var data = master.ReadCoil(Value.ToString(), result);
return master.ReadCoil(Value.ToString(), result).Content;
}
/// <summary>
/// 读取保持型寄存器
/// </summary>
/// <returns></returns>
public static ushort[] ReadHoldingRegisters(byte stationNo, ushort Value, ushort result)
{
return master.ReadUInt16(Value.ToString(), result).Content;
}
}
}