/// <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); }