前一段时间公司用到短信modem发送信息,我通过参考网络资料,写了一个完整的例子供大家一块学习。代码
如下:
package cn.thunderbird.lm.media.util;
import java.io.*;
import java.util.Enumeration;
import org.smslib.helper.CommPortIdentifier;
import org.smslib.helper.SerialPort;
public class ATCommandUtil {
private String ATTEST = "AT\r";
private String ATSMSSET = "AT+CMGF=1\r";
private int COMMANDDELAYTIME = 500; //命令间隔延迟时间ms
private int SMSTIME = 5000; //发送短信延迟时间ms
boolean rs;
public boolean sendMsg(String phoneNumber,String content,String portNO,int brandate){
String ATMSG ="AT+CMGS=\""+phoneNumber+"\"\r";
CommPortIdentifier portid=CommPortIdentifier.getPortIdentifier(portNO);
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
SerialPort com = null;
if(portid.getPortType()==CommPortIdentifier.PORT_SERIAL){//判断是否为串口
if(portid.getName().equals(portNO)){//获取指定串口号
try{
com = portid.open("ATCommand", 2000);
println("COM OK!");
int c;
String response = "";
com.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN);
com.setSerialPortParams(brandate, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);//串口设置
InputStream in = com.getInputStream();
OutputStream out = com.getOutputStream();
com.enableReceiveTimeout(1000);
out.write(ATTEST.getBytes());//测试AT指令
Thread.sleep(COMMANDDELAYTIME);
c=in.read();
while(c!=-1){
if(c!='\r'){
response += (char)c;
}
c=in.read();
}
if(response.indexOf("OK")>=0){//返回OK,代表AT指令正常
print(new String(response.getBytes("iso-8859-1"),"GBK"));
println("AT指令正常!\n");
} else{
println("AT指令出现异常,请检查端口号和波特率是否匹配!");
return false;
}
out.write(ATSMSSET.getBytes());//设置短信发送模式
Thread.sleep(COMMANDDELAYTIME);
response = "";
c=in.read();
while(c!=-1){
if(c!='\r'){
response += (char)c;
}
c=in.read();
}
if(response.indexOf("OK")>=0){
print(response);
println("短信设置TEXT模式成功!\n");
} else{
println("短信设置TEXT模式失败!");
return false;
}
out.write(ATMSG.getBytes());//发送指令AT+CMGS
Thread.sleep(COMMANDDELAYTIME);
response = "";
c=in.read();
while(c!=-1){
if(c!='\r'){
response += (char)c;
}
c=in.read();
}
if(response.indexOf(">")>=0){
println(response);
println("准备发送短信:");
println("短信内容:"+content);
}else{
println("发送短信失败!");
return false;
}
out.write(content.getBytes());//发送短信内容
println("发送短信...");
Thread.sleep(100);
out.write(26);//发送CTRL+Z
Thread.sleep(SMSTIME);
response = "";
c=in.read();
while(c!=-1){
if(c!='\r'){
response += (char)c;
}
c=in.read();
}
if(response.indexOf("OK")>=0){
println("短信发送成功!");
}else{
println("发送短信失败!");
return false;
}
}catch(Exception e){
println("端口号或者波特率不一致!");
println(e.getCause().toString());
return false;
}finally{
if(com!=null){
com.close();//关闭端口
println("COM is closed!");
}
}
}else{
return false;
}
}else{
return false;
}
return true;
}
public static void print(String msg){
System.out.print(msg);
}
public static void println(String msg){
System.out.println(msg);
}
配置信息如下:
把comm.jar和win32com.dll文件复制到JDK下面的jre/lib/ext.中, javax.comm.properties文件复制到JDK下面的jre/lib中。(文件都在短信modem所需文件配置.rar)
资源下载:
分享到:
相关推荐
Java 实现短信猫发短信是一项常见的通信技术应用,主要用于企业或服务端系统向用户发送验证码、通知等。本文将深入探讨如何使用Java编程语言通过短信猫(GPRS Modem)来实现这一功能,并重点关注给定文件中的关键...
【JAVA短信发送程序详解】 Java编程语言在信息技术领域中被广泛应用,其中之一就是构建短信发送程序。这个程序允许用户通过特定的硬件设备——短信猫,向指定的手机发送短信。短信猫,全称“Modem for SMS”,是一...
开发者通过编程语言(如Python、C#或Java)的串口库,建立与GSMMODEM的连接,然后发送AT命令来控制GSMMODEM执行相应的操作,如开启短信功能、设置短信内容、指定收件人,最后发送短信。 具体实现步骤通常包括以下几...
短信开发包和GSM MODEM在IT行业中是用于实现设备或软件通过移动网络发送和接收短信的技术。GSM(Global System for Mobile Communications)是一种广泛使用的移动通信标准,特别是在2G网络中,它允许设备通过GSM ...
在这种情况下,Java调用Modem执行AT指令可能用于自动拨打电话验证用户身份、发送短信验证码或进行远程设备控制。 综上所述,实现“Java调用Modem执行AT指令”涉及了Java串口通信、AT指令控制、错误处理、线程管理和...
6. **错误处理和日志记录**:在实际应用中,必须考虑错误处理,比如端口不可用、短信发送失败等情况。同时,日志记录是必要的,可以帮助调试和追踪问题。 7. **安全考虑**:短信服务可能涉及敏感信息,因此需要确保...
1.这里主要是java调用短信猫发送短信。 这里的短信猫主要使用RS232串口与服务器通信。 2.需要用到开源组织开发的smslib.jar,直接导入开发环境即可。 3.smslib.jar 需要用到java串口通信需要用到的comm.jar,win32...
本文中利用Java语言编写的程序可以跨平台控制CDMA MODEM进行短信收发。文中提到了Java的开发环境,如JDK(Java Development Kit)和Eclipse IDE。 ***m API:***m是一个Java API,用于与计算机系统的串行端口通信。...
短信猫(Modem GSM)是一种特殊的通信设备,它允许计算机通过GSM网络发送和接收短信。这个二次开发包是专为程序员设计的,用于利用这种技术集成到自己的应用程序中。以下是一些关于短信猫(Modem GSM)二次开发的...
1. **Java多线程**:如果需要并发发送短信,多线程技术是必不可少的,可以提高短信发送的效率。 2. **数据持久化**:如果需要保存发送和接收的短信记录,那么可能需要用到数据库,例如MySQL或Oracle,进行数据存储和...
【标题】"smslib java发送短信"涉及到的是Java平台下使用smslib库来实现短信发送的功能。smslib是一个开源的Java库,专为开发者提供发送和接收短信的能力,尤其适用于那些需要通过短信猫(Modem)或其他短信网关进行...
本教程将聚焦于如何利用Java结合短信猫(Modem)发送短信,这通常涉及到AT指令集的使用以及串行通信。短信猫是一种硬件设备,能够通过SIM卡连接到移动网络,从而实现短信收发功能。在Java中,我们通常会借助特定的库...
在一个程序中使用可以使用多个短信控件(即同时连接多个GSM Modem设备)时,如果要发送一条短信,容器程序可优先选择发送队列为空的短信控件发送,或者选择发送队列中剩余发送条数最少的短信控件发送。
在这个"java串口发送短信.zip"项目中,开发者使用了RXTX库来实现通过Java程序控制短信猫(SMS Modem)发送短信的功能。短信猫是一种硬件设备,它可以连接到计算机的串行接口(如COM口或USB口),并模拟GSM手机,从而...
/**短信发送方*/ private String sender;//短信发送方 /**短信接收发*/ private String recver;//短信接收发 /**时间*/ private Date date; public String getSmstext() { return smstext; } public void...
7. **集成测试**:在实际应用中,开发者还需要编写测试用例,模拟不同的网络环境和设备状态,确保短信发送和接收的可靠性。 8. **异常处理**:处理网络中断、设备故障、超时等异常情况是必不可少的。良好的异常处理...
【标题】:“短信猫(GSM MODEM)Java开发指南” 短信猫,也称为GSM调制解调器,是一种可以连接到计算机并通过GSM网络发送和接收短信的硬件设备。在Java环境中对其进行二次开发,可以实现自动化发送、接收短信以及...
Java 实现通过串口与 GSM 猫相连发送短信是一个常见的通信应用场景,主要涉及 Java 的串口编程技术以及 SMS(Short Message Service)协议的理解。在本文中,我们将深入探讨这个主题,了解如何利用 Java 来操作串行...
Java GSM Modem 开发包是用于在Windows平台上构建短信发送和接收功能的工具集。这个压缩包`windows_java.rar`包含了一系列与Java编程语言相关的资源,特别是针对GSM调制解调器(也称为GSM modem)的API和示例代码。...