Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Uso de las API PUERTOSEsta es un pequeña introducción y tiene los pasos para poder usar API,puertos, es muy sencillo que c...
// Registro del dispositivoCommPort ttya = new javax.comm.solaris.SolarisSerial( "ttya","/dev/ttya" );CommPortIdentifier.a...
permite escribir por el primer puerto serie de la máquina en que se estéejecutando.import java.io.*;import java.util.*;imp...
}         }     } }}como lo único que interesa es la lectura de datos, no se tienen en cuentaninguno de los eventos que ge...
Upcoming SlideShare
Loading in …5
×

Uso de las api puertos

632 views

Published on

API PUERTOS

  • Be the first to like this

Uso de las api puertos

  1. 1. Uso de las API PUERTOSEsta es un pequeña introducción y tiene los pasos para poder usar API,puertos, es muy sencillo que cualquiera puede entender, y esto fue extraídode la pagina “tutorial de java tecnology”Una especificación completa para control y acceso a los puertos serie yparalelo. Esto facilita mucho los desarrollos, ya que disminuye en gran medidala carga de trabajo a realizar para el acceso a estos puertos.Además de proporcionar un protocolo, el modelo ISO de comunicacionesutilizado por TCP/IP también se aplica en este caso en que hay una capaeléctrica, teniendo por encima una capa muy simple de transporte de bytes.Por ejemplo, la pila PPP puede utilizar el API de Comunicaciones Java para latransferencia de bytes al módem, tanto en un sentido como en otro. El trabajocon la capa de Comunicaciones es realmente poco cuando se usa en estecontexto, las tareas a realizar serían:*Proporcionar al API de Comunicaciones Java control sobre alguno de losdispositivos. Antes de usar un dispositivo, el API debe conocerlo.*Abrir el dispositivo y acondicionar la línea a la velocidad, paridad, etc. quese requiera.*Escribir o leer algunos datos siguiendo el protocolo especificado para eldispositivo. Por ejemplo, si hay que comunicarse con una impresora, sepueden enviar los códigos de inicio y fin de trabajo.*Cerrar el puerto.A continuación se verán estos pasos detalladamente, con ejemplos de códigode la forma de realizar estas tareas.Inicialización del API con puertos serieEl API de Comunicaciones Java solamente puede controlar puertos de loscuales tenga conocimiento. En la última versión que JavaSoft haproporcionado de este API, no es necesario que se inicialicen los puertos, yaque en el arranque, el API realiza una búsqueda de los puertos disponibles enla máquina en que se ejecuta y los va incorporando automáticamente.Se pueden inicializar los puertos serie que se vayan a utilizar en la aplicación,y en caso de que la nomenclatura de los dispositivos no siga la convenciónhabitual, se pueden añadir explícitamente utilizando código semejante al quese reproduce a continuación.
  2. 2. // Registro del dispositivoCommPort ttya = new javax.comm.solaris.SolarisSerial( "ttya","/dev/ttya" );CommPortIdentifier.addPort( ttya,CommPortIdentifier.PORT_SERIAL );CommPort ttyb = new javax.comm.solaris.SolarisSerial( "ttyb","/dev/ttyb" );CommPortIdentifier.addPort( ttyb,CommPortIdentifier.PORT_SERIAL );Apertura y Acondicionamiento de DispositivosEl código que aparece a continuación muestra como se añade, fijan lascaracterísticas y abre un dispositivo; si el lector necesita detalles específicossobre los parámetros de las llamadas a los métodos, debe remitirse a ladocumentación del API. El ejemplo fija un dispositivo serie determinado paraque sea accesible con el nombre ControlPuertoSerie. El dispositivoconectado a esta línea tiene una velocidad de 9600 baudios, 1 bit de parada, 8bits por carácter y no dispone de paridad, y lo que se pretende es proporcionardos canales, o streams, uno para leer y otro para escribir en el dispositivoconectado a este puerto.InputStream entrada = null;OutputStream salida;SerialPort puertoSerie = null;public ControlPuertoSerie( String dispositivo,int baudios,int timeout ) throwsException { CommPortIdentifier idPuerto = CommPortIdentifier.getPortIdentifier( dispositivo ); puertoSerie = (SerialPort)idPuerto.openPort( "PuertoSerie",timeout ); puertoSerie.setSerialPortParams( 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1,SerialPort.PARITY_NONE ); puertoSerie.setFlowcontrolMode( SerialPort.FLOWCTRL_NONE ); puertoSerie.enableRcvThreshold( 1 ); puertoSerie.enableRcvTimeout( timeout ); System.out.println( "Dispositivo Serie abierto" ); salida = puertoSerie.getOutputStream(); entrada = puertoSerie.getInputStream();Escritura y Lectura de datosEn el caso del API de Comunicaciones Java, la lectura y escritura no sediferencia en nada de cualquier llamada a métodos semejantes para realizarestas mismas tareas en objetos derivados del uso de streams.Para escribir, se puede hacer:try { salida.write( arraySalida,0,longitud );Y para la lectura de datos, es suficiente con hacer:try { int b = entrada.read()
  3. 3. permite escribir por el primer puerto serie de la máquina en que se estéejecutando.import java.io.*;import java.util.*;import javax.comm.*;public class java_901 { static Enumeration listaPuertos; static CommPortIdentifier idPuerto; static String mensaje = "Tutorial de Java, Comunicaciones Serien"; static SerialPort puertoSerie; static OutputStream salida; public static void main( String[] args ) { listaPuertos = CommPortIdentifier.getPortIdentifiers(); while( listaPuertos.hasMoreElements() ) { idPuerto = (CommPortIdentifier)listaPuertos.nextElement(); if( idPuerto.getPortType() == CommPortIdentifier.PORT_SERIAL ) {// if( idPuerto.getName().equals("/dev/term/a") ) { if( idPuerto.getName().equals("COM1") ) { // Si el puerto no está en uso, se intenta abrir try { puertoSerie = ( SerialPort )idPuerto.open("AplEscritura",2000); } catch( PortInUseException e ) {} // Se obtiene un canal de salida try { salida = puertoSerie.getOutputStream(); } catch( IOException e ) {} // Se fijan los parámetros de comunicación del puerto try { puertoSerie.setSerialPortParams( 9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE ); } catch( UnsupportedCommOperationException e ) {} // Se envía el mensaje try { salida.write( mensaje.getBytes() ); } catch( IOException e ) {}
  4. 4. } } } }}como lo único que interesa es la lectura de datos, no se tienen en cuentaninguno de los eventos que generan las demás señales de control del puerto,solamente aquella que indica que hay datos disponibles para leer.Cierre de PuertosEl cierre de los puertos con este API de Comunicaciones no es distinto a otraspeticiones de cierre de dispositivos; aunque en este caso, el cierre es un pasosumamente importante porque el API de Comunicaciones Java siempre intentaproporcionar acceso exclusivo a los dispositivos, y si algún canal no se cierra,no estará disponible para otras aplicaciones. Si se quiere utilizar un dispositivopara múltiples usuarios sobre una misma línea serie, es necesario emplear unprotocolo que permita multiplexar la información proveniente de cada uno deellos.try { entrada.close(); salida.close(); } ...

×