From 84e5be1659e0d153ad5dc35e979cc9499e1ba668 Mon Sep 17 00:00:00 2001 From: parallelbgls Date: Sat, 25 Feb 2017 10:12:28 +0800 Subject: [PATCH] 2017-02-25 update 1 Add BigEndianMsbValueHelper --- Modbus.Net/Modbus.Net/ValueHelper.cs | 30 ++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/Modbus.Net/Modbus.Net/ValueHelper.cs b/Modbus.Net/Modbus.Net/ValueHelper.cs index 50da935..ff1d67d 100644 --- a/Modbus.Net/Modbus.Net/ValueHelper.cs +++ b/Modbus.Net/Modbus.Net/ValueHelper.cs @@ -1010,4 +1010,34 @@ namespace Modbus.Net return data; } } + + public class BigEndianMsbValueHelper : BigEndianValueHelper + { + public override bool GetBit(byte[] number, ref int pos, ref int subPos) + { + if (subPos < 0 && subPos > 7) throw new IndexOutOfRangeException(); + var tspos = 7 - subPos; + var tpos = pos; + var bit = GetBit(number[pos], ref tpos, ref tspos); + subPos += 1; + if (subPos > 7) + { + pos++; + subPos = 0; + } + return bit; + } + + public override bool[] GetBits(byte[] data, ref int pos) + { + var t = base.GetBits(data, ref pos); + Array.Reverse(t); + return t; + } + + public override bool SetBit(byte[] number, int pos, int subPos, bool setBit) + { + return base.SetBit(number, pos, 7 - subPos, setBit); + } + } } \ No newline at end of file