Mi objetivo es comunicar un arduino con un dispositivo Android usando Basic4Android o B4A
Para ello he comprado un cable OTG que basicamente es un cable miniUSB con salida Hembra que puedo insertar al cable comun USB macho del arduino que conectado en la PC.
El programa del Arduino es tan simple que no hace falta postearlo.
Inicialializo el puerto Serie a 9600 Bps y luego envio via Serial.print el resultado de un contador que se incremento cada 1seguno o 1000 mseg. Asi que termino enviando por puerto serie: 1, 2, 3, ..........100, 101.. y sigue
En el lado del B4A use una librería USBSerial 2.4 que solo debes agregar a la carpeta librerías en la instalación C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries
Luego probé el ejemplo para poder recibir datos en la pantalla y nada.
Y desde entonces estoy trabado con esto.
Quiza lo que te ocurre es que el ejemplo recibe los datos entrantes y los muestra con un log ,por lo que solo los verias con el mobil conectado al pc y con la pestaña log (abajo a la derecha) del entorno b4a,pero no cuando el mobil esta conectado al arduino.Prueba a poner un edit text que reciba los datos:
Sub Globals
Dim btnSend, btnOpen, btnClose As Button
Dim edtMensaje As EditText
End Sub
Sub Astreams_NewData (Buffer() As Byte)
'Log("NewData")
'Log(BytesToString(Buffer, 0, Buffer.Length, "UTF8"))
edtMensaje.Text = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
End Sub
y este sketch,que deberia escribir en el serial lo mismo que recibe:
void setup()
{
Serial.begin(115200);
}
void loop()
{
byte msg[64];
int len;
len = Serial.available();
if (len > 0)
{
len = Serial.readBytes((char*)msg, sizeof(msg)); // readBytes seems to need a char* not a byte*
Serial.write(msg, len);
}
}
De hecho ,acabo de probar este parecido al que comentas y funciona:
BUeno, no cerré nunca este hilo porque no tuve éxito hasta hace poco.
EL problema era el telefono Samsung S2 que tenía que no es OTG o para serlo debo routear el telefono. Cosa que no hice.
Luego cambié el telefono recientemente por un S5 y cuando probé la misma aplicación con el cable OTG todo funcionó inmediatamente.
Ahora puedo enviar datos desde el ARduino por puerto Serie al Android y ver los datos ahi.
Solo busca un Cable OTG y con la librería USBSerial2.4 de B4A todo funciona perfecto.
Solo ten cuidado con la conversión de String a entero. No permite cadenas nulas y me daba un error que resolví con un simple if (isnumeric(string) y no recuerdo como sigue.
Luego lo busco y lo pego aca.
No te va a funcionar.
No pierdas el tiempo. Si quieres intentar algo baja el OTG Checker una app de android que te dirá lo que ya te dije yo.
Te dirá que el S2 no funciona.
La única manera es hacerte superUsuario o sea rootearlo.