日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简单手机短信发送软件

發布時間:2024/3/13 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简单手机短信发送软件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 本來畢業設計已經弄的差不多了,可惜還跟手機搞上關系了,因為我是嵌入式專業的,沒辦法一定要跟嵌入式有關,糾結啊!本來是做基于B/S結構的教科研管理系統,后來實在想不出辦法了,就只好做一個教科研師資管理系統與手機通信開發,這總該跟嵌入式有關了吧!邱老師叫我這樣做的,不然我真的想不出有什么辦法了。其實我一開始的想法是如果系統有什么信息可以通過短信貓發送給用戶,不過我一開始確實沒什么想法,因為我壓根就沒弄過短信貓,我還以為短信貓是什么神秘的東西,后來才知道原來是GSM MODEM,我一想不是工作室的那個嗎?不是有嗎?反正有硬件就去做了吧!

?? 其實一開始不知道怎么做的,有去網上參考別人的材料,但還是沒什么想法呢?圖書館又沒有什么書,糾結中!后來我想了電腦上不是有一個超級終端么,那應該可以測試一下,但是測了好幾天這個短信貓都不能用呢?又一次的迷茫了!后來聽人家說那個可以跟設備之類的有關呢?突然想可能跟那個串口線有關系,于是我就去換了一條新的串口線!突然間可以了,哇,太高興了,弄了幾天終于有點成果了,后來就去試一下看那個超級終端可不可以發短信,終于可以了!算是有點結果了吧!心里確實蠻興奮的!

???? 后來就去找材料看那個具體怎么做!我現在做的這個還是參考別人的代碼,但原來的那個是用AT指令,發送的有點麻煩!后來我就去修改一下,不用AT指令,畢竟懂AT指令的人不多嗎!所以現在可以了!下面的那個是修改后的頁面:

?

首先要連接設備,然后下來就是初始化串口,包括發送方式等。

然后就是填寫對方手機號碼,最后就是填寫短信內容,點擊發送就可以了!

不過這個軟件還有一個問題就是只能發送英文的,還沒實現發送中文,這個后續還有繼續去做!下面的是我主要的代碼:

using System; using System.Collections.Generic; using System.Text; using System.IO.Ports; using System.Threading;namespace 時訊網 {class GSMMODEM{//構造函數public GSMMODEM(){//串口初始化_sp.NewLine = "/r/n";_sp.ReadTimeout = 2500;_sp.RtsEnable = true;//_sp.DtrEnable = true;//_sp.Handshake = Handshake.RequestToSendXOnXOff;}public GSMMODEM(string ComPort, int BaudRate){//串口初始化_sp.PortName = ComPort;_sp.BaudRate = BaudRate;_sp.NewLine = "/r/n";_sp.ReadTimeout = 2500;_sp.RtsEnable = true;//_sp.DtrEnable = true;//_sp.Handshake = Handshake.RequestToSendXOnXOff;}//屬性private SerialPort _sp = new SerialPort();//public bool AutoDelMsg = false; //設置是否在閱讀短信后自動刪除SIM卡內短信存檔(建議在經常接收短信時設置為 true)//設計和運行時都可以讀寫,true 自動刪除 false 不自動刪除//默認為 true//端口號public string ComPort{get{return _sp.PortName;}set{_sp.PortName = value;}}//波特率public int BaudRate{get{return _sp.BaudRate;}set{_sp.BaudRate = value;}}//是否開啟public bool IsOpen{get{return _sp.IsOpen;}}//打開設備public void OpenComm(){try{_sp.Open();}catch (Exception ex){throw (ex);}}//關閉設備public void CloseComm(){try{_sp.Close();}catch (Exception ex){throw (ex);}}//發送AT指令,返回由設備返回的數據public string SendATCommand(string ATCmd){_sp.DiscardInBuffer();try{_sp.WriteLine(ATCmd);}catch (Exception ex){throw (ex);}try{Thread.Sleep(100);return _sp.ReadExisting();}catch (Exception ex){throw (ex);}}public string Write(byte[] byte1, int a, int b){try{_sp.Write(byte1, a, b);}catch (Exception ex){throw (ex);}try{Thread.Sleep(100);return _sp.ReadExisting();}catch (Exception ex){throw (ex);}}}}

???? 本來想做到這樣就不做了,后來想了我這個只做了能發短信,還沒實現智能化,所以我后面跟吳強師兄商量了一下,他跟我說要讓這個短信自動的發出去,就像是有一條新消息就要將發出去,主要的原理就是去查詢數據表,如果有未發送的短信就將它發出去,后來我想了一下,確實不知道該怎么做,就去網上找了材料,今天早上就能它自動發短信,我的原理就是寫一個延遲函數,讓它延遲發送,這個可以了。

經過今天下午一條的思考,后面就想了一種方法,雖然簡單,但也算是能自動發短信,就是對于每一個消息就建立一個輔助表message,它有字段名id,gh,tel,zt,其中gh表示這個人有新消息,tel表示要發送的消息號碼,zt表示發送狀態(否表示未發送,是表示已發送),然后當每個人有去操作的時候,自動插入到表中,當表中有重復的消息就不插入。對于手機發送消息軟件,它就去查詢表中的數據,如果未發送就將它的gh,tel取出來,然后就將它發出去,最后更新到數據庫中。當然我有延遲函數(延遲20秒),這里面的一個死函數,因為它要一直去更新,下面就貼出我主要的代碼:

//狀態欄初始化toolStripStatusLabel1.Text = "短信窗口正在初始化";//填充comboBox_com控件,填入串口號以供選擇string[] Ports = SerialPort.GetPortNames(); //從注冊表中獲取串口號foreach (string Port in Ports){if (Regex.IsMatch(Port, @"COM[0-9]*")){comboBox_com.Items.Add(Port);}}//默認選第一個端口if (comboBox_com.Items.Count > 0){comboBox_com.SelectedIndex = 0;}comboBox1.SelectedIndex = 0;//設備初始化if (comboBox_com.Items.Count > 0){gm.ComPort = comboBox_com.SelectedItem.ToString();}gm.BaudRate = Convert.ToInt32(comboBox1.SelectedItem.ToString());//狀態欄toolStripStatusLabel1.Text = "短信窗口初始化成功";message me = new message();//this.label_comState.Text = me.GetTEL("否");//this.label_AT.Text = me.GetGH("否");//string gh = this.label_AT.Text;// me.UpdateMessage(gh, "是");// this.label_baud.Text = me.GetTEL("否");//this.label_com.Text = me.GetGH("否");//人為的修改if (gm.IsOpen == false) //連接設備{try{gm.OpenComm();label_comState.Text = "已連接";label_comState.ForeColor = Color.Green;button2.Text = "斷開連接";//狀態欄toolStripStatusLabel1.Text = gm.ComPort + "," + gm.BaudRate.ToString();}catch (Exception){label_comState.Text = "設備無法連接";label_comState.ForeColor = Color.Red;return;}}while(true){string teleno = me.GetTEL("否");// string teleno = "13605986473";string gh = me.GetGH("否");string message = "A New Message!";this.textBox_send.Text = message;this.textNo.Text = teleno;richTextBox1.Text += gm.SendATCommand("ATZ");//初始化短信貓richTextBox1.Text += gm.SendATCommand("AT+CMGF=1");//選擇發送方式是英文//提交手機號碼if (gm.IsOpen == true)//串口已經打開{try{if (stoptb2 == false)//顯示發送內容{richTextBox1.Text += gm.SendATCommand("AT+CMGS=" + teleno);//發送手機號碼richTextBox1.SelectionStart = richTextBox1.Text.Length;richTextBox1.ScrollToCaret();}else{gm.SendATCommand("AT+CMGS=" + teleno);}}catch (Exception){MessageBox.Show("");return;}}else{MessageBox.Show("設備未打開,無法操作");return;}//發送短信內容Byte[] byte1 = new Byte[1];byte1[0] = 0x1A;try{if (gm.IsOpen == true)//如果已經打開{richTextBox1.Text += gm.SendATCommand(message);//提交發送內容richTextBox1.Text += gm.Write(byte1, 0, 1);richTextBox1.SelectionStart = richTextBox1.Text.Length;richTextBox1.ScrollToCaret();me.UpdateMessage(gh, "是");}else{MessageBox.Show("設備未打開,無法操作");}}catch (Exception){MessageBox.Show("");}timeDelay(20000);//延遲5秒// MessageBox.Show("發送成功!");}

延遲函數如下:

private void timeDelay(int iInterval)//延遲函數(單位為毫秒){DateTime now = DateTime.Now;while (now.AddMilliseconds(iInterval) > DateTime.Now){}return;}

經過我初步的驗證是可以的!畢業設計終于告一段落!要好好思考工作的事情了!

總結

以上是生活随笔為你收集整理的简单手机短信发送软件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。