lunes, 12 de noviembre de 2007

Ubuntu 7.10 is here

No me refiero al lanzamiento que fue hace tanto tiempo, me refiero a que ya vino a mi casa el pedido que hice.
Esta vez no tardaron tanto!!! los 2 cd's de Ubuntu que pedí ahora si me los mandaron a tiempo. Aunque ya había descargado la imagen desde el día del lanzamiento, estos me van a servir para regalar libertad.

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

jueves, 1 de noviembre de 2007

Instalar Turboprint en Sabayon

En Ubuntu uso Turboprint para imprimir con mi PIXMA iP1600 aunque solo se puede imprimir a baja calidad con la versión de prueba pero me funciona muy bien.
Estos son los pasos para instalar Turboprint en Sabayon:
emerge layman

Después de esto sale que hay que actualizar un config file:
IMPORTANT: 1 config files in '/etc' need updating.
* See the CONFIGURATION FILES section of the emerge
* man page to learn how to update config files.

Entonces ejecutamos el siguiente comando:
etc-update

Ahora hacemos Sync con el siguiente comando:
layman -S

Ahora:
layman -a xwing

y ya podemos hacer emerge:
emerge -av turboprint

Con esto ya tendríamos instalado Turboprint ya solo hay que configurarlo y ponerlo en calidad baja(300dpi) para que no imprima el sello de Turboprint o pagar casi $40 por una versión completa, jajaja
Para configurar Turboprint:
tpsetup