Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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 + "< ");
                    }
                }
            });
        }
Exemplo n.º 3
0
        /// <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");
        }
Exemplo n.º 4
0
        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");
        }
Exemplo n.º 5
0
        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] + "#;");
                }
            }
        }
Exemplo n.º 6
0
        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;
        }