SlideShare una empresa de Scribd logo
1 de 4
Descargar para leer sin conexión
Uso de las API PUERTOS

Esta 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ído
de la pagina “tutorial de java tecnology”


Una especificación completa para control y acceso a los puertos serie y
paralelo. Esto facilita mucho los desarrollos, ya que disminuye en gran medida
la carga de trabajo a realizar para el acceso a estos puertos.
Además de proporcionar un protocolo, el modelo ISO de comunicaciones
utilizado por TCP/IP también se aplica en este caso en que hay una capa
elé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 la
transferencia de bytes al módem, tanto en un sentido como en otro. El trabajo
con la capa de Comunicaciones es realmente poco cuando se usa en este
contexto, las tareas a realizar serían:

*Proporcionar al API de Comunicaciones Java control sobre alguno de los
dispositivos. Antes de usar un dispositivo, el API debe conocerlo.

*Abrir el dispositivo y acondicionar la línea a la velocidad, paridad, etc. que
se requiera.

*Escribir o leer algunos datos siguiendo el protocolo especificado para el
dispositivo. Por ejemplo, si hay que comunicarse con una impresora, se
pueden 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ódigo
de la forma de realizar estas tareas.

Inicialización del API con puertos serie
El API de Comunicaciones Java solamente puede controlar puertos de los
cuales tenga conocimiento. En la última versión que JavaSoft ha
proporcionado de este API, no es necesario que se inicialicen los puertos, ya
que en el arranque, el API realiza una búsqueda de los puertos disponibles en
la 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ón
habitual, se pueden añadir explícitamente utilizando código semejante al que
se reproduce a continuación.
// Registro del dispositivo
CommPort 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 Dispositivos
El código que aparece a continuación muestra como se añade, fijan las
características y abre un dispositivo; si el lector necesita detalles específicos
sobre los parámetros de las llamadas a los métodos, debe remitirse a la
documentación del API. El ejemplo fija un dispositivo serie determinado para
que sea accesible con el nombre ControlPuertoSerie. El dispositivo
conectado a esta línea tiene una velocidad de 9600 baudios, 1 bit de parada, 8
bits por carácter y no dispone de paridad, y lo que se pretende es proporcionar
dos canales, o streams, uno para leer y otro para escribir en el dispositivo
conectado a este puerto.
InputStream entrada = null;
OutputStream salida;
SerialPort puertoSerie = null;

public ControlPuertoSerie( String dispositivo,int baudios,int timeout ) throws
Exception {
 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 datos
En el caso del API de Comunicaciones Java, la lectura y escritura no se
diferencia en nada de cualquier llamada a métodos semejantes para realizar
estas 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()
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 ) {}
}
         }
     }
 }
}
como lo único que interesa es la lectura de datos, no se tienen en cuenta
ninguno 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 Puertos
El cierre de los puertos con este API de Comunicaciones no es distinto a otras
peticiones de cierre de dispositivos; aunque en este caso, el cierre es un paso
sumamente importante porque el API de Comunicaciones Java siempre intenta
proporcionar acceso exclusivo a los dispositivos, y si algún canal no se cierra,
no estará disponible para otras aplicaciones. Si se quiere utilizar un dispositivo
para múltiples usuarios sobre una misma línea serie, es necesario emplear un
protocolo que permita multiplexar la información proveniente de cada uno de
ellos.
try {
  entrada.close();
  salida.close();
  } ...

Más contenido relacionado

La actualidad más candente

Trabajo de desarrollo de software(java)yanina y yenny
Trabajo de desarrollo de software(java)yanina y yennyTrabajo de desarrollo de software(java)yanina y yenny
Trabajo de desarrollo de software(java)yanina y yennyyenny isabel cuello moron
 
Codificación. Código Fuente, Objeto y Ejecutable.
Codificación. Código Fuente, Objeto y Ejecutable.Codificación. Código Fuente, Objeto y Ejecutable.
Codificación. Código Fuente, Objeto y Ejecutable.Isabel Gómez
 
presentacion de Aplicaciones de Java
presentacion de Aplicaciones de Javapresentacion de Aplicaciones de Java
presentacion de Aplicaciones de Javaingyon
 
La estructura basica_para_c_
La estructura basica_para_c_La estructura basica_para_c_
La estructura basica_para_c_GamePlayer35
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosInfomania pro
 
Tipos De Ensambladores
Tipos De EnsambladoresTipos De Ensambladores
Tipos De EnsambladoresSpiderHal
 
Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012Gerardo C
 
1 1 4 Consola De Entrada Salida
1 1 4 Consola De Entrada Salida1 1 4 Consola De Entrada Salida
1 1 4 Consola De Entrada SalidaUVM
 
Traducción de un programa: compilación, enlace de un programa, errores en tie...
Traducción de un programa: compilación, enlace de un programa, errores en tie...Traducción de un programa: compilación, enlace de un programa, errores en tie...
Traducción de un programa: compilación, enlace de un programa, errores en tie...Jorge Rodriguez
 
Clase10 ejemplos asm con tasm y tlink
Clase10 ejemplos asm con tasm y tlinkClase10 ejemplos asm con tasm y tlink
Clase10 ejemplos asm con tasm y tlinkInfomania pro
 

La actualidad más candente (18)

Trabajo de desarrollo de software(java)yanina y yenny
Trabajo de desarrollo de software(java)yanina y yennyTrabajo de desarrollo de software(java)yanina y yenny
Trabajo de desarrollo de software(java)yanina y yenny
 
Practica1
Practica1Practica1
Practica1
 
Codificación. Código Fuente, Objeto y Ejecutable.
Codificación. Código Fuente, Objeto y Ejecutable.Codificación. Código Fuente, Objeto y Ejecutable.
Codificación. Código Fuente, Objeto y Ejecutable.
 
Unidad ad 3
Unidad ad 3Unidad ad 3
Unidad ad 3
 
Documeto compilardorcontadorletras
Documeto compilardorcontadorletrasDocumeto compilardorcontadorletras
Documeto compilardorcontadorletras
 
presentacion de Aplicaciones de Java
presentacion de Aplicaciones de Javapresentacion de Aplicaciones de Java
presentacion de Aplicaciones de Java
 
La estructura basica_para_c_
La estructura basica_para_c_La estructura basica_para_c_
La estructura basica_para_c_
 
Clase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptosClase3 guia1-introduccion-compiladores-conceptos
Clase3 guia1-introduccion-compiladores-conceptos
 
Tipos De Ensambladores
Tipos De EnsambladoresTipos De Ensambladores
Tipos De Ensambladores
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012Comunicaciones seriales c# 2012
Comunicaciones seriales c# 2012
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Apuntes de c
Apuntes de cApuntes de c
Apuntes de c
 
1 1 4 Consola De Entrada Salida
1 1 4 Consola De Entrada Salida1 1 4 Consola De Entrada Salida
1 1 4 Consola De Entrada Salida
 
Unidad 2. Lenguaje orientado a objetos
Unidad 2. Lenguaje orientado a objetosUnidad 2. Lenguaje orientado a objetos
Unidad 2. Lenguaje orientado a objetos
 
Compilador
CompiladorCompilador
Compilador
 
Traducción de un programa: compilación, enlace de un programa, errores en tie...
Traducción de un programa: compilación, enlace de un programa, errores en tie...Traducción de un programa: compilación, enlace de un programa, errores en tie...
Traducción de un programa: compilación, enlace de un programa, errores en tie...
 
Clase10 ejemplos asm con tasm y tlink
Clase10 ejemplos asm con tasm y tlinkClase10 ejemplos asm con tasm y tlink
Clase10 ejemplos asm con tasm y tlink
 

Similar a UsoAPIpuertosJava (20)

API Java
API JavaAPI Java
API Java
 
Sockets/ tcp
Sockets/ tcpSockets/ tcp
Sockets/ tcp
 
Sockets java
Sockets javaSockets java
Sockets java
 
Sockets TCP
Sockets TCPSockets TCP
Sockets TCP
 
Comunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccsComunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccs
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Ingresos y salidas de datos JAVA
Ingresos y salidas de datos JAVAIngresos y salidas de datos JAVA
Ingresos y salidas de datos JAVA
 
Sockets tcp
Sockets tcpSockets tcp
Sockets tcp
 
Socket
SocketSocket
Socket
 
Java
JavaJava
Java
 
Presentación tcp y udp
Presentación tcp y udpPresentación tcp y udp
Presentación tcp y udp
 
Sistemas operativos distribuidos ii
Sistemas operativos distribuidos iiSistemas operativos distribuidos ii
Sistemas operativos distribuidos ii
 
Presentación tcp y udp
Presentación tcp y udpPresentación tcp y udp
Presentación tcp y udp
 
ARCHIVOS
ARCHIVOS ARCHIVOS
ARCHIVOS
 
Sockets y servidores
Sockets y servidoresSockets y servidores
Sockets y servidores
 
Protocolo TCP/IP en Linux
Protocolo TCP/IP en Linux Protocolo TCP/IP en Linux
Protocolo TCP/IP en Linux
 
Configuraciones básica en Router Cisco
Configuraciones básica en Router CiscoConfiguraciones básica en Router Cisco
Configuraciones básica en Router Cisco
 
Práctica final tercer parcial
Práctica final  tercer parcialPráctica final  tercer parcial
Práctica final tercer parcial
 
Java - No numérica - II
Java - No numérica - IIJava - No numérica - II
Java - No numérica - II
 
Presentacion aplicaciones en java
Presentacion aplicaciones en javaPresentacion aplicaciones en java
Presentacion aplicaciones en java
 

Más de josue salaltiel avila cauich (16)

APIS MULTIMEDIA
APIS MULTIMEDIAAPIS MULTIMEDIA
APIS MULTIMEDIA
 
Programa 4
Programa 4Programa 4
Programa 4
 
La lógica aplicada a la programacion
La lógica aplicada a la programacionLa lógica aplicada a la programacion
La lógica aplicada a la programacion
 
Programa 8
Programa 8Programa 8
Programa 8
 
Programa 6
Programa 6Programa 6
Programa 6
 
Programa 2
Programa 2Programa 2
Programa 2
 
Programa 10
Programa 10Programa 10
Programa 10
 
Programa 9
Programa 9Programa 9
Programa 9
 
Programa 7
Programa 7Programa 7
Programa 7
 
Programa 5
Programa 5Programa 5
Programa 5
 
Reporte del funfionamiento del dfd
Reporte del funfionamiento del dfdReporte del funfionamiento del dfd
Reporte del funfionamiento del dfd
 
Programa 3
Programa 3Programa 3
Programa 3
 
Programa 1
Programa 1Programa 1
Programa 1
 
Sociedad De La InformacióN mapa Conceptual
Sociedad De La InformacióN mapa ConceptualSociedad De La InformacióN mapa Conceptual
Sociedad De La InformacióN mapa Conceptual
 
Sociedad De InformacióN Y Conocimiento
Sociedad De InformacióN Y ConocimientoSociedad De InformacióN Y Conocimiento
Sociedad De InformacióN Y Conocimiento
 
Sociedad De InformacióN Y Conocimiento
Sociedad De InformacióN Y ConocimientoSociedad De InformacióN Y Conocimiento
Sociedad De InformacióN Y Conocimiento
 

UsoAPIpuertosJava

  • 1. Uso de las API PUERTOS Esta 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ído de la pagina “tutorial de java tecnology” Una especificación completa para control y acceso a los puertos serie y paralelo. Esto facilita mucho los desarrollos, ya que disminuye en gran medida la carga de trabajo a realizar para el acceso a estos puertos. Además de proporcionar un protocolo, el modelo ISO de comunicaciones utilizado por TCP/IP también se aplica en este caso en que hay una capa elé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 la transferencia de bytes al módem, tanto en un sentido como en otro. El trabajo con la capa de Comunicaciones es realmente poco cuando se usa en este contexto, las tareas a realizar serían: *Proporcionar al API de Comunicaciones Java control sobre alguno de los dispositivos. Antes de usar un dispositivo, el API debe conocerlo. *Abrir el dispositivo y acondicionar la línea a la velocidad, paridad, etc. que se requiera. *Escribir o leer algunos datos siguiendo el protocolo especificado para el dispositivo. Por ejemplo, si hay que comunicarse con una impresora, se pueden 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ódigo de la forma de realizar estas tareas. Inicialización del API con puertos serie El API de Comunicaciones Java solamente puede controlar puertos de los cuales tenga conocimiento. En la última versión que JavaSoft ha proporcionado de este API, no es necesario que se inicialicen los puertos, ya que en el arranque, el API realiza una búsqueda de los puertos disponibles en la 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ón habitual, se pueden añadir explícitamente utilizando código semejante al que se reproduce a continuación.
  • 2. // Registro del dispositivo CommPort 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 Dispositivos El código que aparece a continuación muestra como se añade, fijan las características y abre un dispositivo; si el lector necesita detalles específicos sobre los parámetros de las llamadas a los métodos, debe remitirse a la documentación del API. El ejemplo fija un dispositivo serie determinado para que sea accesible con el nombre ControlPuertoSerie. El dispositivo conectado a esta línea tiene una velocidad de 9600 baudios, 1 bit de parada, 8 bits por carácter y no dispone de paridad, y lo que se pretende es proporcionar dos canales, o streams, uno para leer y otro para escribir en el dispositivo conectado a este puerto. InputStream entrada = null; OutputStream salida; SerialPort puertoSerie = null; public ControlPuertoSerie( String dispositivo,int baudios,int timeout ) throws Exception { 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 datos En el caso del API de Comunicaciones Java, la lectura y escritura no se diferencia en nada de cualquier llamada a métodos semejantes para realizar estas 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. 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. } } } } } como lo único que interesa es la lectura de datos, no se tienen en cuenta ninguno 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 Puertos El cierre de los puertos con este API de Comunicaciones no es distinto a otras peticiones de cierre de dispositivos; aunque en este caso, el cierre es un paso sumamente importante porque el API de Comunicaciones Java siempre intenta proporcionar acceso exclusivo a los dispositivos, y si algún canal no se cierra, no estará disponible para otras aplicaciones. Si se quiere utilizar un dispositivo para múltiples usuarios sobre una misma línea serie, es necesario emplear un protocolo que permita multiplexar la información proveniente de cada uno de ellos. try { entrada.close(); salida.close(); } ...