mirror of
https://gitee.com/ThingsGateway/ThingsGateway.git
synced 2025-10-25 04:33:09 +08:00
modbus rtu 粘包优化
This commit is contained in:
@@ -14,44 +14,6 @@
|
||||
{
|
||||
return ModbusHelper.GetModbusRtuData(send, response, Crc16CheckEnable);
|
||||
}
|
||||
/// <summary>
|
||||
/// 解包获取实际数据包
|
||||
/// </summary>
|
||||
protected override FilterResult GetResponse(ByteBlock byteBlock, ModbusRtuMessage request, byte[] allBytes, byte[] bytes)
|
||||
{
|
||||
var unpackbytes = UnpackResponse(request.SendBytes, allBytes);
|
||||
request.Message = unpackbytes.Message;
|
||||
request.ResultCode = unpackbytes.ResultCode;
|
||||
if (unpackbytes.IsSuccess)
|
||||
{
|
||||
request.Content = unpackbytes.Content;
|
||||
request.ReceivedBytes = allBytes;
|
||||
return FilterResult.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
byteBlock.Pos = byteBlock.Len;
|
||||
request.ReceivedBytes = allBytes;
|
||||
request.Message = unpackbytes.Message;
|
||||
|
||||
if (!(allBytes[1] <= 0x10))
|
||||
{
|
||||
return FilterResult.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((allBytes.Length > allBytes[2] + 4))
|
||||
{
|
||||
return FilterResult.Success;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FilterResult.Cache;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
protected override ModbusRtuMessage GetInstance()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user