public void SendMessage(ModbusMessage message, bool isFromMaster = false, bool recalcChecksum = true) { message.isFromMaster = isFromMaster; if (recalcChecksum) { message.RecalculateChecksum(); } HandleMessage(message); }
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); }