para - recibir personaje usando el teléfono Android de arduino
encender led arduino bluetooth hc-06 (1)
Trabajé este código para recibir una sola letra del arduino No puedo ver ninguna respuesta en el visor de texto del teléfono cuando quiero que Arduino envíe la letra ''A'' me muestra la palabra ''ON'' y si Enviar ''Z'' me muestra la palabra en el visor de texto desactivado
Tenga en cuenta que la conexión entre el teléfono Android Arduino ha sido exitosa y el teléfono Android envía a Arduino pero no recibió
class Ahmed extends Thread {
public void run() {
for (; ; ) {
try {
int bytesAvailable = btSocket.getInputStream().available();
byte []packetBytes= new byte[bytesAvailable];
if (bytesAvailable > 0) {
tb.setText(bytesAvailable+ "ok");
btSocket.getInputStream().read(packetBytes);
for(int i=0; i<bytesAvailable;i++)
{
if (packetBytes[i]==65)
tb.setText("ON");
else if (packetBytes[i] ==90)
tb.setText("off");
}
}
} catch (Exception e) {
}
}
}
}
código arduino
#include<SoftwareSerial.h>
void setup() {
Serial3.begin(9600);
pinMode(13,OUTPUT);
digitalWrite(13,LOW);
}
void loop() {
char x=Serial3.read();
if(x==''A'')
{
digitalWrite(13,HIGH);
Serial3.print(''A'');
}
if(x==''Z'')
{digitalWrite(13,LOW);
Serial3.print(''Z'');
}
}
estás actualizando la vista de texto de un hilo, debe arrojar alguna excepción, pero como no has impreso nada en tu bloque catch no obtienes salida ni error ni nada, siempre lo recuerdes, no puedes actualizar vistas de ningún hilo que no sea el de UI .
try {
int bytesAvailable = btSocket.getInputStream().available();
byte []packetBytes= new byte[bytesAvailable];
if (bytesAvailable > 0) {
tb.setText(bytesAvailable+ "ok");
btSocket.getInputStream().read(packetBytes);
for(int i=0; i<bytesAvailable;i++)
{
if (packetBytes[i]==65)
tb.setText("ON");
else if (packetBytes[i] ==90)
tb.setText("off");
}
}
} catch (Exception e) {
// ADD THIS TO SEE ANY ERROR
e.printStackTrace();
}
si está ejecutando este hilo dentro de la clase de actividad, entonces puede ejecutar esto
runOnUiThread(new Runnable() {
@Override
public void run() {
tb.setText("ON")
}
});
de lo contrario, tiene que implementar algún mecanismo que use el receptor de difusión o la interfaz para pasar los datos a su actividad / fragmento para actualizar la vista de texto dentro de runOnUiThread .