Archivos de la categoría ‘Programacion’

Envio de datos por el Puerto Serial en Perl

Febrero 20, 2008

Bueno, para mi tesis necesite manejar el pruerto serial en perl y en GNU/Linux, es algo muy simple, pero tarde un buen rato en encontrar como se utiliza, y como hacer para mandar por datos por puerto en si, para esto yo necesite el modulo de perl que se llama Device::SerialPort, este modulo nos ayuda a hacer muy simple el manejo del puerto serial.

Veamos el Código:

#!/usr/bin/perl -w

use strict; #Esta linea es para hacer obligatorio la declaracion de variablesuse

use Device::SerialPort; # Declaramos el Modulo para manejo de puert
os
# Declaracion y asignacion del puerto serial COM1
# Puerto seial /dev/tttS0, si es USB es ttyUSB0.


my $serial = Device::SerialPort->new(“/dev/ttyS0″) || die “No se pudo abrir el puerto”; # Se crea un objeto llamado $serial.


# Configuracion del Puerto serial COM(x)

$serial->baudrate(2400); # Velocidad del Puerto o Razon de Bits
(2400)
$serial->databits(8); # Bits de Datos (8)
$serial->parity(“none”); # Paridad (ninguna)
$serial->stopbits(1); # Bit de Parada (1)
$serial->handshake(“rts”); # Control de Hardware (rts)
$serial->write_settings; #

# Envio de Datos por el Puerto Serial

my $var=50;
$serial->write(10); # Envio de un 10 al puerto serial

delay(1); # Funcio que hace que Espere un tiempo de 1 segundo

$serial->write(chr(64)); # Envio de un @ al puerto serial.

delay(0.5);
$serial->write($var); # Envio del valor de una variable.

delay(0.5);

sub delay{ # Funcion para dar una pausa
my $time=shift; # Variable que indica el tiempo(
Segundos), Con shift se recoje un parametro a la vez, que a sido pasado a la funion.
select(undef, undef, undef, $time); # Funcion Real que hace la pausa
}

# Fin del Script

Bueno como vemos es algo muy simple, el delay es necesario, ya que si se quiere mandar varios datos seguirdos pues seria muy rapido y no le dara tiempo de procesarlo al puerto y no hara nada.. en mi caso.. yo lo utilizo con un delay(0.1), con eso el motor que utilizo se mueve a una muy buena velocidad.. rapido.. :p… Espero y les sea de ayuda a algunos.. :p