Mostrando las entradas con la etiqueta Java. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Java. Mostrar todas las entradas

domingo, 11 de noviembre de 2007

Controlar leds desde el puerto paralelo con Java

Esta es una pequeña guía de como enviar información a algún dispositivo a través del puerto paralelo.
Primero que todo tenemos que instalar la javacomm API
El gran dispositivo al que le quiero mandar información es un protoboard con 8 leds para que se enciendan cuando mande un 1 y se apaguen cuando mande un 0.
La construcción en el protoboard es muy sencilla:
Los pines 2-9 que son los del registro de 8 bits, los conectamos al lado positivo del los leds con una resistencia de 470 ohms el pin 25 a todas las patitas negativas de los leds, los pines 10-11 a tierra de una fuente externa y los pines 12, 13, 15 los conectamos a +5v de una fuente externa, estos son pines de estado, y lo que indican es que todo esta normal, para poder enviar los datos. Si no conectamos estos pines así, la API asumirá que hay algún problema y no se enviaran los datos, se quedara la aplicación congelada, en espera que cambie a estado normal. El programa para controlar los leds es este:
import java.io.*;
import java.util.*;
import javax.comm.*;

/**
*
* @author juls
*/
public class PruebaLeds {

static CommPortIdentifier idPort;
static ParallelPort pPort;
static OutputStream salida;

private static void iniciarPuerto(String nombrePuerto) throws Exception {
try {
idPort = CommPortIdentifier.getPortIdentifier(nombrePuerto);
pPort = (ParallelPort) idPort.open("Control de Puertos en Java", 0x378);
salida = pPort.getOutputStream();
} catch (Exception e) {
throw new Exception(e.getMessage() + "\n\nLa aplicación se cerrará.");
}
}

public static void main(String args[]) {
try {
iniciarPuerto("/dev/parport0");
System.out.println("Puerto iniciado ...");
System.out.println("Preparandose para escribir en el puerto ...");
salida.write(255);
salida.close();
System.out.println("Escritura sobre el puerto exitosa.");
} catch (Exception e) {
System.out.println(e.getMessage());
System.exit(1);
}


}
}
Lo iomprtante en este programa es la linea:
salida.write(255);
porque aqui es donde ponemos el numero que queremos escribir, 255 es en mayor numero que podemos enviarle ya que solo puede escribir 8 bits, con 255 encenderian los 8 leds.

Actualización: Este es el diagrama del circuito, solo puse 3 leds, en realidad pueden ser 8 del pin 2 al 9.

Instalacion de Java Communications API en Linux

javacomm API sirve para comunicarse con dispositivos externos a través del puerto paralelo o serial desde aplicaciones Java, esta disponible para Windows, Linux, Solarias. Estos son los pasos para instalarla y usarla en Linux:
Primero hay que copiar libLinuxSerialParallel.so a /usr/lib
Ahora hay que poner el comm.jar en nuestro classpath, si estamos usando algún IDE lo agregamos en las librerías que usa el proyecto o si no simplemente:
export CLASSPATH=$CLASSPATH:commapi/jar/comm
Por ultimo copiamos el archivo javax.comm.properties a: JDK/jre/lib. Con esto quedaría instalada la API para poderla usar, podemos probar con este ejemplo, que detecta los puertos disponibles:
import javax.comm.*;
import java.util.Enumeration;
public class Main {
public static void main(String args[]) {
Enumeration ports =
CommPortIdentifier.getPortIdentifiers();
while (ports.hasMoreElements()) {
CommPortIdentifier port =
(CommPortIdentifier)ports.nextElement();
String type;
switch (port.getPortType()) {
case CommPortIdentifier.PORT_PARALLEL:
type = "Paralelo"; //Se ejecuta si el puerto es paralelo
break;
case CommPortIdentifier.PORT_SERIAL:
type = "Serial"; //Se ejecuta si el puerto es serial
break;
default:
type = "Desconocido/Error"; //No deberia de suceder o el puerto esta dañado
break;
}
System.out.println("Nombre del puerto: "+port.getName() + " - " + type);
}
}
}

Fuente: http://java.sun.com/products/javacomm/
http://tuxtor.shekalug.org/?p=75

lunes, 30 de abril de 2007

Java Media Framework

JMF es una API que nos sirve para incluir multimedia en nuestras aplicaciones de Java, funciona básicamente, recibiendo el contenido multimedia de alguna fuente, para después procesarlo y entregarlo en alguna salida multimedia.Para entender mejor la arquitectura de JMF en la página de Java nos muestran esta imagen, que es muy ilustrativa y nos ayuda a comprender mejor esta API.
La videocámara y el casete de video que se muestran en esta imagen, como fuente de multimedia bien podría ser un archivo mpg y los dispositivos de salida que en la imagen son una televisión y unas bocinas para nosotros serian el applet en el cual vamos a presentar los contenidos multimedia. Lo único que nos haría falta entonces seria el reproductor.

La manera mas sencilla de poner un reproductor en nuestro applet es utilizando el MediaPlayer Bean.

Instanciamos un Media Player, asi:
MediaPlayer player = new javax.media.bean.playerbean.MediaPlayer():

Para decirle al player que archivo queremos reproducir utilizamos la siguiente linea:
player.setMediaLocation(dirección del archivo);

Para iniciar, detener o pausar la reproducción, usamos las siguientes líneas respectivamente:
player.start();
player.close();
player.stop();

Instalación de JMF en Windows
Podemos descargar el instalador de JMF en:
http://java.sun.com/products/java-media/jmf/2.1.1/download.html
Seguimos los pasos del instalador y al final tendremos los Jar de la API y unos ejemplos en: C:\Program Files\JMF2.1.1e y ya lo tenemos instalado, para empezar a utilizar JMF en nuestras aplicaciones solo tememos que incluir estos Jar en el CLASSPATH.

Utilización de JMF en JDeveloper
Para utilizar esta API en JDeveloper, lo único que debemos hacer es incluir todos los .jar que se instalaron en una librería nueva y agregarla a nuestro proyecto.

Plug-in para mp3
Lo podemos descargar en:
http://java.sun.com/products/java-media/jmf/mp3/download.html
Igual que JMF, solo seguimos la instalación, hay que indicarle donde tenemos nuestro JDK y nuestro JRE y listo, después reproducimos un mp3 como si fuera un mpg o cualquier otro archivo soportado por JMF.