Enviar bytes de Raspberry Pi (usando python) a una aplicación java android sobre bluetooth

Estoy trabajando en un proyecto para controlar un robot usando una aplicación móvil. Hasta ahora he conseguido enviar comandos de Bluetooth para hacer que el robot se mueva como se desee. Pero tengo problemas para recibir la entrada del Sensor Ultrasónico HC-SR04 que da un valor de flotación cada segundo. he escrito el código para convertir el flotador en bytes, a continuación, escribir los bytes de serie y leer y mostrarlos en textview con java para la aplicación. Pero sólo obtengo un signo de interrogación en la vista de texto que estoy suponiendo muestra que soy capaz de recibir datos en el canal, o bien los bytes no están completos o mis conversiones están mal?

Por favor ayuda.

########## Aquí está mi script python para enviar bytes

while True: a = ser.read() #read from the serial port ser.close() dist = initio.getDistance() #distance obtained from ultra sensor d = int(a.encode('hex'), 16) bytSend = struct.pack('f', dist) #convert the int distance to bytes ser.open() ser.write(bytSend) 

********** aquí es el código java para leer datos en el flujo y enviar a un manejador en mi código principal ***************

 public void run() { byte[] buffer = new byte[1024]; int bytes; // Keep listening to the InputStream while connected while (true) { try { // Read from the InputStream bytes = mmInStream.read(buffer); // Send the obtained bytes to the UI Activity mHandler.obtainMessage(initioActivity.MESSAGE_READ, bytes, -1, buffer) .sendToTarget(); } catch (IOException e) { // connectionLost(); break; } } } 

***** entonces en mi código principal (dentro de un manejador) tengo ***

 case MESSAGE_READ: //byte[] readBuf = (byte[]) msg.obj; byte[] readBuf = (byte[]) msg.obj; //construct a string from valid bytes in buffer String distance = new String(readBuf, 0, msg.arg1); myLabel.setText(distance); 

Cualquier idea de lo que puede estar haciendo mal?

One Solution collect form web for “Enviar bytes de Raspberry Pi (usando python) a una aplicación java android sobre bluetooth”

asumir cierta distancia d

 d = 23.45454 

por lo tanto, el mensaje codificado es

 encoded_d = struct.pack("f",d) print repr(encoded_d) # '\xe6\xa2\xbbA' 

así que cuando se lee en la cadena en java se obtiene que … ya que esos no son caracteres válidos que obtiene ? para cualquier carácter no válido

usted necesita para averiguar cómo decode nuevo a un flotador en java

para resolver esto la manera más fácil es probablemente para enviarlo simplemente como ascii

 d = 23.45454 ser.write(str(d)) 

esto hará que su mensaje pasa fraccionalmente más lento, pero a menos que sea realmente un problema, debería bastar

todo el código en esta entrada es python

  • Comprobación del usuario de Foursquare en V2
  • Desarrollo de Android en Python Realistic
  • Cómo integrar scripts de Python en mi aplicación Android (como SL4A)
  • Quitar o reemplazar la pantalla de inicio kivy en el inicio
  • Cualquier buen editor de texto - aplicación de Android - optimizado para los programadores?
  • ¿Cómo puedo obtener el script de instalación de python-for-android para reconocer los pbs instalados en un sistema Windows?
  • Cómo guardar la URL actual en Android Kivy Application
  • Ejemplo de la pestaña simple kivy
  • Error al empaquetar Kivy con la biblioteca numpy para Android usando buildozer
  • ¿No puedo recibir mi mensaje en mi dispositivo Android a través de la mensajería en la nube de google?
  • Android: Llamar a Python Script (a través de SL4A) desde código Java
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.