[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