Innovenergy_trunk/csharp/Lib/Protocols/Modbus/Conversions/ModbusRegisters.Bytes.cs

23 lines
576 B
C#

using InnovEnergy.Lib.Utils;
namespace InnovEnergy.Lib.Protocols.Modbus.Conversions;
public partial class ModbusRegisters
{
// TODO: SetBytes
public Byte[] GetBytes(UInt16 index, UInt16 nBytes)
{
var nRegisters = (UInt16)Math.Ceiling(nBytes / 2.0);
return Enumerable
.Range(StartRegister + index, nRegisters)
.Select(i => (UInt16)i)
.Select(GetUInt16)
.SelectMany(r => BitConverter.GetBytes(r).Reverse()) // Big Endian
.Take(nBytes)
.ToArray(nBytes);
}
}