Files
DevToolsAvalonia/常用工具集/Utility/Network/Modbus/SharpModbus/ModbusTCPProtocol.cs
2025-08-26 08:37:44 +08:00

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);
}
}
}