Example #1
0
        public void SendMessage(ModbusMessage message, bool isFromMaster = false, bool recalcChecksum = true)
        {
            message.isFromMaster = isFromMaster;
            if (recalcChecksum)
            {
                message.RecalculateChecksum();
            }

            HandleMessage(message);
        }
Example #2
0
        public static ModbusMessage FromBinary(byte[] input, bool hasChecksum = true)
        {
            byte[] checksum = input.Skip(input.Length - 2).Take(2).ToArray();

            ModbusMessage message = new ModbusMessage
            {
                address  = input[0],
                function = input[1],
                data     = input.Skip(2).Take(input.Length - (hasChecksum ? 4 : 2)).ToArray()
            };

            if (hasChecksum)
            {
                message.checksum = (ushort)(checksum[0] << 8 + checksum[1]);
            }
            else
            {
                message.RecalculateChecksum();
            }

            return(message);
        }