/// <summary> /// Build data frame and transmit it to bus /// </summary> /// <param name="msg">Message payload to be transmitted</param> /// <returns>true if success, false if error</returns> public bool Send(byte[] msg) { // Allocate temporary buffer for payload + LRC byte[] tmpData = new byte[msg.Length + 1]; // Copy message to temporary buffer Array.Copy(msg, tmpData, msg.Length); // Calculate LRC and store it to temporary buffer tmpData[tmpData.Length - 1] = msg.CalculateLrc(msg.Length); // Calculate transmitted byte buffer size and allocate it int txLen = (tmpData.Length * 2) + 3; byte[] txData = new byte[txLen]; // Convert payload and LRC to ASCII format tmpData = ConvertDataToAscii(tmpData); // Add start character to transmit buffer txData[0] = Convert.ToByte(':'); // Copy data in ASCII format to transmit buffer Array.Copy(tmpData, 0, txData, 1, tmpData.Length); // Add trailing CRLF sequence to transmit buffer txData[txData.Length - 2] = Convert.ToByte('\r'); txData[txData.Length - 1] = Convert.ToByte('\n'); // Send finished data frame Debug.WriteLine("LINK - TX_MSG: " + BitConverter.ToString(msg)); return(PHY.Transmit(txData)); }
/// <summary> /// Build data frame and transmit it to bus /// </summary> /// <param name="msg">Message payload to be transmitted</param> /// <returns>true if success, false if error</returns> public bool Send(byte[] msg) { int txCrc = msg.CalculateCrc(); byte[] txData = new byte[msg.Length + 2]; Array.Copy(msg, 0, txData, 0, msg.Length); txData[txData.Length - 1] = Convert.ToByte((txCrc & 0xff00) >> 8); txData[txData.Length - 2] = Convert.ToByte(txCrc & 0x00ff); Debug.WriteLine("LINK - TX_MSG: " + BitConverter.ToString(msg)); return(PHY.Transmit(txData)); }