30 lines
886 B
C#
30 lines
886 B
C#
using System;
|
|
|
|
namespace SharpModbus
|
|
{
|
|
public class ModbusTCPProtocol : IModbusProtocol
|
|
{
|
|
private ushort transactionId = 0;
|
|
|
|
public ushort TransactionId
|
|
{
|
|
get { return transactionId; }
|
|
set { transactionId = value; }
|
|
}
|
|
|
|
public IModbusWrapper Wrap(IModbusCommand wrapped)
|
|
{
|
|
return new ModbusTCPWrapper(wrapped, transactionId++);
|
|
}
|
|
|
|
public IModbusWrapper Parse(byte[] request, int offset)
|
|
{
|
|
var wrapped = ModbusParser.Parse(request, offset + 6);
|
|
Tools.AssertEqual(wrapped.RequestLength, ModbusUtils.GetUShort(request, offset + 4),
|
|
"RequestLength mismatch got {0} expected {1}");
|
|
var transaction = ModbusUtils.GetUShort(request, offset);
|
|
return new ModbusTCPWrapper(wrapped, transaction);
|
|
}
|
|
}
|
|
}
|