黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

C#開發(fā)終端式短信的原理和方法之實(shí)踐篇

系統(tǒng) 2593 0
實(shí)踐篇

  在整個(gè)開始的時(shí)候,你要準(zhǔn)備以下軟硬件:

   硬件:西門子3508或C35系列手機(jī)一個(gè)
   西門子手機(jī)通信數(shù)據(jù)線一條
   軟件:VS.NET(C#)
   短信編碼類庫(kù)(PDUdecoding.cs)
   串口通信類庫(kù)(JustinIO.cs)

  當(dāng)所要求的軟硬件都準(zhǔn)備好后,我們就可以正式開始了。下面以我自己的測(cè)試用例為大家詳細(xì)介紹。

  做什么事情都應(yīng)該有計(jì)劃,雖然我們的測(cè)試用例很簡(jiǎn)單,但還是畫個(gè)簡(jiǎn)單的流程圖:



  有了流程圖,還只是明白了程序怎么運(yùn)行,再看看界面,會(huì)讓你更心動(dòng)的了。


圖二、短信終端C#版界面圖

  再不開始,就有人罵我了。下在我講的開發(fā)環(huán)境是在VS.NET(C#)中。COME GO,GO…

  步驟一、打開VS.NET,新建項(xiàng)目->Visual C#項(xiàng)目->W(wǎng)indows應(yīng)用程序,名稱中輸入你的工程名就行啦,我的是smsForCsharp

  步驟二、參照上面的界面圖,設(shè)計(jì)你的程序界面,下面是我程序中各控件的主要屬性

控件名稱 控件Name屬性 說(shuō)明
TextBox targetNumber 接收手機(jī)號(hào)碼
TextBox CenterNumber 短信中心號(hào)
TextBox smsState 發(fā)送短信后,返回的信息。注意設(shè)置控件為多行
TextBox smsContent 短信內(nèi)容,同樣,注意設(shè)置為多行
ComboBox ConnectPort 連接手機(jī)的端口,例:COM1\COM2
ComboBox ConnectBaudRate 串口連接的波特率,在串口通信中很重要的
Button btnSend 發(fā)送按鈕
Button btnConnect 連接按鈕,主要用于程序的初始化
Button btnExit 退出按鈕

  步驟三、將PDUdecoding.cs與JustinIO.cs拷入剛剛新建工程目錄,并打開解決方案資源管理器,右鍵添加現(xiàn)有項(xiàng),選中兩個(gè)文件就行了,這里再打開類視圖,里面是不是多了兩個(gè)類,JustinIO與SMS類啊,如圖三,要是沒(méi)有,那你再試。


圖三,添加類后的類視圖

  步驟四、引用命名空間,用代碼查看方式打開Form1.cs(這里以我電腦為準(zhǔn),如果你自己更改過(guò),請(qǐng)以你電腦為準(zhǔn)),在代碼前面加上

using JustinIO;
using SMS;
using System.IO;
using System.Text;

  步驟五、在smsFormCsharp類中,添加兩個(gè)字段ss_port、sms,分別為JustinIO及SMS的對(duì)象,如下



  步驟六、添加串口初始化代碼,如下:

/// <summary>
/// 初始化串口
/// </summary>
public bool InitCom(string m_port, int m_baudrate)
{
 ss_port.PortNum = m_port;//串口號(hào)
 ss_port.BaudRate = m_baudrate;//波特率
 ss_port.ByteSize = 8;//數(shù)據(jù)位
 ss_port.Parity = 0;//
 ss_port.StopBits = 1;//停止位
 ss_port.ReadTimeout = 1000;//讀超時(shí)
 try
 {
  if (ss_port.Opened)
  {
   ss_port.Close();
   ss_port.Open();
  }
  else
  {
   ss_port.Open();//打開串口
  }
  return true;
 }
 catch(Exception e)
 {
  MessageBox.Show("錯(cuò)誤:" + e.Message);
  return false;
 }
}

  將上述代碼直接拷入你的程序中,并確保添加在Main主函數(shù)的后面,按F5,調(diào)試應(yīng)該沒(méi)什么問(wèn)題,不過(guò)上面還沒(méi)有實(shí)際任何看得見的功能,僅僅是打開了串口而以。

  步驟七、打開串口后,我們就應(yīng)該初始化程序,取得手機(jī)的名牌,型號(hào),以及短信中心號(hào),雙擊連接按鈕,并把下面代碼拷入程序中:

/// <summary>
/// 初始化代碼,并獲取手機(jī)相關(guān)信息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConnect_Click(object sender, System.EventArgs e)
{
 bool opened = InitCom(ConnectPort.SelectedItem.ToString(),Convert.ToInt32(ConnectBaudRate.SelectedItem.ToString()));//打開并初始化串口
 bool Connected = false;
 if (opened)
 {
  ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMI\r")); //獲取手機(jī)品牌
  string response = Encoding.ASCII.GetString(ss_port.Read(128));
  if (response.Length > 0)
  {
   ConnectState.Text = response.Substring(10,7);
   Connected = true;
  }
  else
  {
   ConnectState.Text = "與手機(jī)連接不成功";
   Connected = false;
  }
  ss_port.Write(Encoding.ASCII.GetBytes("AT+CGMM\r"));//獲取手機(jī)型號(hào)
  response = Encoding.ASCII.GetString(ss_port.Read(128));
  if(response.Length > 0)
  {
   ConnectState.Text =ConnectState.Text+ " " + response.Substring(10,5) + " 連接中......";
   Connected = true;
  }
  else
  {
   ConnectState.Text = "與手機(jī)連接不成功";
   Connected = false;
  }
  ss_port.Write(Encoding.ASCII.GetBytes("AT+CSCA?\r"));//獲取手機(jī)短信中心號(hào)
  response = Encoding.ASCII.GetString(ss_port.Read(128));
  if(response.Length > 0)
  {
   CenterNumber.Text = response.Substring(20,13);
   Connected = true;
  }
  else
  {
   Connected = false;
  }
  if (Connected == true)
  {
   btnConnect.Enabled = false;
   btnSend.Enabled = true;
  }
  else
  {
   btnConnect.Enabled = true;
   btnSend.Enabled = false;
  }
 }
}

  到這里,你可以按F5,編譯調(diào)試,通過(guò),在確保你的手機(jī)與電腦連接正常下,點(diǎn)擊連接按鈕看看,是不是像我的一樣,手機(jī)型號(hào)及短信中心號(hào)者正常顯示出來(lái)了。


圖四、連接后程序界面

  步驟八、看到上在的結(jié)果,是不是感覺(jué)到離成功發(fā)送短信很近啦,看這么長(zhǎng)的文章,費(fèi)了大家不少時(shí)間,再不亮出發(fā)短信部份,對(duì)不起大家了。

  雙擊發(fā)送按鈕,將下面代碼拷入程序中。

/// <summary>
/// 發(fā)送短信
/// </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 = "發(fā)送成功!";
 }
 else
 {
  SendState = "發(fā)送失敗";
 }

 string Result = String.Format("{0},{1},{2},\n\r",targetNumber.Text,smsContent.Text,SendState);
 smsState.Text += Result;
}

  快按F5吧!神啊,快通過(guò)吧!不用求神了,已經(jīng)通過(guò)了,現(xiàn)在你就可以發(fā)短信了,請(qǐng)確保手機(jī)可以正常連接電腦。按連接,然后填入你要的發(fā)送的目標(biāo)手機(jī)號(hào),并在內(nèi)容中添入你要發(fā)送的內(nèi)容,發(fā)送吧!成功了!成功了是這樣子的!看你的跟我的一樣嗎?


圖五、發(fā)送成功

  還有一些事 不要忘了,記得添加退出代碼。雙擊退出,添加下面代碼:

/// <summary>
/// 關(guān)閉串口,退出程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExit_Click(object sender, System.EventArgs e)
{
 ss_port.Close();
 Application.Exit();
}

  到這里都告一個(gè)段落了,所有的功能都完成了!不過(guò)由于這僅僅是一個(gè)演示用例,還有很多沒(méi)有考慮,像串口通信中的,在實(shí)際操作不可這樣操作的,應(yīng)該用多線程來(lái)處理,一個(gè)專門用來(lái)讀串口,一個(gè)專門用來(lái)寫串口。還有程序中很多防出錯(cuò)代碼沒(méi)有添加進(jìn)去,希望有心有朋友添加,并公布出來(lái),這也是我寫這篇文章希望看到的結(jié)果。請(qǐng)勿將本程序直接用于實(shí)際中,真誠(chéng)提醒你!

  終于寫完了,我也放松了許多,本來(lái)很早就應(yīng)該完成了,因?yàn)橐恍﹤€(gè)人原因,沒(méi)有及時(shí)寫完,向那些曾經(jīng)問(wèn)過(guò)我相關(guān)問(wèn)題,沒(méi)有及時(shí)回復(fù)的朋友,抱歉一聲,希望你們繼續(xù)支持我!

調(diào)試環(huán)境

  Windows 2000 Professional、Visual Studio.NET、西門子3508手機(jī)、西門子專用數(shù)據(jù)線

原文:http://jly.blog.hexun.com/trackback.aspx?articleid=3207223

C#開發(fā)終端式短信的原理和方法之實(shí)踐篇


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論