Jsr82BluetoothJava
Fermé
mira
-
7 déc. 2010 à 17:19
Bonjour,
en ce moment je suis entrain de réaliser une application entre clienBluetooth et serveurBluetooth en java avec l'api jsr 82 seulement j'arrive pas à la faire fonctionner.
apparament j'ai un problème avec le LocalDevice j'ai en retour l'erreur suivante:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.jsrsoft.eb.nw.LD.gld(Unknown Source)
at javax.bluetooth.LocalDevice.<init>(Unknown Source)
at javax.bluetooth.LocalDevice.getLocalDevice(Unknown Source)
at ServeurBluetooth.main(ServeurBluetooth.java:62)
Caused by: java.lang.RuntimeException: Include ElectricBlue library in the path
at com.jsrsoft.eb.nw.NW.<clinit>(Unknown Source)
... 4 more
à noter j'ai une clé usb bluetooth qui fonctionne correctement.
j'ai voulu utiliser bluesim qui est un émulateur bluetooth mais j'arrivait pas à le configurer.
s'il y a qq qui pourra m'aider je serai reconnaissante:)
classe ClientBluetooth
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Vector;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
/**
* A simple SPP client that connects with an SPP server
*/
public class ClientBluetooth implements DiscoveryListener{
//object utilisé pour l'attente
private static Object lock=new Object();
//vector contenant les peripheriques decouverts
private static Vector vecDevices=new Vector();
private static String connectionURL=null;
public static void main(String[] args) throws IOException {
ClientBluetooth client=new ClientBluetooth();
//affichage nom et adresse du peripherique bluetooth
LocalDevice localDevice = LocalDevice.getLocalDevice();
System.out.println("Address: "+localDevice.getBluetoothAddress());
System.out.println("Name: "+localDevice.getFriendlyName());
//cherche peripherique bluetooth
DiscoveryAgent agent = localDevice.getDiscoveryAgent();
System.out.println("Starting device inquiry...");
agent.startInquiry(DiscoveryAgent.GIAC, client);
try {
synchronized(lock){
lock.wait();
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Device Inquiry Completed. ");
//print all devices in vecDevices
int deviceCount=vecDevices.size();
if(deviceCount <= 0){
System.out.println("No Devices Found .");
System.exit(0);
}
else{
//print bluetooth device addresses and names in the format [ No. address (name) ]
System.out.println("Bluetooth Devices: ");
for (int i = 0; i <deviceCount; i++) {
RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(i);
System.out.println((i+1)+". "+remoteDevice.getBluetoothAddress()+" ("+remoteDevice.getFriendlyName(true)+")");
}
}
System.out.print("Choose Device index: ");
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
String chosenIndex=bReader.readLine();
int index=Integer.parseInt(chosenIndex.trim());
//check for spp service
RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(index-1);
UUID[] uuidSet = new UUID[1];
uuidSet[0]=new UUID("1101",false);
System.out.println("\nSearching for service...");
agent.searchServices(null,uuidSet,remoteDevice,client);
try {
synchronized(lock){
lock.wait();
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
if(connectionURL==null){
System.out.println("Device does not support Simple SPP Service.");
System.exit(0);
}
//connect to the server and send a line of text
StreamConnection streamConnection=(StreamConnection)Connector.open(connectionURL);
//send string
OutputStream outStream=streamConnection.openOutputStream();
PrintWriter pWriter=new PrintWriter(new OutputStreamWriter(outStream));
pWriter.write("Test String from SPP Client\r\n");
pWriter.flush();
//read response
InputStream inStream=streamConnection.openInputStream();
BufferedReader bReader2=new BufferedReader(new InputStreamReader(inStream));
String lineRead=bReader2.readLine();
System.out.println(lineRead);
}
//methods of DiscoveryListener
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
//add the device to the vector
if(!vecDevices.contains(btDevice)){
vecDevices.addElement(btDevice);
}
}
//implement this method since services are not being discovered
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
if(servRecord!=null && servRecord.length>0){
connectionURL=servRecord[0].getConnectionURL(0,false);
}
synchronized(lock){
lock.notify();
}
}
//implement this method since services are not being discovered
public void serviceSearchCompleted(int transID, int respCode) {
synchronized(lock){
lock.notify();
}
}
public void inquiryCompleted(int discType) {
synchronized(lock){
lock.notify();
}
}//end method
}
Classe ServeurBluetooth
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.bluetooth.*;
import javax.microedition.io.*;
public class ServeurBluetooth {
// start server
private void startServer() throws IOException {
// Creer une url
UUID uuid = new UUID("1101", true);
// Creer le service url
String connectionString = "btspp://localhost:" + uuid
+ ";name=Sample SPP Server";
// ouvreture du service
StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier) Connector
.open(connectionString);
// attente de client
System.out
.println("\nServeur en marche...");
StreamConnection connection = streamConnNotifier.acceptAndOpen();
//se connecter au peripherique Bluetooth
RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
System.out.println("Remote device address: "
+ dev.getBluetoothAddress());
System.out.println("Remote device name: " + dev.getFriendlyName(true));
// lecture message du client
InputStream inStream = connection.openInputStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(
inStream));
String lineRead = bReader.readLine();
System.out.println(lineRead);
// envoie réponse au client
OutputStream outStream = connection.openOutputStream();
PrintWriter pWriter = new PrintWriter(new OutputStreamWriter(outStream));
pWriter.write("Response String from SPP Server\r\n");
pWriter.flush();
pWriter.close();
//fermuture du service
streamConnNotifier.close();
}
public static void main(String[] args) throws IOException {
//display local device address and name
LocalDevice localDevice = LocalDevice.getLocalDevice();
System.out.println("Address: " + localDevice.getBluetoothAddress());
System.out.println("Name: " + localDevice.getFriendlyName());
ServeurBluetooth sampleSPPServer = new ServeurBluetooth();
sampleSPPServer.startServer();
}
}
en ce moment je suis entrain de réaliser une application entre clienBluetooth et serveurBluetooth en java avec l'api jsr 82 seulement j'arrive pas à la faire fonctionner.
apparament j'ai un problème avec le LocalDevice j'ai en retour l'erreur suivante:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.jsrsoft.eb.nw.LD.gld(Unknown Source)
at javax.bluetooth.LocalDevice.<init>(Unknown Source)
at javax.bluetooth.LocalDevice.getLocalDevice(Unknown Source)
at ServeurBluetooth.main(ServeurBluetooth.java:62)
Caused by: java.lang.RuntimeException: Include ElectricBlue library in the path
at com.jsrsoft.eb.nw.NW.<clinit>(Unknown Source)
... 4 more
à noter j'ai une clé usb bluetooth qui fonctionne correctement.
j'ai voulu utiliser bluesim qui est un émulateur bluetooth mais j'arrivait pas à le configurer.
s'il y a qq qui pourra m'aider je serai reconnaissante:)
classe ClientBluetooth
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Vector;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
/**
* A simple SPP client that connects with an SPP server
*/
public class ClientBluetooth implements DiscoveryListener{
//object utilisé pour l'attente
private static Object lock=new Object();
//vector contenant les peripheriques decouverts
private static Vector vecDevices=new Vector();
private static String connectionURL=null;
public static void main(String[] args) throws IOException {
ClientBluetooth client=new ClientBluetooth();
//affichage nom et adresse du peripherique bluetooth
LocalDevice localDevice = LocalDevice.getLocalDevice();
System.out.println("Address: "+localDevice.getBluetoothAddress());
System.out.println("Name: "+localDevice.getFriendlyName());
//cherche peripherique bluetooth
DiscoveryAgent agent = localDevice.getDiscoveryAgent();
System.out.println("Starting device inquiry...");
agent.startInquiry(DiscoveryAgent.GIAC, client);
try {
synchronized(lock){
lock.wait();
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Device Inquiry Completed. ");
//print all devices in vecDevices
int deviceCount=vecDevices.size();
if(deviceCount <= 0){
System.out.println("No Devices Found .");
System.exit(0);
}
else{
//print bluetooth device addresses and names in the format [ No. address (name) ]
System.out.println("Bluetooth Devices: ");
for (int i = 0; i <deviceCount; i++) {
RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(i);
System.out.println((i+1)+". "+remoteDevice.getBluetoothAddress()+" ("+remoteDevice.getFriendlyName(true)+")");
}
}
System.out.print("Choose Device index: ");
BufferedReader bReader=new BufferedReader(new InputStreamReader(System.in));
String chosenIndex=bReader.readLine();
int index=Integer.parseInt(chosenIndex.trim());
//check for spp service
RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(index-1);
UUID[] uuidSet = new UUID[1];
uuidSet[0]=new UUID("1101",false);
System.out.println("\nSearching for service...");
agent.searchServices(null,uuidSet,remoteDevice,client);
try {
synchronized(lock){
lock.wait();
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
if(connectionURL==null){
System.out.println("Device does not support Simple SPP Service.");
System.exit(0);
}
//connect to the server and send a line of text
StreamConnection streamConnection=(StreamConnection)Connector.open(connectionURL);
//send string
OutputStream outStream=streamConnection.openOutputStream();
PrintWriter pWriter=new PrintWriter(new OutputStreamWriter(outStream));
pWriter.write("Test String from SPP Client\r\n");
pWriter.flush();
//read response
InputStream inStream=streamConnection.openInputStream();
BufferedReader bReader2=new BufferedReader(new InputStreamReader(inStream));
String lineRead=bReader2.readLine();
System.out.println(lineRead);
}
//methods of DiscoveryListener
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
//add the device to the vector
if(!vecDevices.contains(btDevice)){
vecDevices.addElement(btDevice);
}
}
//implement this method since services are not being discovered
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
if(servRecord!=null && servRecord.length>0){
connectionURL=servRecord[0].getConnectionURL(0,false);
}
synchronized(lock){
lock.notify();
}
}
//implement this method since services are not being discovered
public void serviceSearchCompleted(int transID, int respCode) {
synchronized(lock){
lock.notify();
}
}
public void inquiryCompleted(int discType) {
synchronized(lock){
lock.notify();
}
}//end method
}
Classe ServeurBluetooth
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.bluetooth.*;
import javax.microedition.io.*;
public class ServeurBluetooth {
// start server
private void startServer() throws IOException {
// Creer une url
UUID uuid = new UUID("1101", true);
// Creer le service url
String connectionString = "btspp://localhost:" + uuid
+ ";name=Sample SPP Server";
// ouvreture du service
StreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier) Connector
.open(connectionString);
// attente de client
System.out
.println("\nServeur en marche...");
StreamConnection connection = streamConnNotifier.acceptAndOpen();
//se connecter au peripherique Bluetooth
RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);
System.out.println("Remote device address: "
+ dev.getBluetoothAddress());
System.out.println("Remote device name: " + dev.getFriendlyName(true));
// lecture message du client
InputStream inStream = connection.openInputStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(
inStream));
String lineRead = bReader.readLine();
System.out.println(lineRead);
// envoie réponse au client
OutputStream outStream = connection.openOutputStream();
PrintWriter pWriter = new PrintWriter(new OutputStreamWriter(outStream));
pWriter.write("Response String from SPP Server\r\n");
pWriter.flush();
pWriter.close();
//fermuture du service
streamConnNotifier.close();
}
public static void main(String[] args) throws IOException {
//display local device address and name
LocalDevice localDevice = LocalDevice.getLocalDevice();
System.out.println("Address: " + localDevice.getBluetoothAddress());
System.out.println("Name: " + localDevice.getFriendlyName());
ServeurBluetooth sampleSPPServer = new ServeurBluetooth();
sampleSPPServer.startServer();
}
}