private static void ParseNewSms(string[] header, string[] line) { //Dies ist vorher festgestellt als eine SMS-Nachricht try { #if DEBUG foreach (var item in header) { Console.WriteLine($">{item}<"); } Console.WriteLine("Header.length = " + header.Length); #endif if (header.Length < 5) { return; //Ungültiger Header! } //<index> Index int.TryParse(header[(int)HeaderSms.Index], out int index); //<stat> Status string status = header[(int)HeaderSms.MessageStatus].Trim('"'); //<oa>/<da> OriginatingAddress/ DestinationAddress | <fo> First Oxctet string sender = header[(int)HeaderSms.Sender].Trim('"'); //[<alpha>] PhoneBookentry für <oa>/<da> string SenderPhoneBookEntry = header[3].Trim('"'); //[<scts>] Service Centre Time Stamp | [<ra>] Recipient Address DateTime TimeUtc = ParseUtcTime(header[4].Trim('"'), header[5].Trim('"')); string messageText = string.Empty; for (int i = 1; i < line.Length; i++) { if (line[i] == "OK") { break; //und OK-Ausgabe am Ende nicht speichern } if (line[i].Length == 0) { continue; // keine Leerzeilen } messageText += line[i] + " "; } messageText = messageText.Trim(); if (messageText.StartsWith("00") && messageText.Length > 20) //Kein Leerzeichen, startet mit '00' und lang: Vermutung Sms-Inhalt ist in UCS2 Formatiert wegen Sonderzeichen z.B. °C, ä, ß... { messageText = DecodeUcs2(messageText); } //else //{ // messageText = DecodeGsm(messageText); // schmeißt Exception //} ParseSms sms = new ParseSms { RawHeader = line[0], Index = index, MessageStatus = status, Sender = sender, SenderPhonebookEntry = SenderPhoneBookEntry, TimeUtc = TimeUtc, Message = UmlauteDecode(messageText) // Sinnvoll? }; // if (header.Length > 5) // Letzte werden beim MC75 nicht ausgegeben // { // int.TryParse(header[6], out int numberTypeInt); // int.TryParse(header[7], out int textLength); // // sms.MessageLength = textLength; // sms.PhoneNumberType = numberTypeInt; //} SmsRecievedEvent?.Invoke(null, sms); } catch (Exception ex) { throw new Exception($"FEHLER ParseNewSms(): {ex.GetType()}\r\n{ex.Message}\r\n{ex.StackTrace}"); } }
/// <summary> /// Trigger für das Event SMS empfangen /// </summary> /// <param name="e"></param> static void RaiseSmsRecievedEvent(Sms e) { SmsRecievedEvent?.Invoke(null, e); }