package smslibManager;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.List;
import org.ofbiz.base.util.Debug;
import org.smslib.AGateway;
import org.smslib.AGateway.GatewayStatuses;
import org.smslib.ICallNotification;
import org.smslib.IGatewayStatusNotification;
import org.smslib.IInboundMessageNotification;
import org.smslib.IOrphanedMessageNotification;
import org.smslib.IOutboundMessageNotification;
import org.smslib.InboundMessage;
import org.smslib.Library;
import org.smslib.Message.MessageTypes;
import org.smslib.OutboundMessage;
import org.smslib.Service;
import org.smslib.modem.ModemGateway;
import org.smslib.modem.SerialModemGateway;
import smslibManager.util.ConfigModem;
public class SmslibserviceStart {
public static final String module = SmslibserviceStart.class.getName();
public static final List<String> modemIds = getModemIds();
private static CommPortIdentifier portId;
public static void startSms() throws Exception{
//OutboundNotification outboundNotification = new OutboundNotification();
InboundNotification inboundNotification = new InboundNotification();
//CallNotification callNotification = new CallNotification();
//GatewayStatusNotification statusNotification = new GatewayStatusNotification();
OrphanedMessageNotification orphanedMessageNotification = new OrphanedMessageNotification();
System.out.println("start sms service");
System.out.println(Library.getLibraryDescription());
System.out.println("Version: " + Library.getLibraryVersion());
List<String> modems=ConfigModem.getModemsConfig();
Service.getInstance().setInboundMessageNotification(inboundNotification);
Service.getInstance().setOrphanedMessageNotification(orphanedMessageNotification);
if(modems==null||modems.isEmpty()){return;}
for (int i = 0; i < modems.size(); i++) {
String modem = modems.get(i);
String modemParam[]=modem.split(",");
String modemId = modemParam[0];
List<String> modemIds=SmslibserviceStart.modemIds;
if(modemIds==null||modemIds.isEmpty()){return;}
boolean modemIdExists=false;
for (int j = 0; j <modemIds.size() ; j++) {
if(modemId.equals(modemIds.get(j))){
modemIdExists=true;
break;
}
}
if(!modemIdExists){continue;}
String serialName = modemParam[1];
int serialBit=Integer.parseInt(modemParam[2]);
String seriaDvice = modemParam[3];
String seriaDviceNum = modemParam[4];
SerialModemGateway gateway = new SerialModemGateway(modemId, serialName, serialBit, seriaDvice, seriaDviceNum);
gateway.setInbound(true);
gateway.setOutbound(true);
// Service.getInstance().setOutboundMessageNotification(outboundNotification);
// Service.getInstance().setCallNotification(callNotification);
// Service.getInstance().setGatewayStatusNotification(statusNotification);
Service.getInstance().addGateway(gateway);
}
try {
Service.getInstance().S.SERIAL_POLLING = true;
Service.getInstance().startService(false);
Collection<AGateway> gateways=Service.getInstance().getGateways();
for (AGateway gateway : gateways) {
Boolean iswork=false;
try {
String gatewayStatus = gateway.getStatus().toString();
if("STARTED".equals(gatewayStatus)){
iswork=true;
}
} catch (Exception e) {
Debug.logError(e.getMessage(), module);
}
if(iswork){
System.out.println();
System.out.println("Modem Information:");
System.out.println(" Manufacturer: " + ((ModemGateway) gateway).getManufacturer());
System.out.println(" Model: " + ((ModemGateway) gateway).getModel());
System.out.println(" Serial No: " + ((ModemGateway) gateway).getSerialNo());
System.out.println(" SIM IMSI: " + ((ModemGateway) gateway).getImsi());
System.out.println(" Signal Level: " + ((ModemGateway) gateway).getSignalLevel() + " dBm");
System.out.println(" Battery Level: " + ((ModemGateway) gateway).getBatteryLevel() + "%");
}
}
} catch (Exception e) {
Debug.logError(e.getMessage(), module);
e.printStackTrace();
}
}
private static List<String> getModemIds(){
List<String> modemIdsList=new ArrayList<String>();
List<String> modems=ConfigModem.getModemsConfig();
Enumeration portList = CommPortIdentifier.getPortIdentifiers();
System.out.println("短信设备端口连接测试...");
while (portList.hasMoreElements())
{
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL)
{
int serialBit=-1;
String modemId="";
for (int i = 0; i < modems.size(); i++) {
String modem = modems.get(i);
String modemParam[]=modem.split(",");
String serialName = modemParam[1];
modemId= modemParam[0];
if(serialName.equals(portId.getName())){
serialBit=Integer.parseInt(modemParam[2]);
break;
}
}
if(serialBit==-1){
System.out.println(" ###################################################################################################");
System.out.println(" name 为"+portId.getName()+" 的设备尚未完全配置");
System.out.println(" ###################################################################################################");
continue;
}
System.out.println("测试串口: " + portId.getName());
System.out.print(" Trying at " + serialBit + "...");
try
{
SerialPort serialPort;
InputStream inStream;
OutputStream outStream;
int c;
String response;
serialPort = (SerialPort) portId.open("SMSLibCommTester", 1971);
serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN);
serialPort.setSerialPortParams(serialBit, 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();
}
modemIdsList.add(modemId);
System.out.println(" ###################################################################################################");
System.out.println(" 发现设备: " +modemId+ response.replaceAll("\\s+OK\\s+", "").replaceAll("\n", "").replaceAll("\r", ""));
System.out.println(" ###################################################################################################");
}
catch (Exception e)
{ System.out.println(" ###################################################################################################");
System.out.println(" id 为"+modemId+" 的设备不能正常工作-1!");
System.out.println(" ###################################################################################################");
}
}
else {
System.out.println(" ###################################################################################################");
System.out.println(" id 为"+modemId+" 的�
- 1
- 2
- 3
- 4
- 5
前往页