85 lines
2.0 KiB
C#
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;
|
|
}
|
|
|
|
|
|
}
|
|
}
|