using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO.Ports; namespace RS232Test { class Temp { private const char STX = (char)0x02; private const char ETX1 = (char)0x0D; private const char ETX2 = (char)0x0A; private string inStream = ""; private SerialPort serialPort = new SerialPort(); private void DataReceived(object sender, EventArgs e) { string data = serialPort.ReadExisting(); //printText.AppendText(data); char[] startCheckArr = data.ToCharArray(); if (startCheckArr.Length < 1) return; if (startCheckArr[0] == STX) inStream = data; string[] splited = inStream.Split(STX); foreach (string content in splited) { char[] endCheckArr = content.ToCharArray(); if (endCheckArr.Length < 1) continue; int etxIndex = Array.IndexOf(endCheckArr, ETX1); if (etxIndex < 1) continue; etxIndex = Array.IndexOf(endCheckArr, ETX2); if (etxIndex < 1) continue; string message = content.Substring(0, etxIndex); //DoWork(message); } } } }