Hola.
Estoy bastante frustrado, no avanzo nada en cuanto a la capacidad de comunicación serial fiable (más concretamente por Bluetooth).
Me he estado pegando con la recepción de bytes por interrupción AStream_NewData (Buffer() As Byte), pero en mi caso, irremediablemente cada cierto tiempo se producen errores. Me he leido 200 post y sigo igual.
Seguramente sea por el "protocolo" que uso, que es exageradamente simple: el emisor me envía 2 bytes seguidos y secuencialmente cada 10 miliseg otros 2. Con este método puedo extraer del primer byte la variable concreta que esta entrando, y del segundo byte el valor correspondiente. Con appinventor funciona a la perfección. Pero al tratar de hacerlo con B4A a veces en el Buffer entra 1 o entran 2 o 3 bytes seguidos que guardo en un Dim temporal y que luego debo discriminar, pero ello supone que se pierde ese sincronismo entre variable-valor, ya no sé cuales entraron seguidos y cual no, o si es un ruido que se coló por el medio como una señal más. Tambien probé varias condiciones tipo que si Buffer.Lenght > 2 lo descarte, pero nada.
El caso es que os rogaría ("por lo que más queráis"), que me expliquéis a poder ser con un ejemplo sencillito, un método alternativo a la captura de datos por interrupción de entrada.
O sea, que pueda decirle al programa con un Timer que cada x miliseg (sin romper la conexión Bluetooth, claro) lea lo que entra en ese preciso momento, luego ya discriminaré si entra 1 o 2 bytes, no me importa descartar/perder alguno, y luego desactivar la recepción para que no atienda nada más en ningún buffer, (o algo así); necesito mantener ese simple protocolo, lo he intentado de otras formas (que si TextReader - readline, que si Serial1.InputStream), pero no acierto en la sintaxis del compilador, por lo que sea, siempre me tira algún error, y seguro que es por que soy el más estúpido de los que han adquirido una licencia de este lenguaje para intentar hacer una aplicación, pero así es.
Aunque os parezca mentira, es una de las pocas barreras que no he logrado superar en meses de intentos.
Espero vuestra comprensión y ayuda. Gracias.
Saludos
Estoy bastante frustrado, no avanzo nada en cuanto a la capacidad de comunicación serial fiable (más concretamente por Bluetooth).
Me he estado pegando con la recepción de bytes por interrupción AStream_NewData (Buffer() As Byte), pero en mi caso, irremediablemente cada cierto tiempo se producen errores. Me he leido 200 post y sigo igual.
Seguramente sea por el "protocolo" que uso, que es exageradamente simple: el emisor me envía 2 bytes seguidos y secuencialmente cada 10 miliseg otros 2. Con este método puedo extraer del primer byte la variable concreta que esta entrando, y del segundo byte el valor correspondiente. Con appinventor funciona a la perfección. Pero al tratar de hacerlo con B4A a veces en el Buffer entra 1 o entran 2 o 3 bytes seguidos que guardo en un Dim temporal y que luego debo discriminar, pero ello supone que se pierde ese sincronismo entre variable-valor, ya no sé cuales entraron seguidos y cual no, o si es un ruido que se coló por el medio como una señal más. Tambien probé varias condiciones tipo que si Buffer.Lenght > 2 lo descarte, pero nada.
El caso es que os rogaría ("por lo que más queráis"), que me expliquéis a poder ser con un ejemplo sencillito, un método alternativo a la captura de datos por interrupción de entrada.
O sea, que pueda decirle al programa con un Timer que cada x miliseg (sin romper la conexión Bluetooth, claro) lea lo que entra en ese preciso momento, luego ya discriminaré si entra 1 o 2 bytes, no me importa descartar/perder alguno, y luego desactivar la recepción para que no atienda nada más en ningún buffer, (o algo así); necesito mantener ese simple protocolo, lo he intentado de otras formas (que si TextReader - readline, que si Serial1.InputStream), pero no acierto en la sintaxis del compilador, por lo que sea, siempre me tira algún error, y seguro que es por que soy el más estúpido de los que han adquirido una licencia de este lenguaje para intentar hacer una aplicación, pero así es.
Aunque os parezca mentira, es una de las pocas barreras que no he logrado superar en meses de intentos.
Espero vuestra comprensión y ayuda. Gracias.
Saludos