/// <summary> /// Handler for raw data coming from port /// </summary> void Port_TextReceived(object sender, GenericCommMethodReceiveTextArgs args) { var handler = LineReceived; if (handler != null) { if (Debug.Level >= 2) { var output = Regex.Replace(args.Text, @"\p{Cc}", a => string.Format("[{0:X2}]", (byte)a.Value[0])); Debug.Console(2, Port, "RX: '{0}", output); } ReceiveBuffer.Append(args.Text); var str = ReceiveBuffer.ToString(); var lines = str.Split(Delimiter); if (lines.Length > 0) { for (int i = 0; i < lines.Length - 1; i++) { string strToSend = null; if (IncludeDelimiter) { strToSend = lines[i] + Delimiter; } else { strToSend = lines[i]; } handler(this, new GenericCommMethodReceiveTextArgs(strToSend)); } ReceiveBuffer = new StringBuilder(lines[lines.Length - 1]); } } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="args"></param> void Port_TextReceivedStringDelimiter(object sender, GenericCommMethodReceiveTextArgs args) { var handler = LineReceived; if (handler != null) { // Receive buffer should either be empty or not contain the delimiter // If the line does not have a delimiter, append the if (Debug.Level >= 2) { var output = Regex.Replace(args.Text, @"\p{Cc}", a => string.Format("[{0:X2}]", (byte)a.Value[0])); Debug.Console(2, Port, "RX: '{0}'", output); } ReceiveBuffer.Append(args.Text); var str = ReceiveBuffer.ToString(); // Case: Receiving DEVICE get version\x0d\0x0a+OK "value":"1234"\x0d\x0a // RX: DEV // Split: (1) "DEV" // RX: I // Split: (1) "DEVI" // RX: CE get version // Split: (1) "DEVICE get version" // RX: \x0d\x0a+OK "value":"1234"\x0d\x0a // Split: (2) DEVICE get version, +OK "value":"1234" var lines = Regex.Split(str, StringDelimiter); if (lines.Length > 1) { for (int i = 0; i < lines.Length - 1; i++) { string strToSend = null; if (IncludeDelimiter) { strToSend = lines[i] + StringDelimiter; } else { strToSend = lines[i]; } handler(this, new GenericCommMethodReceiveTextArgs(strToSend)); } ReceiveBuffer = new StringBuilder(lines[lines.Length - 1]); } } }