我的漫漫程序之旅

          專注于JavaWeb開發(fā)
          隨筆 - 39, 文章 - 310, 評(píng)論 - 411, 引用 - 0
          數(shù)據(jù)加載中……

          利用jSMSEngine開源包進(jìn)行短信的收發(fā)

          公司項(xiàng)目中要用到短信貓進(jìn)行收發(fā)短信,在網(wǎng)上找到一個(gè)開源的jSMSEngine。經(jīng)測(cè)試jSMSEngine
          可以實(shí)現(xiàn)項(xiàng)目需求。

          jSMSEngine
          開源包可以利用GSM Modem或帶有紅外線、藍(lán)牙、數(shù)據(jù)線的手機(jī)與電腦連通,收發(fā)短信。
          相應(yīng)的類庫(kù)下載我已經(jīng)打包好了

          jSMSEngine開源項(xiàng)目主頁
          http://sourceforge.net/projects/jsmsengine/

          相關(guān)類庫(kù)下載

          讓我們先來配置開發(fā)環(huán)境環(huán)境。

          1.    復(fù)制comm.jar、jSMSEngine.jar到j(luò)re\lib\ext文件夾下,或把開發(fā)包添加到開發(fā)環(huán)境中。
          2.    復(fù)制javax.comm.properties到\jre\lib目錄下。
          3.    復(fù)制win32com.dll到\jre\bin目錄下。


          用如果是用Eclipse開發(fā)的話看看Install JRE里面的JRE路徑,用那個(gè)就可以了。

          如果不用開發(fā)工具的話jre就是你在系統(tǒng)環(huán)境里配置的JAVA_HOME 的路徑。

          以上工作是必須的,很重要。到這時(shí)環(huán)境已經(jīng)準(zhǔn)備好了。


          在設(shè)備管理器下,看看手機(jī)占用的哪個(gè)com端口,更改程序里面的com端口和比特率兩個(gè)參數(shù),找一臺(tái)帶數(shù)據(jù)線的手機(jī)試試,最好不帶內(nèi)存卡的那種。

          發(fā)送短信代碼:
          import java.util.LinkedList;

          import org.jsmsengine.CIncomingMessage;
          import org.jsmsengine.CMessage;
          import org.jsmsengine.COutgoingMessage;
          import org.jsmsengine.CService;

          @SuppressWarnings(
          "unchecked")
          /****
           * 收發(fā)短信的服務(wù)類
           
          */
          public class MsgService
          {
              
          private static CService cs = null;

              
          public static void init(String port, Integer fm)
              {
                  
          // 指定端口號(hào)和頻率
                  cs = new CService(port, fm);
              }

              
          /**
               * 發(fā)送短信
               * 
               * 
          @param phone
               *            手機(jī)號(hào)
               * 
          @param info
               *            短信內(nèi)容
               
          */
              
          public static void sendmsg(String phone, String info)
              {
                  
          try
                  {
                      System.out.println(
          "正在發(fā)送短信");
                      
          // 初始化連接
                      cs.initialize();
                      
          // 設(shè)置jSMSEngine服務(wù)的緩存
                      cs.setCacheDir(".\\");
                      
          // 連接
                      int status = cs.connect();
                      
          // 連接成功(可以是GSM Modem、帶有紅外線、藍(lán)牙、數(shù)據(jù)線的手機(jī))
                      if (status == CService.ERR_OK)
                      {
                          cs.setOperationMode(CService.MODE_PDU);
                          cs.setSmscNumber(
          "");
                          COutgoingMessage msg 
          = new COutgoingMessage(phone, info);
                          msg.setMessageEncoding(CMessage.MESSAGE_ENCODING_UNICODE);
                          
          if (cs.sendMessage(msg) == CService.ERR_OK)
                          {
                              System.out.println(
          "" + phone + "發(fā)送短信成功!");
                          } 
          else
                          {
                              System.out.println(
          "" + phone + "發(fā)送短信失敗!");
                          }
                          
          // 斷開連接
                          cs.disconnect();
                      } 
          else
                      {
                          System.out.println(
          "連接設(shè)備失敗, 異常: " + status);
                      }
                  } 
          catch (Exception e)
                  {
                      e.printStackTrace();
                  }
              }
              
          /***
               * 讀取短信內(nèi)容
               
          */
              
          public static void readmsg()
              {
                  
          //存入短信集合
                  LinkedList msgList = new LinkedList();
                  
          try
                  {
                      System.out.println(
          "讀取短信中。。。。");
                      cs.initialize();
                      cs.setCacheDir(
          ".\\");
                      
          // 連接設(shè)備
                      int status = cs.connect(); 
                      
          if (status == CService.ERR_OK)
                      {
                          cs.setOperationMode(CService.MODE_PDU);
                          
          if (cs.readMessages(msgList, CIncomingMessage.CLASS_ALL) == CService.ERR_OK)
                              
          for (int i = 0; i < msgList.size(); i++)
                              {
                                  CIncomingMessage msg 
          = (CIncomingMessage) msgList.get(i);
                                  System.out.println(msg);
                                  
          //輸出短信文本
                                  System.out.println(msg.getText());
                                  
          //刪除短信
                                  cs.deleteMessage(i);
                              }
                          
          // 斷開連接
                          cs.disconnect();
                      } 
          else
                          System.out.println(
          "設(shè)備連接失?。?/span>" + status);
                  } 
          catch (Exception e)
                  {
                      e.printStackTrace();
                  }
              }

              
          public static void main(String[] args)
              {
                  init(
          "com4"9600);
                  sendmsg(
          "15800000000""這是一個(gè)測(cè)試程序");
                  readmsg();
              }
          }

          ok,測(cè)試成功!


          posted on 2012-01-13 13:40 々上善若水々 閱讀(1945) 評(píng)論(3)  編輯  收藏 所屬分類: J2SE

          評(píng)論

          # re: 利用jSMSEngine開源包進(jìn)行短信的收發(fā)[未登錄]  回復(fù)  更多評(píng)論   

          你好請(qǐng)問利用jSMSEngine開源包進(jìn)行短信的收發(fā)
          出現(xiàn)了
          Exception in thread "main" java.lang.NoClassDefFoundError: gnu/io/SerialPortEventListener異常
          請(qǐng)問是什么問題呢?

          還有
          1. 復(fù)制comm.jar、jSMSEngine.jar到j(luò)re\lib\ext文件夾下,或把開發(fā)包添加到開發(fā)環(huán)境中。
          2. 復(fù)制javax.comm.properties到\jre\lib目錄下。
          3. 復(fù)制win32com.dll到\jre\bin目錄下。都已經(jīng)做好了

          我的電腦操作系統(tǒng)是win7旗艦版
          2016-03-02 15:23 | 我是菜鳥

          # re: 利用jSMSEngine開源包進(jìn)行短信的收發(fā)[未登錄]  回復(fù)  更多評(píng)論   

          知道的話聯(lián)系我qq郵箱謝謝
          2016-03-02 15:23 | 我是菜鳥

          # re: 利用jSMSEngine開源包進(jìn)行短信的收發(fā)[未登錄]  回復(fù)  更多評(píng)論   

          qq郵箱
          550725115@qq.com
          2016-03-02 15:24 | 我是菜鳥
          主站蜘蛛池模板: 敦化市| 凤城市| 安多县| 彭水| 隆尧县| 隆回县| 叙永县| 辽中县| 丹巴县| 保康县| 桃园县| 绩溪县| 宝兴县| 车致| 西丰县| 乐业县| 岢岚县| 上饶县| 兰考县| 江油市| 平南县| 乌审旗| 泰州市| 普兰县| 和田市| 姚安县| 九龙坡区| 乐业县| 莆田市| 甘肃省| 博白县| 闵行区| 英吉沙县| 玛曲县| 连城县| 云南省| 新河县| 华容县| 双江| 杭锦旗| 和林格尔县|