package com.ssw.util;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Random;
import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.UnsupportedCommOperationException;
/***
* 串口操作实现类
* @author tlb
*
*/
public class Port {
private CommPortIdentifier portId;
private SerialPort serialPort;
private OutputStreamWriter out;
private InputStreamReader in;
private String COMname;
public boolean isused =true;
//private static char symbol1 = 13;
/**
* 打开com口
* @param portName
* @return
*/
public Port(String portName) {
try {
portId = CommPortIdentifier.getPortIdentifier(portName);
if (portId == null) {
System.out.println("port is null");
}
try {
serialPort = (SerialPort) portId.open(getrechargeablePassword(),0);
} catch (PortInUseException e) {
System.gc();
e.printStackTrace();
}
// 下面是得到用于和COM口通讯的输入、输出流。
try {
in = new InputStreamReader(serialPort.getInputStream());
out = new OutputStreamWriter(serialPort.getOutputStream());
} catch (IOException e) {
System.gc();
System.out.println("IOException");
}
// 下面是初始化COM口的传输参数,如传输速率:9600等。
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
setCOMname(portId.getName());
setIsused(true);
} catch (UnsupportedCommOperationException e) {
e.printStackTrace();
System.gc();
}
} catch (NoSuchPortException e) {
e.printStackTrace();
System.gc();
}
}
public void openNum(String portName){
try {
portId = CommPortIdentifier.getPortIdentifier(portName);
if (portId == null) {
System.out.println("port is null");
}
try {
serialPort = (SerialPort) portId.open(getrechargeablePassword(),0);
} catch (PortInUseException e) {
System.gc();
e.printStackTrace();
}
// 下面是得到用于和COM口通讯的输入、输出流。
try {
in = new InputStreamReader(serialPort.getInputStream());
out = new OutputStreamWriter(serialPort.getOutputStream());
} catch (IOException e) {
System.gc();
System.out.println("IOException");
}
// 下面是初始化COM口的传输参数,如传输速率:9600等。
try {
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
setCOMname(portId.getName());
setIsused(true);
} catch (UnsupportedCommOperationException e) {
e.printStackTrace();
System.gc();
}
} catch (NoSuchPortException e) {
e.printStackTrace();
System.gc();
}
}
/**
* 得到 所有的端口
*/
public List list(){
List list = new ArrayList();
Enumeration en = CommPortIdentifier.getPortIdentifiers();
CommPortIdentifier portId;
while (en.hasMoreElements())
{
portId = (CommPortIdentifier) en.nextElement();
/*如果端口类型是串口,则打印出其端口信息*/
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
list.add(portId.getName());
System.out.println(portId.getName());
}
}
return list;
}
//获取密码
public static String getrechargeablePassword() {
Random random = new Random();
char[] codeSequence = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',
'V', 'W', 'X', 'Y', 'Z', '0', '1', '2', '3', '4', '5', '6',
'7', '8', '9', 'a', 'c', 'b', 'd', 'f', 'e', 'g', 'h', 'j',
'i', 'l', 'k', 'n', 'm', 'o', 'p', 'q', 'r', 's', 't', 'u',
'w', 'v' };
String strRand = "";
for (int i = 0; i < 18; i++) {
strRand = strRand + String.valueOf(codeSequence[random.nextInt(59)]);
}
System.out.println("得到的密码: "+strRand);
return strRand;
}
/**
* 检查SIM是否存在
* @return
*/
public boolean chakanPort() {
try {
String atCommand = "AT+ccid";
String strReturn = sendAT(atCommand);
if (strReturn.indexOf("OK", 0) != -1) {
return true;
}
return false;
} catch (Exception ex) {
System.gc();
ex.printStackTrace();
return false;
}
}
/**
* 关闭COM口
* @return boolean
*/
public String close() {
if(isused){
try {
in.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
serialPort.close();
System.gc();
setIsused(false);
return "端口关闭成功!";
}else {
return "端口已关闭";
}
}
/**
* 向串口中写入字符串命令
* @param s 字符串命令
* @throws Exception 异常
*/
public void writeln(String s) throws Exception {
out.write(s);
out.write('\r');
out.flush();
}
/**
* 读取COM命令的返回字符串
* @return 结果字符串
* @throws Exception
*/
public String read() throws Exception {
int n, i;
char c;
String answer = "";
for (i = 0; i < 100; i++) {
while (in.ready()) {
n = in.read();
if (n != -1) {
c = (char) n;
answer = answer + c;
Thread.sleep(1);
} else
break;
}
if (answer.indexOf("OK") != -1) {
break;
}
Thread.sleep(100);
}
return answer;
}
/**
* 向串口发送AT指令
* @param atcommand 指令内容
* @return 指令返回结果
* @throws java.rmi.RemoteException
*/
public String sendAT(String atcommand) throws java.rmi.RemoteException {
String s = "";
try {
Thread.sleep(150);
writeln(atcommand);
Thread.sleep(100);
s = read();
Thread.sleep(200);
} catch (Exception e) {
System.gc();
System.out.println("ERROR: send AT command failed; " + "Command: "
+ atcommand + "; Answer: " + s + " " + e);
}
return s;
}
/*********************getter() and setter()*************************************/
public String getCOMname() {
return COMname;
}
public void setCOMname(String mname) {
COMname = mname;
}
public CommPortIdentifier getPortId() {
return portId;
}
public void setPortId(CommPortIdentifier portId) {
this.portId = portId;
}
public SerialPort getSerialPort() {
return serialPort;
}
public void setSerialPort(SerialPort serialPort) {
this.serialPort = serialPort;
}
public OutputStreamWriter getOut() {
return out;
}
public void setOut(OutputStreamWriter out) {
this.out = out;
}
public InputStreamReader getIn() {
return in;
}
public void setIn(InputStreamReader in) {
this.in = in;
}
public boolean isIsused() {
return isused;
}
public void setIsused(boolean isused) {
this.isused = isused;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
sms.rar_java web_modem send sms java_sms gsm java_短信猫
共26个文件
class:5个
java:5个
jar:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 143 浏览量
2022-09-21
17:12:05
上传
评论
收藏 3.68MB RAR 举报
温馨提示
java web短信猫收发短信源码,这是一个例子,主要功能有:获得所有的可用端口号,发送信息,获取信息,删除信息,关闭端口等,本代码本人亲自测试.
资源推荐
资源详情
资源评论
收起资源包目录
sms.rar (26个子文件)
sms
.mystrutsdata 240B
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 500B
src
com
ssw
action
SmgAction.java 3KB
bean
Smsrecv.java 2KB
service
SendsmgImpl.java 4KB
util
StringUtil.java 6KB
Port.java 7KB
struts.xml 401B
.project 1KB
WebRoot
META-INF
MANIFEST.MF 36B
WEB-INF
web.xml 671B
classes
com
ssw
action
SmgAction.class 4KB
bean
Smsrecv.class 2KB
service
SendsmgImpl.class 4KB
util
StringUtil.class 5KB
Port.class 7KB
struts.xml 401B
lib
ofbiz-entity.jar 3.68MB
smslib-3.3.0b2.jar 215KB
comm.jar 27KB
log4j-1.2.11.jar 342KB
index.jsp 2KB
.mymetadata 282B
.classpath 757B
.myeclipse
共 26 条
- 1
资源评论
- fengerpiao1232023-10-29资源值得借鉴的内容很多,那就浅学一下吧,值得下载!
JaniceLu
- 粉丝: 78
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功