API de Comunicaciones

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 36

CAPITULO X

COMUNICACION CON EL PC

Ing. Darwin Alulema

API Java Communications


El API Java Communications es un paquete opcional para la plataforma Java 2. Proporciona soporte para comunicacin con dispositivos perifricos a travs de los puertos serie y paralelo de un ordenador. Es un API especial en el sentido de que aunque est bien definido multi-plataforma, debe descargarse una versin especfica de las libreras COMM para utilizarlo realmente.
Ing. Darwin Alulema 2

API Java Communications


El API COMM no incluye soporte para comunicacin sobre puertos Universal Serial Bus (USB) . El soporte para los puertos USB se proporcionara en un API separado que est ahora mismo bajo revisin pblica a travs del Java Community Process (JCP).

Ing. Darwin Alulema

API Java Communications


Instalacin del API de Comunicaciones de java para Windows:
comm.jar \jdk1.6\jre\lib\ext win32com.dll \jdk1.6\bin javax.comm.properties \jdk1.6\jre\lib

Ing. Darwin Alulema

API Java Communications


El paquete proporciona soporte para dispositivos serie y paralelo al estilo Java, es decir, utilizando una semntica semejante a la que se usa con streams y eventos. Para comunicarse con un dispositivo serie a travs de uno de los puertos serie de un ordenador, desde una aplicacin Java o un applet, es necesario un interfaz. El API de Comunicaciones Java, permite transmitir y recibir datos a travs de dispositivos conectados al puerto serie; proporcionando adems un conjunto de opciones que permiten la configuracin de todos los parmetros asociados a los puertos serie y paralelo.

Ing. Darwin Alulema

API Java Communications


En el paquete de comunicaciones javax.com tenemos una serie de clases que nos permiten tratar varios niveles de programacin, estos niveles son los siguientes:
Nivel alto: En este nivel tenemos las clases CommPortIdentifier y CommPort que nos permiten el acceso a los puertos de comunicacin
Ing. Darwin Alulema 6

API Java Communications


Nivel medio: Con las clases SerialPort y ParallelPort que cubren el interfaces fsico RS-232 para el puerto serie y IEEE 1284 para el puerto paralelo. Nivel bajo: Este nivel toca el sistema y en el se encuentra el desarrollo de drivers.

Ing. Darwin Alulema

API Java Communications


Los servicios que nos proporciona este paquete son:
Poder obtener los puestos disponibles as como us caractersticas. Abrir y mantener una comunicacin en los puertos. Resolver colisiones entre aplicaciones.

Ing. Darwin Alulema

API Java Communications


CLASE CommPort Esta es una clase abstracta que describe los mtodos comunes de comunicacin y sern las clases que heredan de ellas(SerialPort y ParallelPort) la que aaden mtodos y variables propias del tipo del puerto.
Ing. Darwin Alulema 9

API Java Communications


Disponemos de mtodos para el control de los puertos de entrada/salida a bajo nivel, de esta forma no solo nos limitamos a enviar y rebir datos sino que podemos saber en que estado est el puerto.

Ing. Darwin Alulema

10

API Java Communications


getPortIdentifiers().- Este mtodo entrega un enumerado con tantos objetos CommPortIdentifier como puertos se disponga. getPortType().- Devuelve un entero que informa el tipo del puerto (serie o paralelo), se dispone de las constantes PORT_PARALLEL Y PORT_SERIAL.
Ing. Darwin Alulema 11

API Java Communications


isCurrentOwned().- Informa si esta libre o no el puerto, en el caso de que est ocupado podemos saber quien lo est utilizando mediante el mtodo getCurrentOwner(). open(String, int).- Abre y por lo tanto reserva un puerto, en el caso de que se intente abrir un puerto que este siendo utilizado saltar la excepcin PortInUseException. Los parmetros son un String con el nombre de la aplicacin que reserva el puerto y un int que indica el tiempo de espera para abrir el puerto.
Ing. Darwin Alulema 12

API Java Communications


addPortOwnershipListener(CommPortOwnershipList ener).- Permite aadir una clase que escuche los cambios de propietarios en los puertos. close().- Permite liberar el puerto que se reserv con open, este notificar el cambio de dueo a las clases que se hubiesen registrado con el mtodo addPortOwnershipListener. getOutputStream().- Permite enlazar la salida del puerto al OutputStream que devuelve para poder escribir en el puerto de la misma forma que si escribiera en un fichero.

Ing. Darwin Alulema

13

API Java Communications


getInputBufferSize().- Informa el tamao que tiene el buffer de entrada del puerto. Ese tamao se puede modificar con el mtodo setInputBufferSize(int). Estos mtodos no siempre dan el resultado esperado ya que la memoria disponible y el sistema operativo quien al final decida si realizar o no correctamente la operacin.
Ing. Darwin Alulema 14

PRACTICA 1
Para encontrar qu puertos hay instaldados, preguntamos al CommPortIdentifier por el conjunto instalado con getPortIdentifiers(). Esto devuelve una Enumeration de objetos CommPortIdentifier. Cada objeto es del tipo PORT_PARALLEL o PORT_SERIAL, dos constantes de la clase CommPortIdentifier.
Ing. Darwin Alulema 15

Ing. Darwin Alulema

16

API Java Communications


CLASE SerialPort En esta clase encontramos la interfase de bajo nivel del puerto serie que cumple con el estndar RS-232. La clase SerialPort hereda de la clase abstracta CommPort y por lo tanto cuenta con sus mtodos pero adems de estos dispone de otros mtodos y variables especficas para el tratamiento de los puerto serie.

Ing. Darwin Alulema

17

API Java Communications


setSerialPortParam(int, in, int).- Permite configurar los parmetros del puerto serie, estemtodo deber tratar la excepcin UnsupportedCommOperationException que saltar en el caso de que le introduzcamos valores no soportados.

Ing. Darwin Alulema

18

API Java Communications


Los parmetros son: La velocidad Bits de datos, para indicar el valor se utiliza las constantes de la clase (DATA_5, DATA_6, DATA_7, DATA_8) Bit o bits de stop, que puede ser 1, 2 o 1,5. Las constantes que definen estas configuraciones son: STOPBITS_1, STOBITS_2 y STOPBIT_1_5. Paridad, que puede ser PARITY_NOME en el caso de no utilizar paridad, PARITY_ODD para la paridad impar, PARITY_EVEN paridad par, PERITY_MARK paridad por marca y PARITY_SPACE paridad por espacio.

Ing. Darwin Alulema

19

API Java Communications


getFlowControlMode().- da la configuracin del control de flujo que se puede cambiar con el mtodo setFlowControlMode(int) y los valores posibles son: FLOWCONTROL_NOME no existe control de flujo, (FLOWCONTROL_RTSCTS_IN o FLOWCONTROL_RTSCTS_OUT) para el control de flujo por hardware y (FLOWCONTROL_XONXOFF_IN o FLOWCONTROL_XONXOFF_OUT) para el conrol de flujo por software.
Ing. Darwin Alulema 20

API Java Communications


addEventListener(SerialPortEventEventLis tener).- permite escuchar los cambios de estado del puerto.

Ing. Darwin Alulema

21

API Java Communications


CLASE ParallelPort En esta clase se tiene la interfaz de ajo nivel del puerto paralelo que cumple la norma IEEE 1284. Este estndar permite trabajar con 5 modos de funcionamiento. La clase ParallelPort es una clase que hereda de CommPort, y cuenta con una serie de mtodos que facilitan el uso del puerto.
Ing. Darwin Alulema 22

API Java Communications


addEventListener(ParallelPortEventList ener ev).- mediante este mtodo podemos asignar a un oyente para cuando aparezca un error en el puerto no lo modifique, exactamente informa cuando el buffer de salida este lleno o cuando la impresora indique un error.

Ing. Darwin Alulema

23

API Java Communications


getOutputBufferFree().- informa de los bytes que tenemos disponible en el buffer de salida. isPaperOut().- Devuelve un valor de true en el caso de que no tenga papel la impresora, es lo mismo que preguntar por el estado de la seal PAPER EMTY.

Ing. Darwin Alulema

24

API Java Communications


isPrinterBusy().- Devuelve un valor de true en el caso de que la impresora este ocupada y se corresponde con el estado BUSY. isPrintedSelected().- Informa si a impresora est seeccionada isPrintedError().- Chequea si ocurre un error en la impresora y esto se refleja con el estado ERROR que est en el pin 15. restart().- realiza un reset en la impresora.

Ing. Darwin Alulema

25

API Java Communications


getMode().- Indica el modo configurado del puerto paralelo y los valores son:
LPT_MODE_SPP modo compatible unidireccional LPT_MODE_PS2 modo Byte LPT_MODE_EPP modo extendido LPT_MODE_ECP modo mejoado LPT_MODE_nNIBBLE modo nibble
Ing. Darwin Alulema 26

API Java Communications


setMode(int).- Configura el modo del puerto paralelo, los valores que puede tomar son los anteriores y ademas LPT_MODE_ANY que ser el mejor modo disponible.

Ing. Darwin Alulema

27

PRACTICA 2
En el caso del API de Comunicaciones Java, la lectura y escritura no se diferencia en nada de cualquier llamada a mtodos semejantes para realizar estas mismas tareas en objetos derivados del uso de streams.

Ing. Darwin Alulema

28

PRACTICA 2
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() ; A continuacin un ejemplo muy simple que permite escribir por el primer puerto serie de la mquina en que se est ejecutando.
Ing. Darwin Alulema 29

PRACTICA 2

Ing. Darwin Alulema

30

PRACTICA 2

Ing. Darwin Alulema

31

PRACTICA 2
Para la practica utilizaremos el terminal de comunicaciones de Windows, y se configurar con los mismos parametros con los que se haya seteado nuestro programa de prueba del puerto serie.

Ing. Darwin Alulema

32

PRACTICA 2

Ing. Darwin Alulema

33

PRACTICA 2

Ing. Darwin Alulema

34

PUERTO PARALELO
Otra forma de acceder a los puertos es mediante JNI, es decir a partir de una .dll, la cual es especfica para la plataforma de windows. Es as que se puede utilizar el archivo jnpout32.dll, instalandolo en el System32 de Windows, el cual es el que permite utilizar el puerto paralelo tanto para escritura como para lectura. Ademas el archivo jnpout32pkg, se debe agregar en la carpeta de las librerias del proyecto.
PuertoParalelo\dist\lib \jdk1.6\jre\lib\ext
Ing. Darwin Alulema 35

PUERTO PARALELO
output(short port,short value).- este mtodo permite el envio de datos a traves del puerto. Este mtodo esta sobre cargado, por lo que requiere un variable de tipo short (16 bits), output(short value), y/o el puerto por el que se desee enviar la informacin. input(short port).- Este mtodo lee el puerto que se indique y devuelve un valor de tipo short.

Ing. Darwin Alulema

36

También podría gustarte