天天看點

Java序列槽與手機通信

最近公司沒事找事,本來想幹的事情又被耽誤了……不連貫啊~~~555555555555……

 半夜睡不着覺,想起部落格又一段時間沒更新了,準備寫點新内容。

————————————————————————————————————————————

 衆 所周知,SMS(Short Messaging Service)即短消息業務,是由Etsi所制定的一個規範(GSM 03.40 和 GSM03.38)。當使用其7-bits編碼時,可以發送最多160個字元;使用8-bit編碼,最多可以發送140個字元,通常無法直接通過手機顯 示;還有用16-bit編碼時,最多70個字元,被用來顯示Unicode(UCS2)文本資訊,可以被大多數的手機所顯示。由于SMS是目前大衆所使用 的幾大主流資訊傳遞手段之一,雖然鄙人并不從事短信服務開發,但作為一個程式員來講始終藝不壓身,尤其最近十一期間業餘接觸了相關資料(給朋友群發短信 玩……),是以準備将一些資料放在部落格上以供有需要者參考。

 目前來說,短信的軟體發送大體有三種途徑:

1、 網關方式:就是向當地的電信部門申請,不需要額外的裝置,利用對方提供的API調用程式發送短信,适用于大型的通信公司,像華為、傲天、中興、亞信等。

2、 終端方式:就是借助像GSM MODEM之類的設定(支援AT指令的手機也行),通過資料線連接配接電腦,來發送短信,用這種方法比較适用于小型及個人。要實作這種方式必須了解序列槽通信、AT指令、短信編碼、解碼。

3、 利用網站實作,由網站代發短信資料,對網站依賴性太高,對網絡的要求也比較高,不适于進行項目開發。

  由于我是個人使用,是以本文選擇了AT指令方式作為講解。

 所 謂AT,即Attention。AT指令集是從Terminal Equipment或Data Terminal Equipment向Terminal Adapter或Data Circuit Terminating Equipment發送的,通過TA、TE發送AT指令來控制Mobile Station的功能與GSM網絡業務進行互動。我們可以通過AT指令進行呼叫短信、電話本、資料業務、補充業務、傳真等方面的控制。

 在Java程式設計中,我們可以通過Java Comm進行手機與電腦的序列槽通訊,以此通過AT指令控制手機操作。

 但由于AT指令操作是非常之簡單的,我們完全可以自己寫元件完成相關操作,而且針對聯通、移動、小靈通等不同的服務需求,自制元件反而更容易控制及擴充,故此我也寫了一個簡單的SMS元件釋出在此文中。

 使用示例如下:

package org.test;

import org.loon.framework.test.sms.SMS;

import org.loon.framework.test.sms.SMSImpl;

/**

 * Copyright 2008

 * 

 * Licensed under the Apache License, Version 2.0 (the "License"); you may not

 * use this file except in compliance with the License. You may obtain a copy of

 * the License at

 * [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the

 * License for the specific language governing permissions and limitations under

 * the License.

 * @project loonframework

 * @author chenpeng

 * @email:[email][email protected][/email]

 * @version 0.1

 */

public class SendManager {

    public static void main(String[] args) throws Exception {

        SMS sms = new SMSImpl();

        // 與預設手機端口建立通訊

        sms.begin();

        // 發送短信,1:目标手機号碼,比如13010112500 2:短信内容,預設使用pdu模式,7-bit編碼

        sms.getDriver().sendMessage("13010112500","收到此短信者速速請我吃飯,仿膳标準即可,神兵火急如律令111……");

        // 關閉通訊

        sms.end();

    }

}

本文轉自 cping 51CTO部落格,原文連結:http://blog.51cto.com/cping1982/129618