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

30 lines
856 B
C#

using System.Collections;
using InnovEnergy.Lib.Utils;
namespace InnovEnergy.Lib.Protocols.Modbus.Conversions;
public partial class ModbusRegisters
{
public Boolean GetBit(UInt16 index, UInt16 bitIndex)
{
var offset = index - StartRegister;
var byteArray = Registers[offset].Apply(BitConverter.GetBytes).Reverse().ToArray();
var bitArray = new BitArray(byteArray);
return bitArray.Get(bitIndex);
}
public void SetBit(UInt16 index, UInt16 bitIndex, Boolean value)
{
var offset = index - StartRegister;
var byteArray = Registers[offset].Apply(BitConverter.GetBytes).Reverse().ToArray();
var bitArray = new BitArray(byteArray);
bitArray.Set(bitIndex, value);
bitArray.CopyTo(byteArray, 0);
SetUInt16(index, BitConverter.ToUInt16(byteArray));
}
}