短信猫使用

1. 连接:短信猫有usb和串口两种。usb直接插入电脑;串口的可以使用usb和串口转接线,电脑支持串口最好。尝试过电视机的投影线,虽然可以装上,但指示灯不良

2. 安装串口驱动:连接上电脑后可用驱动精灵等软件下载

3. 编写实现代码。设备管理器中查找信息:端口(COM开头),波特率(属性-端口设置-位/秒),和制造商(短信猫机身上有),pin(移动默认0000,联通默认1234)

package com.dsg.monitor.service.mon;

import java.io.IOException;

import org.smslib.AGateway.Protocols;
import org.smslib.GatewayException;
import org.smslib.Message.MessageEncodings;
import org.smslib.OutboundMessage;
import org.smslib.SMSLibException;
import org.smslib.Service;
import org.smslib.TimeoutException;
import org.smslib.modem.SerialModemGateway;

import com.dsg.monitor.dao.ParameterDao;

public class SmsService {
	public static String portName ;
	public static int baudrate ;
	public static String manufacturer ;
	public static Service smsService = Service.getInstance();
	public static Service getSmsService() {
		return smsService;
	}
	public static void setSmsService(Service smsService) {
		SmsService.smsService = smsService;
	}
	static {
		// 设备参数 baudrate manufacturer
		portName = ParameterDao.getInstance().getParameterByName("sms_com_prot").getValue();
		baudrate = Integer.valueOf(ParameterDao.getInstance().getParameterByName("sms_baudrate").getValue());
		manufacturer = ParameterDao.getInstance().getParameterByName("sms_manufacturer").getValue();
		
		SerialModemGateway gateway = new SerialModemGateway("modem." + portName.toLowerCase(), portName, baudrate, manufacturer, "");
		gateway.setInbound(true);
		gateway.setOutbound(true);
		gateway.setProtocol(Protocols.PDU);
		gateway.setSimPin("1234");
		try {
			smsService.addGateway(gateway);
			try {
				smsService.startService();
			} catch (TimeoutException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SMSLibException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (GatewayException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void resetConfig(){
		portName = ParameterDao.getInstance().getParameterByName("sms_com_prot").getValue();
		baudrate = Integer.valueOf(ParameterDao.getInstance().getParameterByName("sms_baudrate").getValue());
		manufacturer = ParameterDao.getInstance().getParameterByName("sms_manufacturer").getValue();
	}
	public static void sendMsgs(String[] tels){
		try {
			/*smsService.startService();*/
			String msg = "information for testing";
			for (int i = 0; i < tels.length; i++) {
				OutboundMessage outboundMessage = new OutboundMessage(tels[i], msg);
				outboundMessage.setEncoding(MessageEncodings.ENCUCS2);
				if (!smsService.sendMessage(outboundMessage)) {
					System.out.println( "Send failed");
				} 
				
			}
		} catch (Exception e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}finally{
			try {
				smsService.stopService();
			} catch (TimeoutException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (GatewayException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (SMSLibException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

}

4. 注意短信猫上有支持的网络制式,购卡时注意

5. 指示灯闪烁正常,一直亮着有异常:有的需要另外装天线


两个异常解决:

GSM Network Registration failed, give up trying

NoSuchPortException


猜你喜欢

转载自blog.csdn.net/calvin555555/article/details/43058829
今日推荐