serial puerto para leer envio datos con comunicar java sms serial-port smslib

para - Detecta automáticamente qué puerto Com está conectado a un módem USB GSM con Java



modem gsm para envio de sms (1)

package com.cubepro.util; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.Formatter; import org.apache.log4j.Logger; import org.smslib.helper.CommPortIdentifier; import com.cubepro.general.CommonConstants; import com.cubepro.util.SendMessage; public class CommPortTester { private static final String _NO_DEVICE_FOUND = " no device found"; private final static Formatter _formatter = new Formatter(System.out); private static Logger log = Logger.getLogger(CommPortTester.class); static CommPortIdentifier portId; static Enumeration<CommPortIdentifier> portList; static int bauds[] = { 9600, 14400, 19200, 28800, 33600, 38400, 56000, 57600, 115200 }; public static final String MAINCLASS = "org.smslib.Service"; public CommPortTester() throws Exception { Class.forName(MAINCLASS); } /** * Wrapper around {@link CommPortIdentifier#getPortIdentifiers()} to be * avoid unchecked warnings. */ private static Enumeration<CommPortIdentifier> getCleanPortIdentifiers() { return CommPortIdentifier.getPortIdentifiers(); } public String testAndQualifyPort() throws Exception { String status = CommonConstants.MODEM_STATUS_ERROR; SendMessage sendMessage = new SendMessage(); log.debug("/nSearching for devices..."); portList = getCleanPortIdentifiers(); while (portList.hasMoreElements()) { portId = portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { _formatter.format("%nFound port: %-5s%n", portId.getName()); try { if(portId.getName() boolean comPortSuccess = sendMessage.doIt(portId.getName()); if(comPortSuccess == true){ return portId.getName(); } } catch (final Exception e) { log.debug(" Modem error occured -",e); } } } log.debug("/nTest complete."); return status; } public static void main(String[]args){ try{ CommPortTester tester = new CommPortTester(); tester.testAndQualifyPort(); }catch(Exception e){ e.printStackTrace(); } } }

Escribí una aplicación Java que lee y envía mensajes SMS desde un módem USB GSM. Estoy usando SMSLib (que usa JavaCommAPI), y se ejecuta en Windows. Necesito pasar el puerto COM, que el módem parece estar conectado.

Hasta ahora, he estado buscando el PUERTO COM manualmente utilizando el Administrador de dispositivos de Windows, y lo escribo en un archivo de propiedades. Me pregunto si hay una forma de detectar a qué PUERTO COM, el módem está conectado programáticamente.

  1. Se ahorrará el problema de buscarlo todo el tiempo
  2. El número de puerto cambia si lo desconecto / vuelvo a enchufar a veces

¡¡Gracias!!