[Lugbz-list] java & bluetooth
Andrea Antonello
andrea.antonello at gmail.com
Thu Jun 14 16:12:19 CEST 2007
[...]
> [snip]
>> Se qualcuno fosse interessato, vorrei poi proseguire con una
>> chiaccherata riguardante i passaggi di configurazione su linux e poi
>> l'accesso da java al GPS per ottenere in stream le frasi NMEA che
>> definiscono la posizione.
>
> Ho un portatile dual boot (con bluetooth funzionante anche in linux, ma non
> riapriamo vecchie ferite ;) e un ricevitore GPS bluetooth. Se ti può servire
> per fare del testing sono disponibile :)
Ciao Daniele, speravo mi rispondesse un hardwarista come te :)
Visto che grazie a Dio anche il mio bluetooth ora funzia, vorrei
descrivere quello che ho fatto e invece quello che non mi funziona e
magari confrontarci su questo.
Quindi parto con la brodaglia:
- cerco il gps collegato:
> hcitool scan
Scanning ...
00:0B:0D:6F:F9:C5 SJA GPS
- trovato il gps attraverso l'indirizzo hardware trovo il canale sul
quale chiacchera:
> sdptool browse 00:0B:0D:6F:F9:C5
Browsing 00:0B:0D:6F:F9:C5 ...
Service Name: SPP slave
Service Description: Bluetooth SPP V1.01
Service RecHandle: 0x10000
Service Class ID List:
"Serial Port" (0x1101)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Language Base Attr List:
code_ISO639: 0x656e
encoding: 0x6a
base_offset: 0x100
- creo una porta seriale virtuale alla quale lego il gps via hardware
adress e canale al device rfcomm0:
> rfcomm bind /dev/rfcomm0 00:0B:0D:6F:F9:C5 1
- testo la connessione e vedo che funziona, vista la brodaglia nmea che
ne fuoriesce :):
> cat /dev/rfcomm0
$GPGGA,135000.730,,,,,0,00,,,M,0.0,M,,0000*55
$GPGSA,A,1,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,08,66,042,,10,65,239,,28,51,140,,29,43,304,*7C
$GPGSV,3,2,12,27,40,055,,26,29,299,,25,20,060,,24,15,292,*7F
$GPGSV,3,3,12,13,06,105,,21,03,326,,19,03,051,,02,02,217,*76
$GPRMC,135000.730,V,,,,,,,140607,,,N*4A
************
A questo punto ho una prima domanda:
- come mai non mi funziona se faccio
rfcomm bind /dev/ttyS50 00:0B:0D:6F:F9:C5 ?????
Perche' me lo lega solo a rfcomm* e non a un tty*?
************
- Per completezza aggiungo che il release del device va fatto cosi':
sudo rfcomm release /dev/rfcomm0 00:0B:0D:6F:F9:C5
_________________________________________________
Visto che la parte hardware con rfcomm pare funzionare, passiamo alla
parte java via rxtx:
Partendo dal presupposto di avere una java jdk installata:
- scarico ftp://ftp.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip
- unzippo e entro nella cartella creata
- vi creo un file con al suo interno:
import gnu.io.*;
import java.util.Enumeration;
public class verifybuildenv
{
public static void main(String args[])
{
Enumeration ports;
System.out.println("Verifying Build Environment");
try
{
ports = CommPortIdentifier.getPortIdentifiers();
if (ports == null)
{
System.out.println("No comm ports found!");
return;
}
while (ports.hasMoreElements())
{
System.out.println("Here is a port [" +
((CommPortIdentifier)ports.nextElement
()).getName() + "]");
}
}
catch (Exception e)
{
System.out.println("Failed to enumerate ports [" + e.getMessage()
+ "]");
e.printStackTrace();
}
System.out.println("Complete.");
listPorts();
}
}
e lo nomino verifybuildenv.java
- compilo il programma con:
javac -cp ./RXTXcomm.jar:.
-Djava.library.path=Linux/i686-unknown-linux-gnu/ verifybuildenv.java
- e lo eseguo con:
java -cp ./RXTXcomm.jar:.
-Djava.library.path=Linux/i686-unknown-linux-gnu/ verifybuildenv
- il risultato e':
Verifying Build Environment
Experimental: JNI_OnLoad called.
Stable Library
=========================================
Native lib Version = RXTX-2.1-7
Java lib Version = RXTX-2.1-7
Here is a port [/dev/ttyS0]
Complete.
Quindi mi trova la porta /dev/ttyS0 come seriale, ma non quella virtuale
del bluetooth.
Pare che rxtx abbia problemi a trovare device rfcomm*, io invece non
sono riuscito a legare a un device tty e quindi non so come procedere.
Qualche idea?
Grazie
Andrea
> Inoltre ti segnalo:
> http://code.google.com/p/mobile-trail-explorer/
> che sembra un progetto vivo e che, a quanto dichiarano, fa quello che vorresti
> fare tu su un qualsiasi telefono che supporti le J2ME (e le JSR-82 per il
> bluetooth). Ed è pure GPL :)
In realta' per i cellulare e palmari le api ci sono, manca qualcosa per
la j2se e i pc "normali".
More information about the Lugbz-list
mailing list