using System;
using System.Threading.Tasks;
namespace Serein.Library.Network.Modbus
{
///
/// Modbus 客户端通用接口 (TCP/RTU 通用)
///
public interface IModbusClient : IDisposable
{
///
/// 报文发送时
///
Action OnTx { get; set; }
///
/// 接收到报文时
///
Action OnRx { get; set; }
///
/// 读取线圈状态 (0x01)
///
Task ReadCoils(ushort startAddress, ushort quantity);
///
/// 读取离散输入状态 (0x02)
///
Task ReadDiscreteInputs(ushort startAddress, ushort quantity);
///
/// 读取保持寄存器 (0x03)
///
Task ReadHoldingRegisters(ushort startAddress, ushort quantity);
///
/// 读取输入寄存器 (0x04)
///
Task ReadInputRegisters(ushort startAddress, ushort quantity);
///
/// 写单个线圈 (0x05)
///
Task WriteSingleCoil(ushort address, bool value);
///
/// 写单个寄存器 (0x06)
///
Task WriteSingleRegister(ushort address, ushort value);
///
/// 写多个线圈 (0x0F)
///
Task WriteMultipleCoils(ushort startAddress, bool[] values);
///
/// 写多个寄存器 (0x10)
///
Task WriteMultipleRegisters(ushort startAddress, ushort[] values);
}
}