`
linuxstuding
  • 浏览: 1232444 次
文章分类
社区版块
存档分类
最新评论

的使用

 
阅读更多

最近项目中有了新的需求,就是当数据更新后给用户发短信,其他也没什么好的方法,只有使用了。找了个(实达的),本本没有串口,只好再去找个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) {}
}
}
}
}


}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics