public static void PushFlash(string msg) { lock (m_timer) { if (!IsDisposed) { m_timer.Restart(); m_msgVisible = true; MessageReady?.Invoke(msg); } } }
public static IDisposable PushMessage(string msg) { lock (m_timer) { if (!IsDisposed) { if (m_msgVisible) { CloseMessage(); } m_msgVisible = true; MessageReady?.Invoke(msg); } return(new AutoReleaser(CloseMessage)); } }
/// <summary> /// Raise the MessageReady event /// </summary> protected void SetMessage(string message) { try { if (Context != null) { Context.Post(o => MessageReady?.Invoke(this, message), null); } else { MessageReady?.Invoke(this, message); } } catch (Exception) { // This can fail, and at this point we're in a really hard state to effectively report // what just happened, so we are going to (reluctantly) swallow this. } }
private void FireMessageReady(Message message) { MessageReady?.Invoke(this, message); }
protected virtual void OnMessageReady(string message) { MessageReady?.Invoke(this, message); //_mainForm.Invoke(new DoUpdateMessage(MessageReady?.Invoke)); }
public void Parse(byte[] array) { foreach (var ch in array) { try { switch (_parserState) { case ParserStates.ExpectingSOH: _currentMessage = new NetworkMessage(); _payloadIndex = 0; _parserState = ParserStates.ExpectingPIN1; break; case ParserStates.ExpectingPIN1: _currentMessage.CheckSum += ch; _currentMessage.Pin = ch; _parserState = ParserStates.ExpectingPIN2; break; case ParserStates.ExpectingPIN2: _currentMessage.CheckSum += ch; _currentMessage.Pin |= (short)(ch << 8); _parserState = ParserStates.ExpectingSN1; break; case ParserStates.ExpectingSN1: _currentMessage.CheckSum += ch; _currentMessage.SerialNumber = ch; _parserState = ParserStates.ExpectingSN2; break; case ParserStates.ExpectingSN2: _currentMessage.CheckSum += ch; _currentMessage.SerialNumber |= (short)(ch << 8); _parserState = ParserStates.ExpectingLEN1; break; case ParserStates.ExpectingLEN1: _currentMessage.CheckSum += ch; _currentMessage.PayloadLength = ch; _parserState = ParserStates.ExpectingLEN2; break; case ParserStates.ExpectingLEN2: _currentMessage.CheckSum += ch; _currentMessage.PayloadLength |= (short)(ch << 8); _parserState = ParserStates.ExpectingPayloadFormat; break; case ParserStates.ExpectingPayloadFormat: if (ch < (byte)PayloadFormats.JSON || ch > (byte)PayloadFormats.None) /* If Payload Formats are added, make sure you adjust here */ { _currentMessage = null; _parserState = ParserStates.ExpectingSOH; } else { _currentMessage.CheckSum += ch; _currentMessage.PayloadFormat = (PayloadFormats)ch; _parserState = ParserStates.ExpectingMessageTypeCode; } break; case ParserStates.ExpectingMessageTypeCode: _currentMessage.CheckSum += ch; _currentMessage.MessageTypeCode = ch; _parserState = ParserStates.ExpectingSTX; break; case ParserStates.ExpectingSTX: if (ch != STX) { _currentMessage = null; _parserState = ParserStates.ExpectingSOH; } else { _currentMessage.CheckSum += ch; if (_currentMessage.PayloadLength > 0) { _payloadIndex = 0; _currentMessage.Payload = new byte[_currentMessage.PayloadLength]; _parserState = ParserStates.ReadingMessage; } else { _parserState = ParserStates.ExpectingETX; } } break; case ParserStates.ReadingMessage: _currentMessage.CheckSum += ch; _currentMessage.Payload[_payloadIndex++] = ch; if (_payloadIndex == _currentMessage.PayloadLength) { _parserState = ParserStates.ExpectingETX; } break; case ParserStates.ExpectingETX: _currentMessage.CheckSum += ch; if (ch != ETX) { _currentMessage = null; _parserState = ParserStates.ExpectingSOH; } else { _parserState = ParserStates.ExpectingCS; break; } break; case ParserStates.ExpectingCS: var checkSum = ch; if (checkSum != _currentMessage.CheckSum) { _currentMessage = null; _parserState = ParserStates.ExpectingSOH; } else { _parserState = ParserStates.ExpectingEOT; } break; case ParserStates.ExpectingEOT: _parserState = ParserStates.ExpectingSOH; MessageReady?.Invoke(this, _currentMessage); _currentMessage = null; break; } } catch (Exception) { _parserState = ParserStates.ExpectingSOH; _currentMessage = null; } } }