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

30 lines
856 B
C#
Raw Normal View History

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));
}
}