namespace RobotNet.Script;
///
/// Quản ký kết nối Modbus TCP tới 1 thiết bị.
///
public interface IModbusTcpClient : IAsyncDisposable, IDisposable
{
///
/// Trạng thái kết nối hiện tại với thiết bị Modbus TCP.
///
bool IsConnected { get; }
///
/// Đọc các đầu vào rời rạc (Discrete Inputs) từ thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
///
Task ReadDiscreteInputsAsync(UInt16 startingAddress, UInt16 quantity, CancellationToken cancellationToken = default);
///
/// Đọc các cuộn dây (Coils) từ thiết bị Modbus TCP.
///
///
///
///
///
Task ReadCoilsAsync(UInt16 startingAddress, UInt16 quantity, CancellationToken cancellationToken = default);
///
/// Đọc các thanh ghi giữ (Holding Registers) từ thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
///
Task ReadHoldingRegistersAsync(UInt16 startingAddress, UInt16 quantity, CancellationToken cancellationToken = default);
///
/// Đọc các thanh ghi đầu vào (Input Registers) từ thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
///
Task ReadInputRegistersAsync(UInt16 startingAddress, UInt16 quantity, CancellationToken cancellationToken = default);
///
/// Ghi viết một cuộn dây (Coil) đơn lẻ đến thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
Task WriteSingleCoilAsync(UInt16 startingAddress, bool value, CancellationToken cancellationToken = default);
///
/// Ghi viết một thanh ghi đơn lẻ đến thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
Task WriteSingleRegisterAsync(UInt16 startingAddress, UInt16 value, CancellationToken cancellationToken = default);
///
/// Ghi viết nhiều cuộn dây (Coils) đến thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
Task WriteMultipleCoilsAsync(UInt16 startingAddress, bool[] values, CancellationToken cancellationToken = default);
///
/// Ghi viết nhiều thanh ghi (Holding Registers) đến thiết bị Modbus TCP với hỗ trợ hủy bỏ.
///
///
///
///
Task WriteMultipleRegistersAsync(UInt16 startingAddress, UInt16[] values, CancellationToken cancellationToken = default);
///
/// Đọc và ghi viết nhiều thanh ghi (Holding Registers) trong một lần gọi với hỗ trợ hủy bỏ.
///
///
///
///
///
///
///
Task ReadWriteMultipleRegistersAsync(ushort readStart, ushort readCount, ushort writeStart, IReadOnlyList writeValues, CancellationToken cancellationToken = default);
}