AT commands Send/receive SMS

前端 未结 3 1351

I am new to AT commands. I am using Nokia E71 to send and receive SMS. I am designing an application for sending SMS, but my code is not working.

using Syste         


        
相关标签:
3条回答
  • 2020-12-10 00:31

    Why dont you open the port connection in the form_load() itself, later you can close it at the end as you did.

    And do these too in Form_Load():

    string cmd = "AT";
    port.WriteLine(cmd + "\r");
    port.Write(cmd + "\r");
    port.WriteLine("AT+CMGF=1");
    

    And simplifying the sms sending code:

    port.WriteLine("AT+CMGS=\"" + PhNumber + "\"");
    port.Write(Message + char.ConvertFromUtf32(26));
    
    0 讨论(0)
  • 2020-12-10 00:44

    Try it this way.. You are not opening the connection to the serial port. I have tried it and it is working fine for me.

     private void button1_Click(object sender, EventArgs e)
     {
         this.serialPort = new SerialPort();
         this.serialPort.PortName = "COM5";
         this.serialPort.BaudRate = 9600;
         this.serialPort.Parity = Parity.None;
         this.serialPort.DataBits = 8;
         this.serialPort.StopBits = StopBits.One;
         this.serialPort.Handshake = Handshake.RequestToSend;
         this.serialPort.DtrEnable = true;
         this.serialPort.RtsEnable = true;
         this.serialPort.NewLine = System.Environment.NewLine;
         serialPort.Open();
         send_sms();
     }
     public bool send_sms()
     {
         String SMSMessage = "gsm MESSAGE FROM .NET C#";
         String CellNumber = "+9233333333333";
         String messageToSend = null;
         if (SMSMessage.Length <= 160)
         {
             messageToSend = SMSMessage;
         }
         else
         {
             messageToSend = SMSMessage.Substring(0, 160);
         }
         if (serialPort.IsOpen)
         {
             this.serialPort.WriteLine(@"AT" + (char)(13));
             Thread.Sleep(200);
             this.serialPort.WriteLine("AT+CMGF=1" + (char)(13));
             Thread.Sleep(200);
             this.serialPort.WriteLine(@"AT+CMGS=""" + CellNumber + @"""" + (char)(13));
             Thread.Sleep(200);
             this.serialPort.WriteLine(SMSMessage + (char)(26));
             return true;
             }
         return false;
     }
    
    0 讨论(0)
  • 2020-12-10 00:48

    Here's my code

    using System;
    using System.IO.Ports;
    using System.Threading;
    using System.Windows.Forms;
    
    namespace CSharp_SMS
    {
      public partial class Form_SMS_Sender : Form
      {
        private SerialPort _serialPort;
        public Form_SMS_Sender()
        {
            InitializeComponent();
        }
    
        private void buttonSend_Click(object sender, EventArgs e)
        {
            string number = textBoxNumber.Text;
            string message = textBoxMessage.Text;
    
            //Replace "COM7"withcorresponding port name
            _serialPort = new SerialPort("COM7", 115200);   
    
            Thread.Sleep(1000);
    
            _serialPort.Open();
    
            Thread.Sleep(1000);
    
            _serialPort.Write("AT+CMGF=1\r");
    
            Thread.Sleep(1000);
    
            _serialPort.Write("AT+CMGS=\"" + number + "\"\r\n");
    
            Thread.Sleep(1000);
    
            _serialPort.Write(message + "\x1A");
    
            Thread.Sleep(1000);
    
            labelStatus.Text = "Status: Message sent";
    
            _serialPort.Close();
            }
        }
    }
    

    Here's a link http://circuitfreak.blogspot.com/2013/03/c-programming-sending-sms-using-at.html

    0 讨论(0)
提交回复
热议问题