Thinker

            - long way to go...

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            24 隨筆 :: 0 文章 :: 143 評論 :: 0 Trackbacks
          先簡單的來介紹一下如何使用 SMSLib 收發(fā)短信。
          SMSLib 的唯一的入口類是 CService 類,該類主要負(fù)責(zé)設(shè)置各種訪問手機(jī)的參數(shù),以及提供收發(fā)短信的功能。
          CService 類只有一個構(gòu)造函數(shù) CService(String port, int baud, String gsmDeviceManufacturer, String gsmDeviceModel) 其中 port 是串口的端口號如 "COM5",baud 是訪問串口的速率,該值的設(shè)定可以根據(jù)你的設(shè)備管理器里面的串口的屬性中支持的波特率設(shè)定合適的值,gsmDeviceManufacturer, gsmDeviceModel 這兩個參數(shù)主要是用來確定具體的 ATHandler 的實現(xiàn),如果你想用 SMSLib 默認(rèn)的 ATHandler,這兩個值都可以設(shè)置為 null 或者 "", 如果你想采用適合你自己手機(jī)型號的特定的 ATHandler 的時候,只要自己寫一個繼承 AbstractATHandler 的實現(xiàn)類,然后再用相關(guān)名稱標(biāo)識設(shè)置 gsmDeviceManufacturer, gsmDeviceModel 的值就可以了。

          接收短信的代碼如下:
           1     try
           2     {
           3       CService srv = new CService("COM5"9600nullnull);
           4 
           5       srv.connect();
           6 
           7       LinkedList messageList = new LinkedList();
           8 
           9       srv.readMessages(messageList, CIncomingMessage.MessageClass.All);
          10 
          11       // TODO: 處理返回的 messageList。
          12 
          13       srv.disconnect();
          14     }
          15     catch (Exception e)
          16     {
          17       e.printStackTrace();
          18     }

          上面的代碼是讀取手機(jī)中全部的短信,你也可以通過設(shè)置 CIncomingMessage.MessageClass 參數(shù)來讀取不同類型的短信,比如 CIncomingMessage.MessageClass.Read 表示只讀取已讀短信,CIncomingMessage.MessageClass.Unread 表示只讀取未讀短信,你也可以使用 readMessages(LinkedList messageList, int messageClass, int limit) 讀取你想要的指定數(shù)目的幾條短信。

          發(fā)短信的過程也很簡單,代碼如下:
           1     try
           2     {
           3       CService srv = new CService("COM5"9600nullnull);
           4 
           5       srv.connect();
           6 
           7       COutgoingMessage msg = new COutgoingMessage("138102*****""我的第一條短信。。。");
           8 
           9       msg.setMessageEncoding(CMessage.MessageEncoding.EncUcs2);
          10 
          11       srv.sendMessage(msg);
          12 
          13       srv.disconnect();
          14     }
          15     catch (Exception e)
          16     {
          17       e.printStackTrace();
          18     }

          發(fā)送中文短信時要設(shè)置消息的編碼方式為 CMessage.MessageEncoding.EncUcs2,而且還要設(shè)置手機(jī)發(fā)送短信的協(xié)議為 PDU 模式,CService 默認(rèn)的協(xié)議就是 PDU, 所以在上面的代碼中沒有設(shè)置。

          在后面的文章中我會繼續(xù)介紹收發(fā)短信時各個參數(shù)的意義及如何設(shè)置。

          http://www.aygfsteel.com/qujinlong123/
          posted on 2007-04-13 12:09 Long 閱讀(5871) 評論(5)  編輯  收藏 所屬分類: Java

          評論

          # re: 用 Java 通過串口發(fā)送手機(jī)短信(二)簡單使用 2007-04-26 06:20 bravezyj
          寫得好!謝謝!  回復(fù)  更多評論
            

          # re: 用 Java 通過串口發(fā)送手機(jī)短信(二)簡單使用 2007-12-06 14:33 Steven suo
          為什么在我下載的smslib的src中沒有發(fā)現(xiàn)CService這個類呢,麻煩指教一下,謝謝先!  回復(fù)  更多評論
            

          # re: 用 Java 通過串口發(fā)送手機(jī)短信(二)簡單使用 2008-12-14 13:49 弋孤秋
          @Steven suo
          我也沒有找到CService這個類!!  回復(fù)  更多評論
            

          # re: 用 Java 通過串口發(fā)送手機(jī)短信(二)簡單使用 2009-03-25 09:17 Hermes
          你可能下錯了!我下的是smslib-java-v2[1].1.5.zip
          這個里面就有。。  回復(fù)  更多評論
            

          # re: 用 Java 通過串口發(fā)送手機(jī)短信(二)簡單使用 2009-11-20 16:19 xl
          處理返回的 messageList

          如何處理返回的Messaglist 我的C#中用 <string> messagelist 提示出錯  回復(fù)  更多評論
            

          主站蜘蛛池模板: 乃东县| 南召县| 敖汉旗| 陆川县| 长乐市| 龙陵县| 南漳县| 卓资县| 方山县| 岳池县| 太仆寺旗| 化德县| 芦溪县| 万源市| 陕西省| 布尔津县| 临夏市| 铁岭县| 高密市| 新乡县| 安福县| 永春县| 长治市| 图木舒克市| 五峰| 临洮县| 虞城县| 峨边| 温宿县| 雅安市| 怀来县| 河北区| 加查县| 东港市| 华蓥市| 沛县| 新化县| 嘉义县| 教育| 崇仁县| 峡江县|