最近项目中有了新的需求,就是当数据更新后给用户发短信,其他也没什么好的方法,只有使用了。找了个(实达的),本本没有串口,只好再去找个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) {}
}
}
}
}
}
分享到:
相关推荐
具体介绍见: Qt树形控件QTreeView使用1——节点的添加删除操作: http://blog.csdn.net/czyt1988/article/details/18996407 Qt树形控件QTreeView使用2——复选框的设置: ...利用C++11的function和bind功能,实现...
主要内容:● 使用JNI将原生代码连接到Java中● 使用SWIG自动生成JNI代码● 使用POSIX线程实现多线程应用● 使用POSIX套接字实现网络应用● 使用logging、GDB和Eclipse调试器进行调试● 使用Valgrind分析内存● 使用...
包括使用教程文档。 直接安装即可使用,不用打任何破解补丁,没有任何限制,已经完全破解。 1.无时间限制 2. 去除混淆后的程序集类型名称中加入的“eval_”标志。 3. 去除混淆后的程序集标题属性(AssemblyTitle...
Oracle 9i Client (Oracle 9i 客户端) 简化版 (不安装Oracle客户端,也可以使用PLSQL Developer 不用安装Oracle客户端也可以使用PLSQL Developer 绿色! 安全! 轻便! 可靠! 1、本软件可作为简单的Oracle9i客户端...
资源里包括windows的iperf.exe、android系统安装的iperf.apk和iperf使用说明参数等内容。 Iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,...
《XMPP高级编程 使用JavaScript和jQuery》 高清扫描 完整版 PDF电子书 详细书签 这是刚出炉的第一本完整PDF,网上其它地方流传的都是试读版PDF坑爹呢。 友情提醒: 大家在阅读高清扫描版PDF书籍时,如果需要做...
Toad for DB2 使用指南,介绍了Toad for DB2的使用和注意事项。
博客《 PopUpWindow使用详解(一)——基本使用》对应源码,博客地址:http://blog.csdn.net/harvic880925/article/details/49272285
解压后大小128KB的程序...本人用此来解决在VISTA下由于使用UE而导致的花屏或者蓝屏0x00000018问题,详细解决方案参考本人xchuu的163里面的blog, 地址:http://xchuu.blog.163.com/blog/static/2020791120100310495384/
github 使用指南 官方中文
可以获取系统的内存和可用内存,cpu的实时使用率
使用VB.NET写的CHART控件使用例程,简单易懂.
KEPServer安装及使用 安装步骤详细,授权步骤详细,使用向导。
自己使用NModbus类库实现Modbus协议的过程中作的总结,总结了如何使用NModbus类库
c++获取cpu使用率(包含系统和单进程)含多个例子 c++获取cpu使用率(包含系统和单进程)含多个例子 c++获取cpu使用率(包含系统和单进程)含多个例子
不管你是想将已经存在的原生代码应用移植到Android平台上还是准备开始在Android平台上进行软件开发,使用《Android C++高级编程——使用NDK》一书提供的技术可以构建更出色的应用。本书将展示构建性能更好的复杂原生...
DotNetBar是一组用于.NET Framework环境下的一组组件集, 利用该组件集能够打造绚丽并且实用的应用程序界面。 这是DotNetBar的教程集合, 您一定可以通过它学会DotNetBar组件库的使用!
最详细的keyclone的英文版说明及使用设置手册
仅供学习研究使用,切勿用于商业 示例代码 d:/empty.mdb 为access的mdb文件路径 public static void main(String[] args) throws SQLException, ClassNotFoundException { String url ="jdbc:access:/d:/empty.mdb...
winform c# listview控件使用范例源码,包括以下范例,listview控件的各种高级使用范例,很齐全。 ActiveGrid.rar ColorListBox.zip DragDropListView.rar ExCheckedListBox.rar EXListView.rar ...