📄 handlemodem.java
字号:
package topeak.localestar;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import javax.comm.CommPortIdentifier;
import javax.comm.SerialPort;
import javax.comm.SerialPortEvent;
/**
* @author hanfei
* @version 1.0
*
*/
public class HandleModem implements javax.comm.SerialPortEventListener {
private String portName = "COM1";
private javax.comm.SerialPort port = null;
private java.io.InputStream in;
private java.io.OutputStream out;
public HandleModem() throws Exception{
// StringBuffer sms=new StringBuffer();
// sms.append("0891683108200705F011000D91683145151515F200080012003000300030003000300030004C00310030");
// sms.append((char)0x1A);
init();
write("AT+CGMI");
readWait();
write("AT+CGMM");
readWait();
write("AT+CMGF=1"); //0为PDU,1为text
readWait();
// write("AT+CMGS=033");
// readWait();
// writeSpecial(sms.toString());
// readWait();
}
//初始化串口
public void init() throws Exception {
javax.comm.CommPortIdentifier portId = CommPortIdentifier
.getPortIdentifier(portName);
port = (SerialPort) portId.open(this.getClass().getName(), 2000);
in = port.getInputStream();
out = port.getOutputStream();
port.setSerialPortParams(9600, port.DATABITS_8, port.STOPBITS_1,
port.PARITY_NONE);
port.enableReceiveTimeout(2000);
//添加事件的监听
port.addEventListener(this);
port.notifyOnDataAvailable(true);
}
//从端口写数据
public void write(String cmd) throws Exception {
cmd += "\r";
out.write((cmd).getBytes());
System.out.println("write: " + cmd);
}
public void writeSpecial(String cmd) throws IOException{
PrintWriter pw=new PrintWriter(port.getOutputStream());
pw.println(cmd);
pw.flush();
pw.close();
System.out.println("write: " + cmd);
}
//从端口读数据
public String read() throws Exception {
Thread.sleep(1000);
int size = in.available();
if (size < 1)
return null;
byte[] input = new byte[size];
in.read(input, 0, size);
String ret = new String(input);
System.out.println("=================================");
System.out.print("read: \t" + ret);//+ byte2hex(input) + "\n" +
System.out.println("=================================");
return ret;
}
public String readWait() throws Exception {
//while (in.available() < 1)
Thread.sleep(2000);
//String input = read();
return "";//input;
}
public synchronized void serialEvent(SerialPortEvent event) {
//System.out.println("Event:" + event.getEventType());
try {
if (event.getEventType() == event.DATA_AVAILABLE) {
String tmpread=read();
System.out.println("get "+tmpread);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
HandleModem s=new HandleModem();
StringBuffer sms=new StringBuffer();
sms.append("000000N");
sms.append((char)0x1A);
s.write("AT+CMGS=+8615671662441");
s.readWait();
s.writeSpecial(sms.toString());
s.readWait();
// while(true){
// sms.append("000000N");
// sms.append((char)0x1A);
// s.write("AT+CMGS=+8613545151512");
// s.readWait();
// s.writeSpecial(sms.toString());
// s.readWait();
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -