您的位置:首页 > 编程语言 > Java开发

短信猫(GSM MODEM)win64_Java开发指南

2017-12-26 18:21 253 查看
**开发所需文件**:



 
smslib-3.5.3.jar
短信猫二次开发包(可前往http://smslib.org官网下载最新版本)
log4j-1.2.14.jar
打印日志使用(版本不限)
RXTXcomm.jar 串口通讯Java类库(可前往http://rxtx.qbang.org官网下载适用版本)
rxtxSerial.dll和rxtxParallel.dll
动态链接库文件
 
** 开整 **
1、先配置环境(本人使用jdk1.8.0_131)
将RXTXcomm.jar 文件放至
\jdk1.8.0_131\jre\lib\ext目录下
将rxtxSerial.dll和rxtxParallel.dll
文件放至
\jdk1.8.0_131\jre\bin 目录下
 
2、项目导入依赖jar包
将smslib-3.5.3.jar和log4j-1.2.14.jar
两个开发依赖包导入项目(这个都会的哈)
 
3、短信猫设备连接电脑
将短信猫设备通过USB/串口 连接到电脑
查看是否连接(Win7系统):
win+R-->系统属性-->设备管理器-->端口



注:图中的( COM3
)为串口号
 
4、编写测试程序
package com.ultrapower.sms;

import org.smslib.helper.CommPortIdentifier;
import org.smslib.helper.SerialPort;
import java.io.*;
import java.util.Enumeration;

public class CommTest {

static CommPortIdentifier portId;
static Enumeration portList;
static int bauds[] = { 9600, 19200, 57600, 115200 };

public static void main(String[] args) {
portList = CommPortIdentifier.getPortIdentifiers();
System.out.println("金笛短信设备端口连接测试...");
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
System.out.println("找到串口: " + portId.getName());
for (int i = 0; i < bauds.length; i++) {
System.out.print("    Trying at " + bauds[i] + "...");
try {
SerialPort serialPort;
InputStream inStream;
OutputStream outStream;
int c;
String response;
serialPort = (SerialPort) port
4000
Id.open("SMSLibCommTester", 1971);
serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN);
serialPort.setSerialPortParams(bauds[i], SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
inStream = serialPort.getInputStream();
outStream = serialPort.getOutputStream();
serialPort.enableReceiveTimeout(1000);
c = inStream.read();
while (c != -1) {
c = inStream.read();
}
outStream.write('A');
outStream.write('T');
outStream.write('\r');
try {
Thread.sleep(1000);
} catch (Exception e) {
}
response = "";
c = inStream.read();
while (c != -1) {
response += (char) c;
c = inStream.read();
}
if (response.indexOf("OK") >= 0) {
try {
System.out.print("  获取设备信息...");
outStream.write('A');
outStream.write('T');
outStream.write('+');
outStream.write('C');
outStream.write('G');
outStream.write('M');
outStream.write('M');
outStream.write('\r');
response = "";
c = inStream.read();
while (c != -1) {
response += (char) c;
c = inStream.read();
}
System.out.println("  发现设备: " + response.replaceAll("\\s+OK\\s+", "").replaceAll("\n", "").replaceAll("\r", ""));
} catch (Exception e) {
System.out.println("  没有发现设备!");
}
} else {
System.out.println("  没有发现设备!");
};
serialPort.close();
} catch (Exception e) {
System.out.println("  没有发现设备!");
}
}
}
}
}
}


执行结果为:--》



5、编写发送短信程序
package com.ultrapower.sms;

import org.smslib.Message;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.SerialModemGateway;

import java.time.LocalDateTime;

public class SendGsm {

public static boolean SMSReminds(String phone, String content) throws Exception{

// 1、连接网关的id  
// 2、com口名称,如COM1或/dev/ttyS1(根据实际情况修改
// 3、串口波特率,如9600(根据实际情况修改)
// 4、开发商
// 5、型号 
SerialModemGateway gateway  = new SerialModemGateway("model.com3", "COM3", 9600, "SIEMENS","HT-S3100");

// 设置true,表示该网关可以接收短信
gateway.setInbound(true);
// 设置true,表示该网关可以发送短信
gateway.setOutbound(true);

// -----------------创建发送短信的服务(它是单例的)----------------
Service service = Service.getInstance();
Service.getInstance().S.SERIAL_POLLING = true;

boolean result;
try {
// ---------------------- 将设备加到服务中----------------------
service.addGateway(gateway);
// ------------------------- 启动服务 -------------------------
service.startService();
// ------------------------- 发送短信 -------------------------  
OutboundMessage msg = new OutboundMessage(phone , content);
msg.setEncoding(Message.MessageEncodings. ENCUCS2);
System.out.println("startDate====="+ LocalDateTime.now().toString());
result = service.sendMessage(msg);
System.out.println("endDate====="+ LocalDateTime.now().toString());
// ------------------------- 关闭服务 -------------------------  
service.stopService();
service .removeGateway(gateway);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
service.stopService();
service .removeGateway(gateway);
return false;
}
return result;
}

public static void main(String[] args) {
try {
boolean sendResult = SMSReminds("17631357071", "Java发送短信--测试短信猫-验证码 123456");
System.out.println("sendResult = [" + sendResult + "]");
} catch (Exception e) {
e.printStackTrace();
}
}
}

执行结果为:--》



完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 短信 gsm