短信猫的使用

最近项目中有了新的需求,就是当数据更新后给用户发短信,其他也没什么好的方法,只有使用短信猫了。找了个短信猫(实达的),本本没有串口,只好再去找个usb-serial的接口,装上驱动,重启,串口连接成功。

接下来先别着急发送短信,先通过超级终端进去短信猫的设置里面,实达的猫是长按S,知道出来一个START->这样的才算OK,或者输入AT指令,看返回是否OK,如果是就表示正常了,按照说明改成帧模式(frame. model),重启猫,输入AT+ONSMS,回车,进去短信模式,AT+CMGS=手机号码,短信格式(中文、英文),短信内容,回车,如果返回please wait,一个空行,然后然后OK!,那么恭喜你,短信发送成功。

接下来就不用说了,找到java2comm的包,然后写程序,思路是打开串口、进入短信模式(如果猫已经设置好了,就不用再描述这行指令了),发送短信,退出短信模式(如果长期发送短信就没必要关了),关闭串口。

看看例子:

import java.io.*;
import java.util.*;
import javax.comm.*;

public class SerialPortTest {
 static Enumeration portList;
    static CommPortIdentifier portId;
    static String messageString = "测试短信!/r";//短信内容
    static String NSMS="AT+ONSMS";//进入短信工作模式
    static String FFSMS="AT+OFFSMS";//退出短信工作模式
    static String PHONENUMBER="135*********";//电话号码
    static String SENDSMS="AT+CMGS="+PHONENUMBER+",3+,"+messageString;//发送短信指令    
    static SerialPort serialPort;
    static OutputStream outputStream;

    public static void main(String[] args) {
        portList = CommPortIdentifier.getPortIdentifiers();
        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
             //System.out.println("start");
                if (portId.getName().equals("COM1")) {//win32平台
                 //System.out.println("OK");
                //if (portId.getName().equals("/dev/term/a")) {//linux平台
                    try {
                        serialPort = (SerialPort)
                        portId.open("SimpleWriteApp", 2000);
                        //System.out.println("111");
                    } catch (PortInUseException e) {}
                    try {
                        utputStream = serialPort.getOutputStream();
                    } catch (IOException e) {}
                    try {
                        serialPort.setSerialPortParams(57600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {}
                    try {
                     //outputStream.write(ONSMS.getBytes());
                     outputStream.write(SENDSMS.getBytes());//发送短信                 
                     //System.out.println("发送短信模式指令--"+SENDSMS);
                    } catch (IOException e) {}
                }
            }
        }
    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷月宫主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值