protected void OnRawLineReceived(string line) { RawLineEventArgs e = new RawLineEventArgs(line); if (RawLineReceived != null) { RawLineReceived.Invoke(this, e); } }
private void ThreadReaderProc() { try { while (true) { int b = _port.ReadByte(); if (b != -1) { RawByteReceived?.Invoke(this, (byte)b); if (b == 0x0d) { _0dRecv = true; } else if (b == 0x0a) { if (_0dRecv) { // строка var s = GetStringFromBuffer(); RawLineReceived?.Invoke(this, s); LineReceived?.Invoke(this, new LineReceivedEventArgs() { Line = s, Type = LineReceivedEventArgs.LineType.General }); _0dRecv = false; _buffer.Clear(); } } else { _buffer.Add((byte)b); if (_buffer.Count == 2 && _buffer[0] == 0x3e && _buffer[1] == 0x20) { // приглашение > LineReceived?.Invoke(this, new LineReceivedEventArgs() { Line = "> ", Type = LineReceivedEventArgs.LineType.Ask }); _0dRecv = false; _buffer.Clear(); } else if (_buffer.Count == 3 && _buffer[0] == 0x3e && _buffer[1] == 0x3e && _buffer[2] == 0x20) { // приглашение >> LineReceived?.Invoke(this, new LineReceivedEventArgs() { Line = ">> ", Type = LineReceivedEventArgs.LineType.DoubleAsk }); _0dRecv = false; _buffer.Clear(); } } } } } catch //(Exception ex) { //... } finally { try { _port.Dispose(); } catch { } } }