示例#1
0
        /// <summary>
        /// Wird bei jedem Empfang von Daten durch COM aufgerufen!
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void InterpretGsmRecEvent(object sender, GsmEventArgs e)
        {
            if (e.Type != GsmEventArgs.Telegram.GsmRec) return;

            string input = e.Message;

            if (input.Contains("AT^SCID"))
            {
                if (input.Contains("ERROR"))
                {
                    OnRaiseGsmSystemEvent(new GsmEventArgs(11211523, GsmEventArgs.Telegram.GsmError, "Es wurde keine SIM-Karte im GSM-Modem erkannt."));
                }
            } 

            if (input.Contains("+CREG:"))
            {
                if (input.Contains("+CREG: 0,0"))
                {
                    OnRaiseGsmSystemEvent(new GsmEventArgs(11211540, GsmEventArgs.Telegram.GsmError, "Das GSM-Modem ist nicht im Mobilfunknetz angemeldet."));
                }
            }

            if (input.Contains("+CMGS:") || input.Contains("+CMSS:")) //COM-Antwort auf Gesendete SMS
            {
                ParseSmsTrackingIdFromSendResponse(input);
            }

            if (input.Contains("+CDSI:")) //Indikator neuen Statusreport empfangen
            {
                /*
                Meldung einer neu eingegangenen Nachricht von GSM-Modem

                Neuen Statusreport empfangen:
                bei AT+CNMI= [ <mode> ][,  <mt> ][,  <bm> ][,  2 ][,  <bfr> ]
                erwartete Antwort: +CDSI: <mem3>, <index>
                //*/
                ParseRecieveStatusreportIndicator(input);
            }

            if (input.Contains("+CMTI:")) //Indikator neuee SMS empfangen
            {
                /*
                Meldung einer neu eingegangenen Nachricht von GSM-Modem

                Neue SMS emfangen:
                bei AT+CNMI= [ <mode> ][,  1 ][,  <bm> ][,  <ds> ][,  <bfr> ]
                erwartete Antwort: +CMTI: <mem3>, <index>				
                //*/
                ParseRecieveNewSmsIndicator(input);
            }

            if (input.Contains("+CMGL")) //Inhalt der gelesenen Nachrichten
            {
                ParseStatusReport(input);
                ParseRecMessages(input);

                DebugTracking();

                foreach (int index in SmsToDelete) //lösche SMSen aus GSM-Speicher
                {
                    SmsDelete(index);
                }

                CheckForResend();
            }

        }
 /// <summary>
 /// Trigger für das Event 'System-Ereignis'
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnRaiseGsmSystemEvent(GsmEventArgs e)
 {
     RaiseGsmSystemEvent?.Invoke(this, e);
 }