internal void Write(IMODBUSMessage message) { var frameBytes = BuildMessageFrame(message); var frameLength = frameBytes.Length; var bufferedBytes = new byte[frameLength]; Buffer.BlockCopy(frameBytes, 0, bufferedBytes, 0, frameLength); Channel.Write(ref bufferedBytes, 0, frameLength); }
internal byte[] BuildMessageFrame(IMODBUSMessage message) { List <byte> messageBody = new List <byte>(); messageBody.AddRange(message.MessageFrame); using (Crc16 Hash = new Crc16()) { Hash.Initialize(); messageBody.AddRange(Hash.ComputeHash(message.MessageFrame, 0, messageBody.Count)); } return(messageBody.ToArray()); }