예제 #1
0
 protected void OnParesError(EosParserError error)
 {
     EosParserErrorEventArgs e = new EosParserErrorEventArgs(error);
     EosParserErrorEventHandler handler = ParseError;
     if (handler != null)
     {
         handler(this, e);
     }
 }
예제 #2
0
        private void Parser_ParseError(object sender, EosParserErrorEventArgs e)
        {
            lock (this)
            {
                if (_masterState == BusMasterState.CLEARINGSCAN)
                {
                    _masterState = BusMasterState.IDLE;
                    Rescan();
                }
                else if (_masterState == BusMasterState.CLEARINGRESET)
                {
                    _masterState = BusMasterState.IDLE;
                    Reset();
                }
                else if (_masterState == BusMasterState.WAITINGRESPONSE)
                {
                    _masterState = BusMasterState.IDLE;
                    _busTimer.Stop();
                    switch (State)
                    {
                    case EosBusState.SCANNING:
                        NextScan();
                        break;

                    case EosBusState.POLLING:
                        //Console.WriteLine("Polling Parse Error");
                        _devices[_pollId].PollingErrors++;
                        break;

                    case EosBusState.WAITING_RESPONSE:
                        OnResponseReceived((EosPacket)null);
                        break;
                    }
                }
                else
                {
                    // Received errored packet when we are not waiting on one.
                    _stats.Collisions++;
                }
            }
        }