Establecer Comunicacion SPP con modulo bluetooth via movil con j2me

Iniciado por hunfry, 19 Enero 2011, 20:37 PM

0 Miembros y 2 Visitantes están viendo este tema.

hunfry

Buenas a todos,
Tenemos un proyecto entre manos que consiste en un sistema de adquisiscion de datos via Bluetooth visualizado en un movil con soporte JR82.
La interfaz es:
-Sensor de temperatura acondicionado, cuya señal es introducida al ADC del nuestro modulo Bluetooth (Ezurio Bism2).
- Un movil con soporte JR82, en el que ejecutamos un programa java que:
-Busca el modulo.
-Busca los servicios (en concreto el servicio SPP).
-Solicita la URL de conexion.
-Envia comandos AT.
Nuestro problema está en este último punto, una vez establecida la conexión debemos enviar al modulo la secuencia !!! para establecer el REMOTE COMAND MODE para que nos responda a los comandos AT que enviemos (en concreto el comando ATS701? para recibir el voltaje introducido en el ADC).
Pues bien no sabemos exactamente como programar el envio de la secuencia !!!.
La primera prueba la hacemos manualmente, con la siguiente secuencia:
1.-Abro el Stream conection con "con = (StreamConnection)Connector.open(URL);" (esto sabemos que funciona por que tenemos el modulo conectado por el puerto serie a un ordenado y vemos como efectivamente acepta e incia la conexion).
2.-Leo un string que contiene el caracter ! y lo introduzco en la variable string comando.
3.-Abro el DataOutputStream con "DataOutputStream out = con.openDataOutputStream();"
4.-Envio el caracter ! con "out.writeUTF(comando)"
5.-Ejecuto el método "out.flush"
6.-Repito la operacion dos veces mas desde el paso 4 y cierro el DataOutputStream.
Lo hacemos manualmente para asegurarnos que pasa el tiempo suficiente entre el envio de cada admiración.

Sabemos que debemos enviar esta secuencia pues estas mismas pruebas las hemos hecho Over de Air con un PC y el Hiperterminal y despues de enviar la secuencia !!! recibimos un OK del modulo, tras esto nos permite el envio de comando AT.

Bueno pues este paso no sabemos bien como hacerlo en java pues no nos responde el OK que esperamos.

¿Alguna idea?¿Es problema del programa o puede ser que no tengamos bien confgurado el modulo?

Cualquier idea nos vendría bien.
Gracias y un saludo

Debci

Cuentas con el margen de tiempo de ejecución del codigo? Piensa que el propio programa puede tener un delay.
No se me ocurre mas que eso sin ver el código.

Saludos

hunfry

Hola,
El hecho de enviar las tres admiraciones manualmente es para que el modulo las reciba con un tiempo minimo de de 100ms entre una y otra (eso nos obliga el propio modulo). La verdad es que he aprendido java en semana y media y todavia estoy muy muy verde, pero las circunstancias me obligan.

Te posteo la parte del codigo que ejecutamos para el envio de las tres admiraciones:
else if (d==M && co.getLabel().equals("out.write()")){
                Pantalla.setCurrent(H);
                String comando = M.getString();
                H.append("El comando introducido es:"+comando,null);
                if (admiraciones==0){
                    try{
                        out = con.openDataOutputStream();
                        H.append("Stream abierto",null);
                    } catch (Exception e) {
                        H.append(""+e, null);
                    }
                }
                try{
                    //StreamConnection con = (StreamConnection)Connector.open(URL); //este onbjeto esta comentado por que ya ha sido inicializado en otro metodo
                        out.writeUTF(comando);
                        out.flush();
                        H.append(""+comando, null);
                        admiraciones++;
                } catch(Exception e) {
                    H.deleteAll();
                    H.append("No se ha podido enviar el comando:"+comando+":"+e, null);
                } if (admiraciones==3){
                    try{                       
                       out.close();
                       DataInputStream in = con.openDataInputStream();                       
                       String salida = in.readUTF();
                       H.append(""+salida+, null);
                       in.close();                       
                    } catch(Exception e){
                        Alert alarm = new Alert("Problema","No se ha podido cerrar el StreamOutput",null,AlertType.INFO);
                    }
                    admiraciones = 0;
                }

No se si es que realmente no accedo al Remote Comand Mode o es que no consigo leer la respuesta (recuerdo que debería ser un "OK").

Gracias y un saludo