|
|
@ -11,9 +11,6 @@ public static class ModbusDecoder
|
|
|
|
|
|
|
|
|
|
|
|
public static T Decode<T>(byte[] bytes, T t) where T : class, new()
|
|
|
|
public static T Decode<T>(byte[] bytes, T t) where T : class, new()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<object?> fields = t.GetType().GetProperties()
|
|
|
|
List<object?> fields = t.GetType().GetProperties()
|
|
|
|
.Where(it => it.PropertyType.GetGenericTypeDefinition() == typeof(ModbusProperty<>))
|
|
|
|
.Where(it => it.PropertyType.GetGenericTypeDefinition() == typeof(ModbusProperty<>))
|
|
|
|
.Select(p => p.GetValue(t)).ToList();
|
|
|
|
.Select(p => p.GetValue(t)).ToList();
|
|
|
@ -77,46 +74,41 @@ public static class ModbusDecoder
|
|
|
|
case ModbusProperty<ushort> ushortProperty:
|
|
|
|
case ModbusProperty<ushort> ushortProperty:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SetPropertyValue(startRegisterNo, ushortProperty, decodeUseBytes);
|
|
|
|
SetPropertyValue(startRegisterNo, ushortProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(ushortProperty.RegisterNo, ushortProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(ushortProperty.RegisterNo, ushortProperty, decodeUseBytes);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case ModbusProperty<int> intProperty:
|
|
|
|
case ModbusProperty<int> intProperty:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SetPropertyValue(startRegisterNo, intProperty, decodeUseBytes);
|
|
|
|
SetPropertyValue(startRegisterNo, intProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(intProperty.RegisterNo, intProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(intProperty.RegisterNo, intProperty, decodeUseBytes);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case ModbusProperty<uint> uintProperty:
|
|
|
|
case ModbusProperty<uint> uintProperty:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SetPropertyValue(startRegisterNo, uintProperty, decodeUseBytes);
|
|
|
|
SetPropertyValue(startRegisterNo, uintProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(uintProperty.RegisterNo, uintProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(uintProperty.RegisterNo, uintProperty, decodeUseBytes);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case ModbusProperty<float> floatProperty:
|
|
|
|
case ModbusProperty<float> floatProperty:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SetPropertyValue(startRegisterNo, floatProperty, decodeUseBytes);
|
|
|
|
SetPropertyValue(startRegisterNo, floatProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(floatProperty.RegisterNo, floatProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(floatProperty.RegisterNo, floatProperty, decodeUseBytes);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case ModbusProperty<double> doubleProperty:
|
|
|
|
case ModbusProperty<double> doubleProperty:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SetPropertyValue(startRegisterNo, doubleProperty, decodeUseBytes);
|
|
|
|
SetPropertyValue(startRegisterNo, doubleProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(doubleProperty.RegisterNo, doubleProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(doubleProperty.RegisterNo, doubleProperty, decodeUseBytes);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
case ModbusProperty<string> stringProperty:
|
|
|
|
case ModbusProperty<string> stringProperty:
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SetPropertyValue(startRegisterNo, stringProperty, decodeUseBytes);
|
|
|
|
SetPropertyValue(startRegisterNo, stringProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(stringProperty.RegisterNo, stringProperty, decodeUseBytes);
|
|
|
|
// SetPropertyValue(stringProperty.RegisterNo, stringProperty, decodeUseBytes);
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return t;
|
|
|
|
return t;
|
|
|
|
}
|
|
|
|
}
|
|
|
|