步驟八、看到上在的結果,是不是感覺到離成功發送短信很近啦,看這麼長的文章,費了大家不少時間,再不亮出發短信部份,對不起大家了。
雙擊發送按鈕,將下面代碼拷入程序中。
/// <summary>
/// 發送短信
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSend_Click(object sender, System.EventArgs e)
{
string decodedSMS = sms.smsDecodedsms(CenterNumber.Text,targetNumber.Text,smsContent.Text);
byte[] buf =Encoding.ASCII.GetBytes(String.Format("AT+CMGS={0}\r",sms.nLength));
ss_port.Write(buf);
string response = Encoding.ASCII.GetString(ss_port.Read(128));
string SendState = "";
if( response.Length > 0 && response.EndsWith("> "))
{
ss_port.Write(Encoding.ASCII.GetBytes(String.Format("{0}\x01a",decodedSMS)));
SendState = "發送成功!";
}
else
{
SendState = "發送失敗";
}
string Result = String.Format("{0},{1},{2},\n\r",targetNumber.Text,smsContent.Text,SendState);
smsState.Text += Result;
}
快按F5吧!神啊,快通過吧!不用求神了,已經通過了,現在你就可以發短信了,請確保手機可以正常連接電腦。按連接,然後填入你要的發送的目標手機號,並在內容中添入你要發送的內容,發送吧!成功了!成功了是這樣子的!看你的跟我的一樣嗎?
圖五、發送成功
還有一些事 不要忘了,記得添加退出代碼。雙擊退出,添加下面代碼:
/// <summary>
/// 關閉串口,退出程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExit_Click(object sender, System.EventArgs e)
{
ss_port.Close();
Application.Exit();
}
到這裡都告一個段落了,所有的功能都完成了!不過由於這僅僅是一個演示用例,還有很多沒有考慮,像串口通信中的,在實際操作不可這樣操作的,應該用多線程來處理,一個專門用來讀串口,一個專門用來寫串口。還有程序中很多防出錯代碼沒有添加進去,希望有心有朋友添加,並公布出來,這也是我寫這篇文章希望看到的結果。請勿將本程序直接用於實際中,真誠提醒你!
終於寫完了,我也放松了許多,本來很早就應該完成了,因為一些個人原因,沒有及時寫完,向那些曾經問過我相關問題,沒有及時回復的朋友,抱歉一聲,希望你們繼續支持我!
調試環境:
Windows 2000 Professional、Visual Studio.Net、西門子3508手機、西門子專用數據線。
常見問題:
第一, 手機品牌,因為不同產商的手機,對AT指令的支持不同,所以請選擇適合你手機AT指令,像NOKIA的就只能用TEXT模式的AT指令。
第二, 數據線,問題出得最多的地方也就是數據,如果接上數據線後,你的手機顯示為黑屏,建議你換數據線。
第三, 手機SIM卡上的短信中心號設置,請確保在你的手機上可以發送短信。
第四, 請你先用串口調試工具調試手機與電腦的連接,這樣對你整個工作都是一個保證。
作者申明:
1、本文示例程序,可以任意拷貝、傳播,但請保留作者的版權申明,以及第三方類庫作者的版權申明。
3、本文為版權歸本文所有,未作者及天極網的同意不得轉載。