Académique Documents
Professionnel Documents
Culture Documents
Programacin Avanzada .
Ingeniera Mecatrnica.
Introducion. Conectores DB25. El conector DB25 es un conector analgico de 25 clavijas de la familia de conectores D-Subminiature . Al igual que el conector DB9, el conector DB25 se utiliza principalmente para conexiones en serie, ya que permite una transmisin asncrona de datos segn lo establecido en la norma RS-232. Tambin se utiliza para conexiones por el puerto paralelo. En un principio se utiliz para conectar impresoras y por este motivo, se le conoce como el "puerto de impresora". Entonces, para evitar confusiones, los puertos de serie DB25 de los equipos generalmente tienen conectores machos, mientras que los conectores de puerto paralelo son conectores hembra DB25. Clavijas en conexin en paralelo (Fig.1).
Nmero de clavija Nombre 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 _STR: Strobe D0 - Bit de datos 0 D1: Bit de datos 1 D2: Bit de datos 2 D3: Bit de datos 3 D4: Bit de datos 4 D5: Bit de datos 5 D6: Bit de datos 6 D7: Bit de datos 7 ACK: Reconocimiento de transmisin Ocupado Sin papel Seleccionar Alimentacin automtica Error
16 17 18 19 20 21 22 23 24 25
Reinicio Seleccionar entrada de datos Conexin a tierra Conexin a tierra Conexin a tierra Conexin a tierra Conexin a tierra Conexin a tierra Conexin a tierra Conexin a tierra
Objetivo. Controlar un puerto paralelo DB25 mediante el programa netbeans para lograr el encendido y apagado de 8 leds. Material utilizado. Cable del puerto paralelo. 1 Protoboard. 8 resistencias de 330 ohms. 8 leds. Cable de conexin.
Resumen. En este proyecto mediante investigacin se reviso un programa para poder controlar un puesto DB25 esto mediante la utilizacin del software netbeans para crear un projecto en java, al obtener el programa que se deseaba implementar se prosigui al armado de un circuito que consista en ocho leds con su respectiva resisitencia para controlar la luminosidad y proteccin.
Programa en Netbeans. Codigo 1. package moverleds; /* * Clase encargada de manipular el byte de salida */ public class Byte { private int nByte; private String binario; public Byte(){ nByte=0; binario=""; } public void incrementarByte(){ if(nByte==128){ nByte=1; } else{//de lo contrario nByte=nByte==0?nByte=1:nByte*2; //si byte es igual a 0 entonces byte= 1, si no se multiplica byte*2 para incrementarlo } } public void decrementarByte(){ if(nByte==1){//si valor actual del byte es 1 nByte=128;//se desplaza al valor 128 //decrementa el byte //si el valor actual byte es de 128 //se regresara el valor a 1 //incremento del byte //se instancia el byte //guarda la cadena binaria
nByte=nByte==0?nByte=128:nByte/2; //si byte=0 entonces byte= 128, si no se divide byte/2 para decrementarlo } } // valor actual de byte public int getByte(){ return nByte; } //se obtiene la cadena binaria public String getBinario(){ binario="00000000"; String binarioTemp=Integer.toBinaryString(nByte); //se convierte byte a una cadena binaria int indice=(binario.length()-binarioTemp.length()); donde se cortara la cadena binaria binario=binario.substring(0, indice); //se obtiene el indice
binario+=binarioTemp; //se concatena la subcadena binaria con binarioTemp return binario; } } Cdigo 2. package moverleds; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; //se regresa binario
/** * Clase encargada de los eventos del teclado */ public class EscuchaTeclado implements KeyListener{ private Byte byteSalida; private GUIMoverLeds gui ; //se manda llamar la clase Byte //se manda llamar la clase GUIMoverLeds
public EscuchaTeclado(GUIMoverLeds gui){ byteSalida=new Byte();//se inicia la clase Byte this.gui=gui;//se hace referencia a la clase GUIMoverLeds }
gui.campoBinario.setText(byteSalida.getBinario()+" n="+byteSalida.getByte()); //se muestra el valor de byte en pantalla gui.puertoParalelo.escribirPuerto(byteSalida.getByte());//se escribe el byte en el puerto paralelo }
//si se oprime
gui.campoBinario.setText(byteSalida.getBinario()+" n="+byteSalida.getByte());//se muestra el valor del byte en pantalla gui.puertoParalelo.escribirPuerto(byteSalida.getByte()); //se escribe el byte en el puerto paralelo } }
public void keyReleased(KeyEvent e) { } } Codigo3. package moverleds; import gnu.io.CommPortIdentifier; import gnu.io.ParallelPort; import java.io.IOException; import java.io.OutputStream; /** * Clase encargada de conectar con el Puerto Paralelo */ public class PuertoParalelo { private String puerto; private boolean estado; private CommPortIdentifier idPort; //nombre del puerto al que se conectara //muestra el estado del puerto paralelo //identificador de puertos
private ParallelPort puertoParalelo; private OutputStream salida; public PuertoParalelo(){ puerto=""; estado=false; }
public boolean abrirPuerto(String nombrePuerto){ if(puertoAbierto()==false){ this.puerto=nombrePuerto; //se obtiene el nombre del puerto al que se conectara el puerto paralelo try { idPort = CommPortIdentifier.getPortIdentifier(puerto);//se identifica el puerto puertoParalelo=(ParallelPort) idPort.open("PuertoParaleloRott", 0x378); //se abre el puerto paralelo salida = puertoParalelo.getOutputStream();//se obtiene el flujo de salida estado=true; System.out.println("Puerto "+puerto+" iniciado ..."); escribirPuerto(0); } catch (Exception e) { System.out.println(e); } } return estado; }
public boolean cerrarPuerto(){ if(puertoAbierto()){ try { escribirPuerto(0); salida.close(); puertoParalelo.close(); estado=false; } catch (Exception e) { System.out.println(e); } System.out.println("Puerto "+puerto+" cerrado ..."); } return estado; } //se optiene el estado del puerto public boolean puertoAbierto(){ return estado; } //se envian datos en puerto paralelo public void escribirPuerto(int dato){ if(puertoAbierto()){ try { salida.write(dato); //se escribe en el puerto } catch (IOException ex) { //se cierra el flujo de salida //se cierra el puerto
// } } } }
System.out.println(ex);
/** * Interfaz Grafica de Usuario de MoverLeds */ public class GUIMoverLeds extends javax.swing.JFrame { /** Creates new form GUIMoverLeds */ protected PuertoParalelo puertoParalelo; public GUIMoverLeds() { puertoParalelo=new PuertoParalelo();//se inicializa el PuertoParalelo initComponents(); chActivar.addKeyListener(new EscuchaTeclado(this @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { } //se instancia el PuertoParalelo
jLabel1 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); campoBinario = new javax.swing.JTextField(); chActivar = new javax.swing.JCheckBox(); canvas1 = new java.awt.Canvas(); canvas2 = new java.awt.Canvas(); canvas3 = new java.awt.Canvas(); canvas4 = new java.awt.Canvas(); jLabel3 = new javax.swing.JLabel(); bCerrar = new javax.swing.JButton(); bAbrir = new javax.swing.JButton(); jButton5 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jLabel1.setFont(new java.awt.Font("Agency FB", 1, 14)); // NOI18N jLabel1.setForeground(new java.awt.Color(102, 102, 255)); jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); jLabel1.setText("Mover Leds con el Puerto Paralelo"); jPanel2.setBackground(new java.awt.Color(102, 255, 255)); jPanel2.addPropertyChangeListener(new java.beans.PropertyChangeListener() {
public void propertyChange(java.beans.PropertyChangeEvent evt) { jPanel2PropertyChange(evt); } }); jPanel2.addAncestorListener(new javax.swing.event.AncestorListener() { public void ancestorMoved(javax.swing.event.AncestorEvent evt) { } public void ancestorAdded(javax.swing.event.AncestorEvent evt) { jPanel2AncestorAdded(evt); } public void ancestorRemoved(javax.swing.event.AncestorEvent evt) { } });
jLabel2.setText("Binario:");
campoBinario.setEditable(false); campoBinario.setHorizontalAlignment(javax.swing.JTextField.CENTER);
chActivar.setText("Activar"); chActivar.setEnabled(false); chActivar.setOpaque(false); chActivar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { chActivarActionPerformed(evt);
} });
DV6-
bCerrar.setText("Cerrar Puero"); bCerrar.setEnabled(false); bCerrar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bCerrarActionPerformed(evt); } });
bAbrir.setText("Abrir Puerto"); bAbrir.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { bAbrirActionPerformed(evt); } });
jButton5ActionPerformed(evt); } });
jPanel2Layout
new
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addComponent(jLabel2) .addGap(18, 18, 18) .addComponent(campoBinario) .addContainerGap()) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addGap(0, 0, Short.MAX_VALUE)
.addComponent(canvas1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(284, 284, 284)) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() .addComponent(canvas2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(103, 103, 103)))) .addGroup(jPanel2Layout.createSequentialGroup() .addComponent(chActivar)
.addGap(0, 0, Short.MAX_VALUE))) .addGap(18, 18, 18) .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 271, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(134, 134, 134)) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(209, 209, 209) .addComponent(canvas3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(0, 267, Short.MAX_VALUE) .addComponent(canvas4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(0, 267, Short.MAX_VALUE))) ); jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel2)) .addComponent(campoBinario, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addComponent(chActivar)) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(56, 56, 56) .addComponent(jButton5)))
20,
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)) .addGroup(jPanel2Layout.createSequentialGroup()
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addComponent(canvas3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(90, 90, 90) .addComponent(canvas1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignmen t.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() .addGap(0, 158, Short.MAX_VALUE) .addComponent(canvas4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
jPanel1Layout
new
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
new
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 417, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(278, Short.MAX_VALUE)) );
private void chActivarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: }
private void bAbrirActionPerformed(java.awt.event.ActionEvent evt) { if(puertoParalelo.abrirPuerto("LPT1")){//se abre el PuertoParalelo LPT1 bCerrar.setEnabled(true); chActivar.setEnabled(true); bAbrir.setEnabled(false); } }
bAbrir.setEnabled(true); } }
private void jPanel2AncestorAdded(javax.swing.event.AncestorEvent evt) { } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new GUIMoverLeds().setVisible(true); } }); }
// Variables declaration - do not modify private javax.swing.JButton bAbrir; private javax.swing.JButton bCerrar; public javax.swing.JTextField campoBinario; private java.awt.Canvas canvas1; private java.awt.Canvas canvas2; private java.awt.Canvas canvas3; private java.awt.Canvas canvas4;
public javax.swing.JCheckBox chActivar; private javax.swing.JButton jButton5; private javax.swing.JColorChooser jColorChooser1; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; // End of variables declaration
Conclusiones. Colunga Montoya Martn. En este proyecto se logr controlar un puerto paralelo DB25 mediante la utilizacin del programa Netbeans para crear un proyecto y mediante los comandos que se nos haban enseado en clase se pudo entender cmo es que el programa funcionaba con esto me doy una idea de que hay una gran variedad de aplicaciones que se le pueden dar a los programas creados en este programa tambin tomando en cuenta cual es que se desea que sea la finalidad de este ya que como en este caso controlamos un hardware pero tambin puede ser solo simulado o mediante la utilizacin de emuladores para crear lo que sera una simulacin de que se est utilizando el hardware a pesar de que no exista tal.
Referencias.
http://es.kioskea.net/contents/175-conector-db25 http://hch-hch.blogspot.mx/2012/02/mover-leds-con-el-puerto-paralelo-en.html Librerias del programa Netbeans.