private void Gsm_Button_SendTestSms_Click(object sender, RoutedEventArgs e) { ulong phone = HelperClass.ConvertStringToPhonenumber(Gsm_TextBox_TestSmsNumber_Reciever.Text); string content = Gsm_TextBox_TestSmsText.Text; const string ctrlz = "\u001a"; if (phone == 0) { MessageBox.Show("Die Telefonnummer >" + Gsm_TextBox_TestSmsNumber_Reciever.Text + "< ist ungültig!", "MelBox2", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } if (content.Length < 5) { MessageBox.Show("SMS-Nachrichten müssen mindestens 5 Zeichen enthalten!", "MelBox2", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } //PortComandExe("AT+CMGF=1"); //System.Threading.Thread.Sleep(500); ////FUNKTIONIERT! //PortComandExe("AT+CMGS=\"+" + phone + "\"\r"); //System.Threading.Thread.Sleep(1000); //PortComandExe(content + ctrlz); GsmCommandQueue.Add("AT+CMGF=1"); GsmCommandQueue.Add("AT+CMGS=\"+" + phone + "\"\r"); GsmCommandQueue.Add(content + ctrlz); }
void CheckForIncomingSmsIndication(object sender, SerialDataEventArgs e) { Task.Run(() => { string str = Encoding.ASCII.GetString(e.Data); //Empfangshinweis für eingehende Nachricht ? if (str.Contains("+CMTI:")) { string smsIdStr = System.Text.RegularExpressions.Regex.Match(str, @"\d+").Value; if (int.TryParse(smsIdStr, out int smsId)) { GsmCommandQueue.Add("AT+CMGF=1"); GsmCommandQueue.Add("AT+CPMS=\"MT\""); SpManager.NewSerialDataRecieved += ReadIncomingMessagePart1; GsmCommandQueue.Add("AT+CMGR=" + smsId); } else { Log(Topic.SMS, Prio.Fehler, 2003221714, "Die ID der eingegangenen SMS konnte nicht ausgelesen werden aus >" + str + "< "); } } }); }
/// <summary> /// Triggert die Abfrage der momentanen Netzqualität mit ShowGsmSignalQuality(...) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> internal void CheckGsmSignalQuality(object sender, EventArgs e) { //Ereignis abbonieren SpManager.NewSerialDataRecieved += ShowGsmSignalQuality; //Signalqualität abfragen GsmCommandQueue.Add("AT+CSQ"); //PortComandExe("AT+CSQ"); }
void SubscribeForIncomingSms() { Gsm_TextBox_SerialPortResponse.Text += "Abboniere SMS-Benachrichtigungen.\r\n"; //Setzte Textmodus in GSM-Modem GsmCommandQueue.Add("AT+CMGF=1"); //Setzte Speicherbereich im GSM-Modem "SM" SIM, "PM" Phone-Memory, "MT" + "SM" + "PM" GsmCommandQueue.Add("AT+CPMS=\"MT\""); //Abfrage, welche Optionen für Empfangsindiaktor von GSM-Modem unterstützt werden //GsmCommandQueue.Add("AT+CNMI=?"); //Setze Empfangsindiaktor von GSM-Modem senden GsmCommandQueue.Add("AT+CNMI=2,1,2,0,1"); }
private void Gas_Button_RedirectVoiceCallsOn_Click(object sender, RoutedEventArgs e) { ulong phone = HelperClass.ConvertStringToPhonenumber(Gsm_TextBox_TestSmsNumber_Reciever.Text); int[] secondsToForward = { 5, 10, 15, 20, 25, 30 }; if (phone == 0) { MessageBox.Show("Die Telefonnummer >" + Gsm_TextBox_TestSmsNumber_Reciever.Text + "< ist ungültig!", "MelBox2", MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } else { MessageBoxResult r = MessageBox.Show("Sprachanrufe umleiten an Telefonnummer +" + phone + "?", "MelBox2", MessageBoxButton.YesNo, MessageBoxImage.Question); if (r == MessageBoxResult.Yes) { GsmCommandQueue.Add("ATD**61*+" + phone + "**" + secondsToForward[1] + "#;"); //PortComandExe("ATD**61*+" + phone + "**" + secondsToForward[1] + "#;"); } } }
public static void SendSms(ulong phone, string content) { if (phone == 0) { Log(Topic.SMS, Prio.Fehler, 2004111246, "SendSms() die übergebene Telefonnummer ist ungültig."); } var t = Task.Run(() => { //Warte, solange SMS senden gesperrt ist. Siehe CheckForOutgoingSmsIndication() while (BlockSmsSending) { } }); t.Wait(TimeOutSendSMSResponseMilliSeconds); //Timeout warten auf SMS sen if (BlockSmsSending) { MainWindow.Log(MainWindow.Topic.SMS, MainWindow.Prio.Fehler, 2004131250, "SMS senden; Zeitüberschreitung (" + TimeOutSendSMSResponseMilliSeconds + " ms) bei Sendebestätigung."); } BlockSmsSending = true; const string ctrlz = "\u001a"; content = content.Replace("\r\n", " "); if (content.Length > 160) { content = content.Substring(0, 160); } GsmCommandQueue.Add("AT+CMGS=\"+" + phone + "\"\r"); GsmCommandQueue.Add(content + ctrlz); SpManager.NewSerialDataRecieved += CheckForOutgoingSmsIndication; }