62 lines
1.7 KiB
C#
62 lines
1.7 KiB
C#
![]() |
namespace Modbus.Message
|
|||
|
{
|
|||
|
using System;
|
|||
|
using System.Net;
|
|||
|
|
|||
|
public class WriteMultipleCoilsResponse : AbstractModbusMessage, IModbusMessage
|
|||
|
{
|
|||
|
public WriteMultipleCoilsResponse()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public WriteMultipleCoilsResponse(byte slaveAddress, ushort startAddress, ushort numberOfPoints)
|
|||
|
: base(slaveAddress, Modbus.WriteMultipleCoils)
|
|||
|
{
|
|||
|
StartAddress = startAddress;
|
|||
|
NumberOfPoints = numberOfPoints;
|
|||
|
}
|
|||
|
|
|||
|
public ushort NumberOfPoints
|
|||
|
{
|
|||
|
get
|
|||
|
{
|
|||
|
return MessageImpl.NumberOfPoints.Value;
|
|||
|
}
|
|||
|
|
|||
|
set
|
|||
|
{
|
|||
|
if (value > Modbus.MaximumDiscreteRequestResponseSize)
|
|||
|
{
|
|||
|
string msg = $"Maximum amount of data {Modbus.MaximumDiscreteRequestResponseSize} coils.";
|
|||
|
throw new ArgumentOutOfRangeException("NumberOfPoints", msg);
|
|||
|
}
|
|||
|
|
|||
|
MessageImpl.NumberOfPoints = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public ushort StartAddress
|
|||
|
{
|
|||
|
get { return MessageImpl.StartAddress.Value; }
|
|||
|
set { MessageImpl.StartAddress = value; }
|
|||
|
}
|
|||
|
|
|||
|
public override int MinimumFrameSize
|
|||
|
{
|
|||
|
get { return 6; }
|
|||
|
}
|
|||
|
|
|||
|
public override string ToString()
|
|||
|
{
|
|||
|
string msg = $"Wrote {NumberOfPoints} coils starting at address {StartAddress}.";
|
|||
|
return msg;
|
|||
|
}
|
|||
|
|
|||
|
protected override void InitializeUnique(byte[] frame)
|
|||
|
{
|
|||
|
StartAddress = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(frame, 2));
|
|||
|
NumberOfPoints = (ushort)IPAddress.NetworkToHostOrder(BitConverter.ToInt16(frame, 4));
|
|||
|
}
|
|||
|
}
|
|||
|
}
|