Sunteți pe pagina 1din 18

PROYECTO DE TECNOLOGIA DEL SOFTWARE TEMA: Manipulacin de leds con nmeros a travs de puerto serial y paralelo.

OBJETIVOS: Realizar un programa en java que permita la manipulacin de envi y recepcin de datos mediante el puerto serial y paralelo de la PC. Conocer el funcionamiento de los diferentes comandos usados en el siguiente proyecto para su buena aplicacin. Entender el funcionamiento de cada librera para nuestro programa. Realizar una interfaz con un circuito elctrico y el puerto paralelo de la PC. Utilizar el lenguaje de programacin Java para habilitar el puerto paralelo de la PC y para controlar la entrada y salida de informacin.

MARCO TERICO: EL PUERTO PARALELO DE UNA PC Desde comienzos el puerto paralelo ha sido la principal interfaz para la conexin de perifricos a la computadora, esto se debe a su versatilidad y a que todas las computadoras poseen al menos uno. Fsicamente el puerto paralelo es identificado por el usuario por su caracterstico conector de 25 pines (hembra). Es importante diferenciar bien el conector paralelo de otros conectores, este trabajo esta orientado totalmente al conector descrito (DB25). Cada puerto paralelo posee una direccin base, es decir, una direccin con la que se identifica el puerto, y segn el tipo de puerto de que se trate podr tener adems otras direcciones (Base+1, Base+2, Base+3, etc.). Actualmente las direcciones por defecto son las siguientes: Puerto LPT1 LPT2 LPT3 Direccin Base 0X378 0X278 0X3BC

El puerto a utilizar en esta prctica es el SPP, que es el puerto ms sencillo, tiene tres buses o registros: En la direccin Base+0, bus de datos, este es de 8 bits y todos sus pines son salidas. En la direccin Base+1, bus de estado, en este registro solo 5 pines se encuentran cableados al conector y todos ellos son entradas, por ultimo, En la direccin Base+2, bus de control, este bus tiene 4 salidas, de las cual tres estn negadas. Direccin Base+0: registro o bus de datos. Direccin Base+1: registro o bus de estado.

Direccin Base+2: registro o bus de control. LPT1 0X378 LPT2 0X278 0X279 0X27A LPT3 0X3BC 0X3BD 0X3BE

Bus de Datos

Bus de Estado 0X379 Bus de Control 0X37A

DESCRIPCION DE LOS PINES DEL PUERTO PARALELO El puerto paralelo de un PC posee un conector de salida del tipo DB25 hembra cuyo diagrama y seales utilizadas podemos ver en la siguiente figura:

Si deseamos escribir un dato en el bus de salida de datos (pin 2 a 9) solo debemos escribir el byte correspondiente en la direccin hexadecimal 0X378 (888 en decimal) cuando trabajamos con el LPT1 y 0x278 (632 en decimal) cuando trabajamos con el LPT2. Los distintos pins (bits) de salida correspondientes al bus de datos no pueden ser escritos en forma independiente, por lo que siempre que se desee modificar uno se debern escribir los ocho bits nuevamente. Para leer el estado de los pins de entrada (10, 12, 13 y 15) se debe realizar una lectura a la direccin hexadecimal 0x379 (889 en decimal) si trabajamos con el LPT1 o bien leer la direccin 0x279 (633 en decimal) si trabajamos con el LPT2. La lectura ser devuelta en un byte en donde el bit 6 corresponde al pin 10, el bit 5 corresponde al pin 12, el bit 4 corresponde al pin 13 y el bit 3 corresponde al pin 15.

PUERTO SERIE

El puerto serie RS-232 que se emplea en las computadoras, PC, mdems, conmutadores (SMDR,CDR), terminales, impresoras , Phone Manager, tiene sus inicios en los aos 60 s por la EIA (Electronics Industries Association de los EE.UU), y fue creado para ofrecer una interfase entre aparatos que requieren comunicacin de Datos, como los arriba mencionados. Los puertos RS-232, tambin conocidos como puertos serie y como puertos COM son uno de los primeros puertos de comunicaciones incorporados a los PC, pero tambin uno de los ms ineficaces. El interfase de este tipo de puerto suele ser de dos tipos, de 9 pines (normalmente sealado como COM1) y de 25 pines (normalmente sealado como COM2), siendo estos conectores de tipo MACHO en la parte del PC. En un principio todas las placas base contaban con ambos tipos de puerto serie. Posteriormente el puerto de 25 pines desapareci y las placas incorporaban 2 puertos de 9 pines (COM1 y COM2) y en la actualidad solo suelen tener un puerto COM de 9 pines, siendo cada vez mas frecuentes las placas que ni siquiera traen este o bien que lo traen en una chapita independiente. La capacidad mxima que se alcanza en este tipo de puerto es de 20Kb/s. En cuanto a la velocidad, en el caso de los puertos RS-232 la unidad de medida es el Baudio, en lugar de utilizar el ms habitual hoy en da de bit por segundo, siendo el ratio de entre 75 baudios y 128000 baudios, aunque los ms utilizados son 9600, 14400 y 19200 baudios. En cuanto a los puertos COM hay que hacer una aclaracin. Los PC reconocen como puerto COM a todo puerto que se crea destinado a comunicaciones (independientemente de su interface), como pueden ser los puertos de comunicacin creados por un BlueTooth. En una computadora puede haber varios puertos series, a los que normalmente se les denomina COM1, COM2, COM3, etc.

DESCRIPCION DEL PUERTO SERIE RS-232 El puerto serie del PC es compatible con el estndar RS-232C. Este estndar fue diseado en los 60s para comunicar un equipo terminal de datos o DTE (Data Terminal Equipment, el PC en este caso) y un equipo de comunicacin de datos o DCE (Data Communication Equipment, habitualmente un modem).

El estndar especifica 25 pins de seal, y que el conector de DTE debe ser macho y el conector de DCE hembra. Los conectores mas usados son el DB-25 macho, pero muchos de los 25 pins no son necesarios. Por esta razn en muchos PC modernos se utilizan los DB-9 macho. Luego, encontrareis uno o ms de estos conectores en el panel trasero del PC. Los voltajes para un nivel lgico alto estn entre -3V y -15V. Un nivel lgico bajo tendr un voltaje entre +3V y +15V. Los voltajes ms usados son +12V y -12V. El conector externo para un puerto serie puede ser de 9 o de 25 pines. Originalmente, el uso primario de un puerto serie era de conectar un modem a la computadora. La asignacin de los pines refleja eso. Echemos una mirada mas cercana a lo que pasa en cada pin cuando un modem es conectado.

CONECTOR DE 9 PINES. 1. Carrier Detect (Portador detector)- Determina si el modem est conectado a una lnea telefnica en funcionamiento. 2. Receive Data (Receptor)- La computadora recibe la informacin enviada por el modem. 3. Transmit Data (Transmisor)- La computadora enva informacin al modem. 4. Data Terminal Ready - La computadora le dice al modem que est listo para hablar. 5. Signal Ground (Tierra)- Este pin es aterrizado. 6. Data Set Ready - El Modem le dice a la computadora que esta listo para hablar. 7. Request To Send (Solicitar para envi)- La computadora le pregunta al modem si esta puede enviar informacin. 8. Clear To Send - El modem le dice a la computadora que ya le puede enviar informacin. 9. Ring Indicator - Una vez que una llamada ha tomado lugar, la computadora reconoce por esta seal (enviada por el modem) que una llamada es detectada.

CONECTOR DE 25 PINES. 1. No utilizado 2. Transmit Data (Transmisor)- La computadora enva informacin al modem. 3. Receive Data (Receptor)- La computadora recibe la informacin enviada por el modem. 4. Request To Send (Solicitar para envio)- La computadora le pregunta al modem si esta puede enviar informacin. 5. Clear To Send - El modem le dice a la computadora que ya le puede enviar informacin. 6. Data Set Ready - El Modem le dice a la computadora que esta listo para hablar. 7. Signal Ground - Este pin es aterrizado. 8. Received Line Signal Detector - Determina si el modem est conectado a una lnea telefnica en funcionamiento. 9. No utilizado 10. No utilizado 11. No utilizado 12. No utilizado 13. No utilizado 14. No utilizado 15. No utilizado 16. No utilizado 17. No utilizado 18. No utilizado 19. No utilizado 20. Data Terminal Ready - La computadora le dice al modem que est lista para hablar. 21. No utilizado 22. Ring Indicator - Una vez que una llamada ha tomado lugar, la computadora reconoce por esta seal (enviada por el modem) que una llamada es detectada. 23. No utilizado 24. No utilizado 25. No utilizado

IMPLEMENTACION: MATERIALES: Dos PCs con puerto serial y paralelo.

Dos conectores RS-232 DB-9 hembra y un cable UTP para unir estos dos conectores. Un conector DB-25 macho y un cable UTP para unir el conector con el proto. 8 leds. protoboard. 8 resistencias de 220 ohm. Tener instalado en la PC el lenguaje de programacin Java.

PROCEDIMIENTO 1. Realizar el siguiente diseo siguiendo las especificaciones en negrilla de la tabla (no utilizamos las dems lneas puesto que no son necesarias en esta prctica).

(A la Computadora 1).

(A la Computadora 2). 9 PINES D-SUB HEMBRA a Computadora 1. 9 PIN D-SUB HEMBRA a Computadora 2. D-Sub 1 D-Sub 2 Receive Data Transmit Data Data Terminal Ready System Ground 2 3 4 5 3 2 6+1 5 4 8 7 Transmit Data Receive Data Data Set Ready + Carrier Detect System Ground Data Terminal Ready Clear to Send Request to Send

Data Set Ready + Carrier Detect 6+1 Request to Send Clear to Send 7 8

2.- Soldar los pines del conector DB-25 macho con el cable UTP segn se indica en la siguiente figura. Implementar en el protoboard el diseo de la figura que se presenta a continuacin.

3. Realizar el programa en JAVA que se especifica a continuacin.

PROGRAMA: INTERFACES GRAFICAS. Envio de Datos mediante Puerto Serial.

Recepcin de Datos mediante Puerto Serial Envio de Datos mediante Puerto Paralelo.

Mediante la primera interfaz grafica se realizara el envio de datos utilizando la comunicacin serial entre las dos PCs. Esta interfaz consta de un cuadro de texto(envio) en el cual se guardara los datos ingresados mediante el teclado formado por un conjunto de botones jbutton segn se especifica en dicha interfaz, adems esta contiene un boton jbuttton(enviar) por medio del cual se transmitir el dato ingresado mediante el puerto serial de la PC. Por ultimo esta interfaz consta de tres elementos adicionales: jScrollPanel, y el jTextArea en los cuales se mostrara los datos enviados desde la otra PC, y el jbutton(salir) para salir del programa. La segunda interfaz grafica consta de un cuadro de texto llamado (envio) en el cual se guardaran los datos enviados desde la primera PC hacia la segunda, dichos datos sern presentados en los leds que se encuentran en el protoboard mediante un jbutton (Enviar por Paralelo) y el puerto paralelo. Por ltimo esta interfaz posee tres elementos adicionales: un jbutton (Enviar por Serial) que nos permitir enviar los datos hacia la otra PC mediante el puerto serial y los otros dos botones que cumplen la misma funcin que la primera interfaz. CODIGO DEL PROGRAMA Envio de Datos mediante Puerto Serial CLASE conectarse package chatserial; import java.io.*; import java.util.*; import javax.comm.*; public class conectarse { public static OutputStream out; public static CommPortIdentifier IDpuerto; public static CommPort conPuerto; public static SerialPort pserial; public conectarse() { } void coneccion(String comm) throws Exception { IDpuerto = CommPortIdentifier.getPortIdentifier(comm); if(IDpuerto.isCurrentlyOwned()) System.out.println("El puerto esta en uso"); else{ conPuerto = IDpuerto.open(this.getClass().getName(),2000); if(conPuerto instanceof SerialPort) { pserial = (SerialPort) conPuerto; int a = 9600; int b = SerialPort.DATABITS_8;

pserial.setSerialPortParams(a,b,SerialPort.STOPBITS_1,SerialPort.PARITY_NONE); InputStream in = pserial.getInputStream(); out = pserial.getOutputStream(); (new Thread(new SerialReader(in))).start(); } else System.out.println("Error en el puerto"); } } public void es(){ try{ (new Thread(new SerialWriter(out))).start(); } catch(Exception ex) {} } }

class SerialReader implements Runnable { InputStream in; public SerialReader( InputStream in ) { this.in = in; } public void run() { byte[] buffer = new byte[1024]; int len = -1; String text,ant; System.out.println("Se leyo dato"); try { while ( ( len = this.in.read(buffer)) > -1 ) { ant = chatserial.serie.pantalla.getText(); text = new String(buffer,0,len); chatserial.serie.pantalla.setText(ant+""+text); } } catch ( IOException e ) { e.printStackTrace(); }

} } class SerialWriter implements Runnable { OutputStream out; String t; public SerialWriter( OutputStream out ) { this.out = out; } public void run() { try { System.out.println("Si se envio"); t ="\n"+chatserial.serie.envio.getText(); this.out.write(t.getBytes()); } catch (IOException e ) { e.printStackTrace(); } } } class DataThread extends Thread { InputStream inStream; OutputStream pStream; DataThread(InputStream is, OutputStream os) { inStream = is; pStream = os; } public void run() { byte ch = 0; try { while ((ch = (byte)inStream.read()) != -1) pStream.write((char)ch); } catch (IOException e) { System.err.println("Input or output error: " + e); return; } } } FORMULARIO serie

package chatserial; import chatserial.conectarse.*; public class serie extends javax.swing.JFrame { conectarse conectarse = new conectarse(); public serie() { initComponents(); } private void jButton10MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"0"); } private void jButton9MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"9"); } private void jButton8MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"8"); } private void jButton7MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"7"); } private void jButton6MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"6"); } private void jButton5MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"5"); } private void jButton4MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"4"); } private void jButton3MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"3"); } private void jButton2MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"2"); }

private void jButton1MouseClicked(java.awt.event.MouseEvent evt) { pantalla.setText(pantalla.getText()+"1"); } private void salirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } private void enviarMouseClicked(java.awt.event.MouseEvent evt) { conectarse.es(); String te = pantalla.getText()+"\nUsuario : " +envio.getText(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new serie().setVisible(true); try{ conectarse conectarse = new conectarse(); conectarse.coneccion("COM1"); } catch(Exception e){ System.out.println("Error de conexion"); e.printStackTrace(); } } }); }

Recepcin de Datos mediante Puerto Serial Envio de Datos mediante Puerto Paralelo. CLASE conectarse El cdigo es el mismo que en el envio de datos mediante el puerto serial. FORMULARIO serie

package chatserial; import jnpout32.*; import chatserial.conectarse.*; public class serie extends javax.swing.JFrame { static short valor = 0; static short direccion2 = 0x379; static short direccion3 = 0x37A; public static pPort puertoParalelo = new pPort(); conectarse conectarse = new conectarse(); public serie() { initComponents(); } private void paraleloMouseClicked(java.awt.event.MouseEvent evt) { try { valor = (short)Integer.parseInt(envio.getText()); puertoParalelo.output(valor); envio.setText(""); } catch(Exception e) { System.out.println("Error en el envio"); } } private void salirActionPerformed(java.awt.event.ActionEvent evt) { System.exit(0); } private void enviarActionPerformed(java.awt.event.ActionEvent evt) { } private void enviarMouseClicked(java.awt.event.MouseEvent evt) { conectarse.es(); String te = pantalla.getText()+"\nUsuario : " +envio.getText(); } public static void main(String args[]) {

java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new serie().setVisible(true); try{ conectarse conectarse = new conectarse(); conectarse.coneccion("COM1"); } catch(Exception e){ System.out.println("Error de conexion"); e.printStackTrace(); } } }); }

CONCLUSIONES: Se diseo simultanea. Se diseo e implemento una interfaz HMI capaz de controlar el envio e implement una interfaz grfica capaz de comunicar dos

computadoras a travs de sus puertos serial, transmitiendo y recibiendo de manera

(mediante el puerto paralelo de la PC) de datos hacia un circuito externo formado por un conjunto de 8 leds.

Se comprob el buen funcionamiento del programa realizado en Java el cual resulto exitoso para la habilitacin del puerto paralelo y serie de las PCs, as como para el control de la entrada y salida de datos mediante dichos puertos. Dicho funcionamiento tambin se verifico mediante la visualizacin de los leds. Nos familiarizarnos con la conexin y programacin del puerto paralelo y serie, as como tambin con todos los mtodos y libreras necesarias, fuentes de conocimiento y vital importancia en la realizacin de este trabajo.

RECOMENDACIONES: Antes de enviar informacin de una PC a otra verificar que los puertos serie habilitados para cada PC sean los mismos, as como la velocidad de transmisin, paridad y los dems parmetros. Tenemos que tomar muy en cuenta al momento de la instalacin de los drivers ya que si nos equivocamos en esto no va a funcionar nuestro programa como se desea. Algo muy importante que se tiene que tener en cuenta es que se debe habilitar los puertos para el envo y recepcin de datos. Tenemos que ser muy cautelosos al momento de soldar los cables de conexin con sus respectivos conectores y sus pines para tener una buena transmisin.

BIBLIOGRAFA: 1. Apuntes de Clases de Tecnologa de Software 2. Wikipedia.com 3. http://www.virtual.unal.edu.co/cursos/ingenieria/2000477/lecciones/031001.htm 4. http://html.rincondelvago.com/alu_1.html

5. http://www.virtual.unal.edu.co/cursos/ingenieria/2001771/cap07/07_03_01.html 6. http://www.romalo.250x.com/informacion/logcomp/

S-ar putea să vă placă și