Innovenergy_trunk/csharp/lib/Protocols/Modbus/Conversions/ModbusRegisters.Single.cs

22 lines
708 B
C#

using InnovEnergy.Lib.Utils;
namespace InnovEnergy.Lib.Protocols.Modbus.Conversions;
public partial class ModbusRegisters
{
public void SetSingle(UInt16 index, Single value)
{
var bytearray = BitConverter.GetBytes(value).Reverse().ToArray();
var value32 = BitConverter.ToUInt32(bytearray);
Registers[index - StartRegister] = (UInt16)(value32 >> 16);
Registers[index - StartRegister + 1] = (UInt16)(value32 & 0xFFFF);
}
public Single GetSingle(UInt16 index)
{
var i = index - StartRegister;
var byteArray = BitConverter.GetBytes(Registers[i] << 16 | Registers[i + 1]).ToArray();
return BitConverter.ToSingle(byteArray);
}
}