private void ResetState() { _headerCount = 0; _state = SerbClientState.WaitHeader; _command = Command.Unknown; _param = 0; }
private void ProcessByte(byte data) { switch (_state) { case SerbClientState.WaitHeader: if (data == HeaderBytes[_headerCount]) { _headerCount++; if (_headerCount >= HeaderBytes.Length) { _state = SerbClientState.WaitCommand; } } else { _errorLed.TurnOn(200); ResetState(); } break; case SerbClientState.WaitCommand: _command = (char)data; _state = SerbClientState.WaitParam; break; case SerbClientState.WaitParam: _param = data; _statusLed.TurnOn(200); InterpretCommand(); ResetState(); break; default: _errorLed.TurnOn(200); ResetState(); break; } }