⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handlemodem.java

📁 java短信猫收发
💻 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 + -