コード例 #1
0
        public static void PushFlash(string msg)
        {
            lock (m_timer)
            {
                if (!IsDisposed)
                {
                    m_timer.Restart();
                    m_msgVisible = true;

                    MessageReady?.Invoke(msg);
                }
            }
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
ファイル: ViewModelBase.cs プロジェクト: jcoliz/Commonality
 /// <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.
     }
 }
コード例 #4
0
 private void FireMessageReady(Message message)
 {
     MessageReady?.Invoke(this, message);
 }
コード例 #5
0
 protected virtual void OnMessageReady(string message)
 {
     MessageReady?.Invoke(this, message);
     //_mainForm.Invoke(new DoUpdateMessage(MessageReady?.Invoke));
 }
コード例 #6
0
        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;
                }
            }
        }