Beispiel #1
0
        public static void WriteRegistersFunc(byte slaveAddress, ushort startAddress, byte[][] data, IModbusMaster master, uint wordSize, Func <byte[], byte[]> endianConverter, bool wordSwap = false)
        {
            var wordByteArraySize = RegisterFunctions.GetRegisterMultiplier(wordSize) * 2;

            if (data.Any(e => e.Length != wordByteArraySize))
            {
                throw new ArgumentException("All data values must be of the correct word length.");
            }
            var dataCorrectEndian = data.Select(endianConverter).ToArray();
            var registerValues    = RegisterFunctions.ConvertValuesToRegisters(dataCorrectEndian);

            if (wordSwap)
            {
                Array.Reverse(registerValues);
            }
            master.WriteMultipleRegisters(slaveAddress, startAddress, registerValues);
        }