2012-09-05 15 views
2

AT 명령을 처음 사용합니다. Nokia E71을 사용하여 SMS를 보내고받습니다. SMS를 보내는 응용 프로그램을 설계하고 있지만 코드가 작동하지 않습니다.AT 명령 SMS 수신/수신

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO.Ports; 
using System.Threading; 

namespace AT_commands 
    { 
    public partial class Form1 : Form 
     { 
     SerialPort serialPort; 
     public Form1() 
      { 
      InitializeComponent(); 
      } 

     public void Form1_Load(object sender, EventArgs e) 
      { 
      this.serialPort = new SerialPort(); 
      this.serialPort.PortName = "COM23"; 
      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; 
      send_sms(); 
      } 
     public bool send_sms() 
      { 
      label1.Text = "Loaded Successfuly"; 
      String SMSMessage = "Message to send"; 
      String CellNumber = "+923333333333"; 
      String messageToSend = null; 
      if (SMSMessage.Length <= 160) 
       { 
       messageToSend = SMSMessage; 
       } 
      else 
       { 
       messageToSend = SMSMessage.Substring(0, 160); 
       } 
      if (this.IsOpen == true) 
       { 
       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; 
      } 
     public void Open() 
      { 
      if (this.IsOpen == false) 
       { 
       this.serialPort.Open(); 
       } 
      } 

     public void Close() 
      { 
      if (this.IsOpen == true) 
       { 
       this.serialPort.Close(); 
       } 
      } 

     public bool IsOpen 
      { 
      get 
       { 
       return this.serialPort.IsOpen; 
       } 
      } 

     public void Dispose() 
      { 
      if (this.IsOpen) 
       this.Close(); 
      } 
     } 
    } 

이 코드로 도와주세요.

+0

어떤 문제가 발생합니까? –

+0

SMS를 보내지 않고 있습니다 –

+0

SMS를 보내지 않습니다 –

답변

2

포트 연결을 form_load() 자체에서 열지 않는 이유는 나중에 마지막에 닫을 수 있기 때문입니다.

와의 Form_Load()에서이 너무 수행

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

및 전송 코드 SMS를 단순화 : 여기

port.WriteLine("AT+CMGS=\"" + PhNumber + "\""); 
port.Write(Message + char.ConvertFromUtf32(26)); 
+0

SMS를 보내거나 읽는 데 문제가 있습니까 ?? – Cdeez

6

여기에 내 코드

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

의 링크 http://circuitfreak.blogspot.com/2013/03/c-programming-sending-sms-using-at.html

입니다
+0

고마워이 코드는 내 노키아 6630에서 작동합니다 – motevalizadeh

1

이 방법으로 시도해보십시오. 직렬 포트에 대한 연결을 열지 않았습니다. 나는 그것을 시도하고 그것은 나를 위해 잘 작동합니다.

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; 
} 
관련 문제