Вы находитесь на странице: 1из 9

UNIVERSIDAD DE LAS FUERZAS

ARMADAS ESPE

Ing. Electrónica e Instrumentación


Cuarto Nivel

TECNOLOGÍA DE SOFTWARE PARA


ELECTRÓNICA

Ing. Alexandra Corral

Alumnos: John Espinoza Mejía


Carlos García
Wilson Llanganate

Fecha: Lunes, 25 de Noviembre del 2013

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


1. TEMA:

Puerto Serial y USB

2. OBJETIVOS:

- Consultar todas las librerías de programación que permitan la comunicación para


puertos seriales y USB.

- Establecer conceptos básicos que nos permitan entender que es un Puerto Serial y
un puerto USB.

3. INTRODUCCIÓN

Hoy en día las computadoras han avanzado bastante desde que se inventó la primera,
y con ellas han avanzado los dispositivos de almacenamiento.
Debido al avance tecnológico se crearon puertos que sirven para recibir y
enviar datos de la computadora a periféricos que estén conectados a ella de una
manera cada vez más rápida y confiable, estos se llaman puertos de comunicación y
actualmente se conoce una gran gama de ellos, los cuales les permiten operar y
comunicarse con dispositivos periféricos intercambiables.
(García, 2008)

4. MARCO TEÓRICO

Puerto serie

Puerto serial, puerto COM, puerto de


comunicaciones y puerto RS-232
("Recomended Standard-232"), hacen
referencia al mismo puerto. Se le
llama serial, porque permite el envío de
datos, uno detrás de otro, mientras que
un paralelo se dedica a enviar los datos
de manera simultánea. La sigla COM es
debido al término ("COMmunications"),
que traducido significa comunicaciones.
Es un conector semitrapezoidal de 9
terminales, que permite la transmisión de datos desde un dispositivo
externo (periférico), hacia la computadora; por ello es denominado puerto. El término
"serial" viene del hecho de que el puerto serie "serializa" los datos. Esto quiere decir
que toma un byte de datos y transmite los 8 bits del byte uno a la vez.

Uno de los defectos de los puertos serie iniciales era su lentitud en comparación con

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


los puertos paralelos, hablamos de 19.2 kbits por segundo sin embargo, con el paso
del tiempo, están apareciendo multitud de puertos serie de alta velocidad que los
hacen muy interesantes. Por ello, el puerto RS-232, e incluso multitud de puertos
paralelos, se están sustituyendo por los nuevos puertos serie como el USB,
el FireWire o el Serial ATA. (Anónimo, s.f.)

API de comunicaciones

API, en java es una Interfaz de


Programación de Aplicaciones (API siglas en
ingles) que da a los programadores la
posibilidad para desarrollar aplicaciones
Java. Así como Java es un lenguaje
orientado a objetos, API nos da un conjunto
de clases utilitarias para efectuar varias
clases de tareas necesarias dentro de un
programa. Y bueno el paquete tiene soporte
para dispositivos en serie y paralelo, y utiliza
una semántica parecida a la que se usa con
streams y eventos. Para comunicarse con un dispositivo serie a través de unos de los
puertos serie de un ordenador, quizás sea la más popular conexión que se realiza en
una PC, ya que nos permite comunicarse con tipos de dispositivos periféricos tales
como módems, impresoras escáneres etc. API de comunicaciones Java, está
constituido por el paquete javax.comm que proporciona JavaSoft pero no está dentro
del JDK; en la última versión de JavaSoft ya viene el API de comunicaciones por lo
que no es necesario que nosotros inicializemos los puertos, en el arranque el API
busca los puertos disponibles y los incorpora automáticamente.

Características del API de comunicaciones

En el paquete de comunicaciones javax.comm tenemos una serie de clases que nos


permiten tratar varios niveles de programación, 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 comunicación.

 Nivel medio: En este nivel tenemos las clases SerialPort y ParallelPort que
cubren el interfaz físico RS-232 para el puerto serie y IEEE-1284 para el puerto
paralelo.

 Nivel bajo: Este nivel ya toca el sistema operativo y en él se encuentra el


desarrollo de drivers.

Los servicios que nos proporciona este paquete son:

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


 Poder obtener los puestos disponibles así como sus características.

 Abrir y mantener una comunicación en los puertos.

 Resolver colisiones entre aplicaciones. Gracias a este servicio podremos tener


varias aplicaciones Java funcionando y utilizando los mismos puertos y no solo
sabremos que el puerto está ocupado sino que podremos saber que aplicación lo
está utilizando.

Programación a alto nivel

Para esta programación contamos con la clase CommPortIdentifier. Nos


encontramos ante la clase principal del paquete ya que lo primero que debemos
hacer antes de empezar a utilizar un puerto es descubrir si está libre para su
utilización; esto se puede realizar con los siguientes métodos:

 getPortIdentifiers(): Es el método utilizado en nuestro programa y que nos


entregará un enumerado con tantos objetos CommPortIdentifier como puertos
dispongamos.

 getPortIdentifier(String): Nos dará el objeto correspondiente al puerto que se le


pase como parámetro. Este método deberá saber tratar la excepción
NoSuchPortException que saltara en el caso de que solicitemos un puerto
inexistente.

Estos métodos nos permitirán obtener información del puerto y abrirlo para poder
iniciar una comunicación.

 getName(): Dará el nombre del puerto. En el caso de haber utilizado el método


getPortIdentifier(String) será el mismo valor que pasamos como parámetro.

 getPortType(): Devuelve un entero que nos informa del tipo de puerto (serie o
paralelo).

 isCurrentlyOwned(): Nos informa si está libre o no el puerto.

 open(String, int): Abre y por lo tanto reserva un puerto; en el caso de que


intentemos abrir un puerto que ya se encuentre en uso saltara la excepción
PortInUseException. Los parámetros que le debemos pasar son un String con el
nombre de la aplicación que reserva el puerto y un int que indica el tiempo de
espera para abrir el puerto.

 addPortOwnershipListener(CommPortOwnershipListener): Permite añadir


una clase que escuche los cambios de propietarios en los puertos.

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


Clase CommPort

Esta es una clase abstracta que describe los métodos comunes de comunicación y
serán las clases que hereden de ellas (SerialPort y ParallelPort) la que añadan
métodos y variables propias del tipo del puerto. Entre los métodos que nos interesa
conocer tenemos:

 close(): Nos permitirá liberar el puerto que se reservó con open.

 getInputStream(): Nos permitirá enlazar la entrada del puerto al InputStream que


nos devuelve para leer del puerto.

 getOutputStream(): Nos permitirá enlazar la salida del puerto al OutputStream


que nos devuelve para poder escribir en el puerto de la misma forma que si se
escribiera en un fichero.

 getInputBufferSize(): Nos informa del tamaño que tiene el buffer de entrada del
puerto. Este tamaño se puede modificar con el método setInputBufferSize(int).

 getOutputBufferSize(): Nos informa del tamaño que tiene el buffer de salida,


como en el caso anterior contamos con un método para modificar el tamaño que
es setOutputBufferSize(int).

Clase SerialPort

La clase SerialPort hereda de la clase abstracta CommPort y por lo tanto cuenta


con sus métodos pero además cuenta con métodos y variables específicas para el
tratamiento de los puertos serie.

 setSerialPortParams(int, int, int, int): Nos permite configurar los parámetros del
puerto serie, este método deberá tratar la excepción
UnsupportedCommOperationException que saltara en el caso de que le
introduzcamos valores no soportados.

Los parámetros del método son:

 La velocidad en el caso de que le pasáramos un valor no valido.


 El segundo parámetro son los bits de datos. Para indicar el valor utilizaremos
las constantes de la clase que se tiene para lo mismo (DATABITS_5,
DATABITS_6, DATABITS_7 o DATABITS_8).
 El bit o bits de stop que utilizaremos y que puede ser 1,2 o uno y medio.
 Paridad que utilizaremos y que puede ser PARITY_NONE en el caso de no
utilizar paridad, PARITY_ODD para la paridad impar, PARITY_EVEN paridad

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


par, PARITY_MARK paridad por marca y PARITY_SPACE paridad por
espacio.

 getBaudrate(): Nos da la velocidad a la que está preparada para transmitir.


 getDataBits(): Nos da la configuración de número de datos
 getParity() indica la paridad que utiliza.
 getFlowControlMode(): Nos da la configuración del control de flujo que se puede
cambiar con el método setFlowControlMode(int) y los valores posibles son:
FLOWCONTROL_NONE 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 control de flujo por software.

 addEventListener(SerialPortEventListener): Nos permite escuchar los cambios


de estado del puerto, si quisiéramos quitar este oyente utilizaríamos el método
removeEventListener(). (Navarro, 2001)

PUERTO USB

Una central USB le permite adjuntar dispositivos periféricos rápidamente, sin


necesidad de reiniciar la computadora ni de volver a configurar el sistema.

El USB trabaja como


interfaz para la
transmisión de datos
y distribución de
energía que ha sido
introducido en
el mercado de PC’s y
periféricos para
mejorar las lentas
interfaces serie y
paralelo.

Los periféricos para puertos USB son reconocidos automáticamente por el


computador (y se configuran casi automáticamente) lo cual evita dolores de
cabeza al instalar un nuevo dispositivo en el PC. Los puertos USB son capaces de
transmitir datos a 12 Mbps.

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


JPICUSB: CLASE JAVA PARA COMUNICACIÓN USB CON PICS
USANDO API DE MICROCHIP

El puerto USB trae consigo muchas ventajas respecto a los antiguos puertos serie
y paralelo, las más notables son:

 Alta tasa de transferencia (mínimo 100 veces mayor al puerto serie)


 Hasta 127 dispositivos conectados en un mismo bus
 Es capaz de alimentar un periférico con 500mA/5V
 Es Plug And Play y Hot Swapable

¿Qué es jPicUSB?

JPicUSB es una clase java, que


utilizando interfaces nativas (JNI),
permite a una aplicación Java hacer
llamados a una librería dinámica, en
este caso (jpicusb.dll). JPicUSB.dll
es una librería que implementa
todas las funciones de la API USB
de Microchip (mpusbapi.dll), con la
diferencia de que está
especialmente recompilada para
permitir a la clase jPicUSB que haga llamados a sus funciones.

Métodos disponibles en JPicUSB

Ficheros que componen al paquete jPicUSB

jpicusb.jar: Interfaz java con la librería dinámica jpicusb.dll

jpicusb.dll: Librería dinámica que contiene todas las funciones de la API USB de
Microchip

javadoc: Carpeta con la documentación de la clase. (Descripción de todos los


métodos)

Tipos de Métodos disponibles en jpicusb.jar

En la clase iface del Paquete jPicUSB podemos distinguir 3 tipos diferentes de


métodos.

 Métodos de inicialización varios: Cargan la librería dinámica y establecen


valores por defecto.
 Métodos generales: Lectura y Escritura de datos a un dispositivo USB, apertura
de una conexión, etc.

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


 Métodos rápidos: Imitan a los métodos generales, pero con menos código para
agilizar el desarrollo.

Métodos de inicialización varios

 static void load(): Carga la librería dinámica jpicusb.dll. Este método debe ser
llamado solo una vez, antes de cualquier llamada a otro método.
 static void set_vidpid(java.lang.String s): Establece el VID&PID utilizado por
defecto en toda llamada a un método rápido.
 static void set_instance(int i): Establece la instancia utilizada por defecto en
toda llamada a un método rápido.

Métodos “rápidos” en la clase jpicusb.jar

Los métodos “rápidos” disponibles son:

 static byte[ ] QRead (int dwLen, long dwMilliseconds): Establece una


conexión al VID&PID por defecto, lee dwLen bytes, con un timeout de
dwMilliseconds milisegundos y luego cierra la conexión. Retorna los bytes
leídos en un arreglo de bytes.
 static long QWrite (byte[ ] pData, int dwLen, long dwMilliseconds):
Establece una conexión al VID&PID por defecto, escribe dwLen bytes del
arreglo pData, con un timeout de dwMilliseconds milisegundos y luego cierra la
conexión. Retorna la cantidad de bytes que se escribieron con éxito.
 static byte[ ] QWriteRead(byte[] pData, int dwLenWrite, int dwLenRead,
long dwMilliseconds): Establece una conexión al VID&PID por defecto,
escribe dwLenWrite bytes del arreglo pData, luego lee dwLenRead bytes, con
un timeout de dwMilliseconds milisegundos y luego cierra la conexión. Retorna
los bytes leídos en un arreglo de bytes.

Métodos generales en la clase jpicusb.jar

Los métodos generales, son aquellos que se comportan igual a las funciones
proporcionadas por la API USB de Microchip, ya que se tratan de las mismas
funciones, recompiladas de tal forma, que puedan ser accedidas desde la librería
jPicUSB en Java.

 static int GetDeviceCount(java.lang.String pVID_PID): Retorna la


cantidad de dispositivos que coinciden con pVID_PID.
 static long Open(int instance, java.lang.String pVID_PID,
java.lang.String pEP, int dwDir, int dwReserved): Retorna una handle
que identifica a la conexión para ser usada con los demás métodos
generales que requieren una conexión previamente establecida.
 static boolean Close(long handle): Cierra la conexión proporcionada.
(Isidro, s.f.)

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral


5. CONCLUSIONES

- Los puertos son una parte esencial de la computadora. Estos puertos han venido
siendo objeto de constante estudio y mejora tecnológica, a fin de obtener un
mejor desempeño en la transmisión de datos, confiabilidad en la integridad de la
información que se suministra, así como una mayor rapidez en la transmisión de la
data.
- El USB es una interface entre la PC y ciertos dispositivos tales como teclado,
Mouse, cámaras e impresoras, el SERIAL es un interface de comunicaciones entre
ordenadores y periféricos.

6. BIBLIOGRAFÍA:

Anónimo. (s.f.). www.informaticammoderna.com. Obtenido de


http://www.informaticamoderna.com/El_puerto_serial.htm

García, L. M. (5 de Marzo de 2008). monografías.com. Obtenido de


http://www.monografias.com/trabajos63/puertos-conectividad-
microcomputador/puertos-conectividad-microcomputador2.shtml

Isidro, G. (s.f.). Obtenido de


http://www.edutecne.utn.edu.ar/microcontrol_congr/comunicaciones/JPICUS.PDF

Navarro, F. J. (16 de Septiembre de 2001). javaHispano. Obtenido de


http://www.javahispano.org/antiguo_javahispano_org/2001/9/16/el-api-comm.html

TECN SOFTWARE PARA ELECTRÓNICA Ing. Alexandra Corral

Вам также может понравиться