private void DataReceivedEvent(object sender, SerialDataReceivedEventArgs e) { SerialPort tty = (SerialPort)sender; while (tty.IsOpen && tty.BytesToRead > 0) { char c = (char)tty.ReadByte(); //Console.WriteLine($"[RAW] {c}"); switch (c) { case '\r': // ignore windows line ending case '\n': break; case ':': // cmd start Buffer_RX.Reset(); break; case '#': // cmd end ProcessCommand?.Invoke(this, EventArgs.Empty); break; default: try { Buffer_RX.Enqueue(c); } catch {; } break; } } }
//======================================================================= Event entry points for unmanaged wrapper // ReSharper disable UnusedMember.Local private bool OnProcessCommand(UInt64 serverConnectionHandlerID, string command) { if (ProcessCommand != null) { var args = new ProcessCommandEventArgs(new ServerConnectionHandler(serverConnectionHandlerID), command); ProcessCommand.Invoke(args); return(args.Handled); } return(false); }