Página 1 de 1

Módulo Net::Bluetooth

NotaPublicado: 2015-02-26 16:57 @748
por jimr1984
Saludos. Por favor, si alguien puede ayudarme con el módulo Net::Bluetooth

Instalación: tengo Windows 7, 64 bit, con el ActiveState Perl.

He probado lo siguiente:

cpan install Net::Bluetooth

Al final me da un error: c:\perl\site\bin\dmake.exe --NOT OK

ppm install Net-Bluetooth

Según investigando es para Windows Server 2003.

¿Qué módulo puedo utilizar para administrar un módulo Bluetooth? Crear servicios, detectar dispositivos, etc.

Saludos.

Re: Módulo Net::Bluetooth

NotaPublicado: 2015-02-26 17:21 @764
por explorer
Aquí tienes la matriz de compatibilidad con los módulos en PPM:
http://code.activestate.com/ppm/Net-Bluetooth/

Según parece, la v0.41 sí que funciona con Perl v5.16.

Y aquí tienes la matriz de compatibilidad con todas las versiones de Perl:
http://matrix.cpantesters.org/?dist=Net ... oth%200.41

La v0.40 del módulo también funciona con Perl v5.20, en Windows.

De todas maneras, si has instalado el ActiveState Perl, es mucho mejor instalarlo desde PPM.

En el archivo README (léeme, en inglés) dice que se puede instalar una versión precompilada, en Windows, con el comando

ppm install http://www.conditor.com/Net-Bluetooth.ppd

Lo malo es que... el dominio está en venta :(

El error que te da con el comando cpan es que no tienes un entorno completo de generación de módulos. Este módulo requiere una compilación, ya que tiene una parte en forma de biblioteca en C.

En trouchelle.com está disponible la v0.40, así que puedes adjuntar ese repositorio al PPM e instalarlo desde el entorno gráfico del PPM (guía, ver la sección 3.3).

Re: Módulo Net::Bluetooth

NotaPublicado: 2015-03-01 13:27 @602
por jimr1984
Muchas gracias, estimado.

Ya pude instalar el módulo. cambié a Perl v5.16 y con ppm install Net-Bluetooth pude instalarlo.

Re: Módulo Net::Bluetooth

NotaPublicado: 2015-03-02 08:03 @377
por jimr1984
Estimado: Continuando el hilo de Bluetooth

Por favor, si pueden ayudarme con este código

use Net::Bluetooth;


# Listando los Dispositivos Bluetooth

my $dispositivos = get_remote_devices();

my $var = keys(%$dispositivos);

print $var[0];

+ $dispositivos guardará el nombre de los dispositivos encontrados
+ ¿cómo puedo guardar el nombre en un array, recorriendo con un foreach()
y llamarlo cuando lo necesito print $var[0]; print $var[1];

tenerlo en un array los nombre de los dispositivos encontrados.

Re: Módulo Net::Bluetooth

NotaPublicado: 2015-03-02 10:28 @478
por jimr1984
Confundido con el código.

use Net::Bluetooth;

#### list all remote devices in the area
my $device_ref = get_remote_devices();
foreach $addr (keys %$device_ref) {
print "Address: $addr Name: $device_ref->{$addr}\n";
}

+ get_remote_devices() <-- esto devuelve una lista de dispositivos. ¿NO debería guardarse en un @array?
+ ¿por qué lo almacenamos en una cadena normal $service_ref?

Si estuviera en un array quizás pueda referenciarlo directamente, así $array[x];
Por favor, si pueden explicarme.

Saludos :?:

Re: Módulo Net::Bluetooth

NotaPublicado: 2015-03-02 11:18 @512
por explorer
jimr1984 escribiste:my $var = keys(%$dispositivos);

La función keys no devuelve un escalar, sino una lista de valores, que son las claves del hash %$dispositivos.

Y las listas de valores las solemos guardar en array:

my @var = keys(%$dispositivos);

y ahora ya puedes extraer los valores almacenados en @var: $var[0], $var[1], etc.

jimr1984 escribiste:+ get_remote_devices() <-- esto devuelve una lista de dispositivos. ¿NO debería guardarse en un @array?
+ ¿por qué lo almacenamos en una cadena normal $service_ref?
Lo dice el manual:
get_remote_devices()

Searches for remote Bluetooth devices. The search will take approximately 5 - 10 seconds (This will be a configurable value in the future.). When finished, it will return a hash reference that contains the device address and name. The address is the key and the name is the value. Name will be set to "[unknown]" if the name could not be resolved. See the NOTES section of this document for more information about this.

Traducido: que get_remote_devices() devuelve una referencia a un hash. Y esa es la razón por la cual se almacena en una variable escalar. Y esa es la razón por la cual luego se desreferencia poniendo '%' delante del escalar, y así obtenemos el hash original.

Tienes más información sobre las referencias en perldoc perlref.

Re: Módulo Net::Bluetooth

NotaPublicado: 2015-03-17 16:26 @726
por jimr1984
Muchas gracias, estimado explorer. Asunto solucionado.