2014-01-10 14 views
1

這是消息框顯示的代碼(「消息已成功發送」)。但是我沒有收到我使用過的電話信息。使用MTS調制解調器在C#.net窗口應用程序中向手機發送短信

SerialPort sp = new SerialPort(); 
sp.PortName = "COM4";//choose your port wisely 
sp.BaudRate = 9600; 
sp.Parity = Parity.None; 
sp.Open(); 
sp.Write("AT+CMGS=\";+91" + textBox1.Text + "\"" + Environment.NewLine); 
Thread.Sleep(2000); 
sp.Write(textBox2.Text + (char)26 + Environment.NewLine); 
MessageBox.Show("Message sent seccuessfully"); 
+2

順便說一句,你拼寫「Secressfully」,它是成功的。 – Hamoudy

回答

0

請試試這個代碼:

private void Send() 
{ 
    SerialPort sp = new SerialPort(); 
    sp.DataReceived += new SerialDataReceivedEventHandler(OnDataReceived); 
    sp.PortName = "COM4";//choose your port wisely 
    sp.BaudRate = 9600; 
    sp.Parity = Parity.None; 
    sp.Open(); 

    // Set the GSM modem to Text Mode 
    sp.WriteLine("AT+CMGF=1"+Environment.NewLine); 
    // Specifying mobile number 
    sp.WriteLine(string.Format("AT+CMGS=\"+91{0}\"{1}", textBox1.Text, Environment.NewLine)); 
    // Specifying sms body 
    sp.WriteLine(textBox2.Text + (char)26 + Environment.NewLine); 
    MessageBox.Show("Message sent successfully"); 
} 

private void OnDataReceived(object sender, SerialDataReceivedEventArgs e) 
{ 
    SerialPort sp = (SerialPort)sender; 
    string modemResult = sp.ReadExisting(); 
    this.yourTextBox.Text += modemResult; 
} 

希望它可以幫助

+0

親愛的朋友Farzan,謝謝你的熱心幫助。但它不起作用。顯示消息的消息框,但沒有將消息傳遞給我選擇的電話號碼。 – user3171896

+0

我們需要找出問題,首先讓我們看看調制解調器的答案是什麼!我已經更新了代碼。請在您的表單上放置一個TextBox並將其Multiline屬性設置爲true,然後適當地更改代碼,以便將傳入的數據放入您的TextBox中。嘗試再次發送郵件並查看文本框中顯示的數據,如果它無助於解決問題,請將傳入的數據複製到此處。 – Farzan

+0

你好,我需要購買一個服務或任何這個工作?和串口是基於什麼設置的?抱歉我的問題,但這是我第一次嘗試通過代碼發送短信。 –

0

這是我的代碼和它的工作對我來說100%:

private SerialPort _serialPort; 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 

    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     string number = textBox1.Text; 
     string message = richTextBox1.Text; 



     //Replace "COM8"withcorresponding port name 
     _serialPort = new SerialPort("COM8", 115200); 

     Thread.Sleep(100); 

     _serialPort.Open(); 

     Thread.Sleep(100); 

     _serialPort.Write("AT+CMGF=1\r"); 

     Thread.Sleep(100); 

     _serialPort.Write("AT+CMGS=\"" + number + "\"\r\n"); 

     Thread.Sleep(100); 

     _serialPort.Write(message + "\x1A"); 

     Thread.Sleep(300); 

     label1.Text = "Message sent !!"; 

     _serialPort.Close(); 
    } 
+0

爲什麼有那麼多'Thread.Sleep(X);'在那裏? – LenglBoy

+0

由於您使用AT&T代碼與設備進行通信,因此每次操作之間應該有制動。 – nassimlouchani

0

這個問題冒泡,所以我認爲用今天高度相關的方法來回答可能會很好。正如Farzan在回答他的評論時提到的那樣,有些服務提供商可以提供允許您發送SMS消息的API。現在這更加重要,因爲找到固定電話已經變得很少見了,而且更難找到安裝了調制解調器的計算機。 Twilio是可用的提供商之一,並從發展的角度發送短信瑣事。

// Twilio usings 
using Twilio; 
using Twilio.Rest.Api.V2010.Account; 
using Twilio.Types; 

const string accountSid = "your_account_sid"; // specific to your Twilio account 
const string authToken = "your_auth_token"; // specific to your Twilion account 

TwilioClient.Init(accountSid, authToken); 

// Send a new outgoing SMS by POSTing to the Messages resource 
MessageResource.Create(
    from: new PhoneNumber("555-867-5309"), // From number must be an SMS-enabled Twilio number 
    to: new PhoneNumber(textBox1.Text), 
    body: textBox2.Text); // Message content 

MessageBox.Show("Message sent successfully"); 

Twilio是一項訂閱服務,但他們有一個「現收現付」計劃,目前每條消息的成本低於0.01美元。

相關問題