修复 s7 通过.n的方式读取字节中布尔量时,如果变量地址带有分号时出现的分包错误

This commit is contained in:
Kimdiego2098
2024-03-25 13:28:58 +08:00
parent e935fb9621
commit 30c0ba93b9
3 changed files with 4 additions and 3 deletions

View File

@@ -37,7 +37,7 @@ public class PackHelper
IThingsGatewayBitConverter transformParameter = ByteTransUtil.GetTransByAddress(ref address, byteConverter);
item.ThingsGatewayBitConverter = transformParameter;
//item.RegisterAddress = address;
item.Index = device.GetBitOffset(item.RegisterAddress);
item.Index = device.GetBitOffset(address);
}
var deviceVariableRunTimeGroups = deviceVariables.GroupBy(it => it.IntervalTime ?? defaultIntervalTime);
foreach (var group in deviceVariableRunTimeGroups)

View File

@@ -33,7 +33,7 @@ internal static class PackHelper
IThingsGatewayBitConverter transformParameter = ByteTransUtil.GetTransByAddress(ref address, byteConverter);
item.ThingsGatewayBitConverter = transformParameter;
//item.Address = address;//需要使用过滤后的地址
item.Index = device.GetBitOffset(item.RegisterAddress);
item.Index = device.GetBitOffset(address);
}
//按读取间隔分组
var tags = deviceVariables.GroupBy(it => it.IntervalTime ?? defaultIntervalTime);

View File

@@ -90,7 +90,8 @@ public partial class SiemensS7Master : ProtocolBase
{
if (address.IndexOf('.') > 0)
{
string[] addressSplits = address.SplitStringByDelimiter();
var addressSplits1 = address.SplitStringBySemicolon().Where(a => !a.Contains("=")).FirstOrDefault();
string[] addressSplits = addressSplits1.SplitStringByDelimiter();
try
{
int bitIndex = 0;