2023-02-16 12:57:06 +00:00
|
|
|
using System.Collections;
|
2023-03-07 10:20:32 +00:00
|
|
|
using InnovEnergy.Lib.Utils;
|
2023-02-16 12:57:06 +00:00
|
|
|
|
|
|
|
namespace InnovEnergy.Lib.Protocols.Modbus.Conversions;
|
|
|
|
|
|
|
|
public partial class ModbusRegisters
|
|
|
|
{
|
|
|
|
public Boolean GetBit(UInt16 index, UInt16 bitIndex)
|
|
|
|
{
|
|
|
|
var offset = index - StartRegister;
|
|
|
|
|
2023-03-07 10:20:32 +00:00
|
|
|
var byteArray = Registers[offset].Apply(BitConverter.GetBytes).Reverse().ToArray();
|
2023-02-16 12:57:06 +00:00
|
|
|
var bitArray = new BitArray(byteArray);
|
|
|
|
|
|
|
|
return bitArray.Get(bitIndex);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SetBit(UInt16 index, UInt16 bitIndex, Boolean value)
|
|
|
|
{
|
|
|
|
var offset = index - StartRegister;
|
|
|
|
|
2023-03-07 10:20:32 +00:00
|
|
|
var byteArray = Registers[offset].Apply(BitConverter.GetBytes).Reverse().ToArray();
|
2023-02-16 12:57:06 +00:00
|
|
|
var bitArray = new BitArray(byteArray);
|
|
|
|
|
|
|
|
bitArray.Set(bitIndex, value);
|
|
|
|
bitArray.CopyTo(byteArray, 0);
|
|
|
|
|
|
|
|
SetUInt16(index, BitConverter.ToUInt16(byteArray));
|
|
|
|
}
|
|
|
|
}
|