Haz una pregunta
  Foros de Electrónica » Temas de Interés » Aportes y documentación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/12/2015 #21
Moderador

Avatar de D@rkbytes

No es lo mismo que envíes el número 123 como entero, que como una cadena.
Cada carácter tiene el tamaño de un byte.

Entonces tienes que formatear lo que quieras enviar y recibirlo de igual forma.
Si envías el 123 como byte, enviarías un "{" de la tabla ASCII.

En decimal, el carácter "1" de la tabla ASCII equivale al 49, al recibir le das formato y lo interpretas como quieras.
13/12/2015 #22

Avatar de ilcapo

Ah gracias darkbites creo que ya voy entendiendo

me fijé en el App inventor que hay una funcion para enviar mas de un byte al mismo tiempo

pero el pic los va a recibir ? o solo podré guardar uno ? y el resto se van a perder ?

o como podria hacer para guardarlos por ejemlo a 3 bytes (123)

creo que por aca esta el problema de Scooter que comentaba que a veces no recibia los datos
13/12/2015 #23
Moderador

Avatar de D@rkbytes

Con gets(string); puedes recibir toda la cadena hasta que termine con "\r" (13 = Carrriage Return)
Si vas a recibir 10 bytes, creas un arreglo con 11: char cadena[11];
Después la puedes concatenar, convertir, comparar, o usar cada byte por separado.
13/12/2015 #24

Avatar de Scooter

En este caso lo que se recibe es lo mismo que si se pulsa en un teclado, es decir: un '1', "media hora después" un '2' y así sucesivamente.
Yo lo guardaba en un buffer de tan sólo tres bytes y cuando se recibía la tecla "intro" se leía el buffer. Eso con un teclado de verdad en CM.
Con este sistema hay dos posibilidades:
Uno ese mismo, que es el que usa este programa de appinventor ya que conforme pulsas teclas 'escupe' los datos.
Otro generar la cadena en el tablet y enviarla entera y editada con una tecla "send" o algo así. Eso es lo que hace el terminal de arduino
13/12/2015 #25

Avatar de ilcapo

en CCS solo veo que estan disponibles las funciones:

getc(), getch() y getchar()

alguna es equivalente a gets() ?

Sinó como se puede hacer para recibir la cadena ? aca estamos perdiendo datos!



HOla Scooter si yo me referia siempre a enviar "de una" varios numeros desde el App Inventor por ejemplo el numero 123
13/12/2015 #26
Moderador

Avatar de D@rkbytes

ilcapo dijo: Ver Mensaje
En CCS sólo veo que están disponibles las funciones:

getc(), getch() y getchar()

¿Alguna es equivalente a gets()?

gets(string);
es una instrucción nativa de PIC C Compiler de CCS.

La ayuda de PIC C Compiler dijo:
gets(), fgets()
Imágenes Adjuntas
Tipo de Archivo: jpg Gets.jpg (191,1 KB (Kilobytes), 35 visitas)
13/12/2015 #27

Avatar de ilcapo

Por eso digo que hay que ir a la ayuda del CCS y no a lo que encontras por internet ! <-- kiko !

bueno con toda esta info ya se puede arrancar a verificar la transmicion de datos del App inventor. Si Scooter tiene ganas y tiempo de hacer una App que envie numeros y un programa en ccs que los reciba,bien simple, seria mucho mas rapido (asi lo "debuggeamos" paso a paso para ver que esta mandando el App inventor) , sinó esperenme unos dias a que aprenda a usar el App inventor y hago un programita y lo subo

creo que en la transmicion y/o recepcion de los datos esta el problema de Scooter y no en Android ( esas cosas las hacen personas inteligentes, yo digo siempre que cuando algo no esta funcionando bien o falla es por culpa mia XD, y en el 100% de los casos tenia razon ! )
13/12/2015 #28

Avatar de Scooter

Si, vale. Me apunto.

Ya no tengo problemas: el bluetooth versión 1.05 fallaba en algunos dispositivos. El 1.06 va fenómeno en todos los que he probado.

¿Que quieres? ¿Un terminal bluetooth? Ya hay media docena en al market, pero podemos hacer uno más.

Se puede poner una etiqueta o cuadro de texto con el texto que va entrando y un cuadro de texto con un botón "enviar" para lo que va saliendo
13/12/2015 #29

Avatar de Scooter

Bueno, he hecho una modificación a la aplicación.
Ahora tiene una "pantalla" que es un cuadro de texto en la que aparece lo que se recibe como hacía antes. Hay que enviar todo de golpe ya que si se envía en dos se borra y vuelve a empezar.
Cuatro teclas F1, F2, F3 y Enviar
Un cuadro de texto en el que escribir lo que se quiere enviar.

Al pulsar enviar se envía el contenido del cuadro de texto.

F1, 2 y 3 son configurables con lo que queramos. Ponemos el texto que se quiera en el cuadro de texto y se mantiene pulsada la tecla que se desee, entonces esa Fn enviará cada vez ese texto.

Probadlo y me contáis.


En principio todo esto es para mandar cadenas ascii, si queremos mandar números en float o lo que sea habría que pensar como va la cosa. Ahora mismo se envían los números como cadenas.
Imágenes Adjuntas
Tipo de Archivo: png Pantallazo.png (191,1 KB (Kilobytes), 9 visitas)
Archivos Adjuntos
Tipo de Archivo: zip Terminalito.zip (2,02 MB (Megabytes), 4 visitas)
13/12/2015 #30

Avatar de ilcapo

Ok muchas gracias scooter apenas tenga unos ensayos subo las imagenes !
14/12/2015 #31

Avatar de Scooter

Bueno, a las Fn se les puede configurar la cadena que envían, pero su etiqueta sigue siendo Fn, si queréis cambiarlo, lo vemos.
14/12/2015 #32

Avatar de ilcapo

D@rkbytes dijo: Ver Mensaje
Con gets(string); puedes recibir toda la cadena hasta que termine con "\r" (13 = Carrriage Return)
Si vas a recibir 10 bytes, creas un arreglo con 11: char cadena[11];
Después la puedes concatenar, convertir, comparar, o usar cada byte por separado.
hola Darkbites, puede ser que nunca me llegue el retorno de carro ?
estoy debugeando y recibo bien los datos, pero el programa nunca sale de la función gets(string)

no tendria que salir sola ? o le tengo que enviar un retorno de carro desde la aplicacion ?
14/12/2015 #33
Moderador

Avatar de D@rkbytes

Siempre es necesario enviar el retorno de carro al final de la cadena, de otra manera la función no retorna.
Eso es lo que espera gets() para que retorne la cadena completa dentro del arreglo. (Sin el char 13)
14/12/2015 #34

Avatar de Scooter

Yo no estoy mandando retorno de carro. Luego lo modifico o le pongo un check para incorporar el retorno de carro.
¿Solo el 13?
¿O 10+13 como en güindos?
14/12/2015 #35
Moderador

Avatar de D@rkbytes

Únicamente el Retorno de Carro (Char 13) sin el Line Feed (Char 10)
14/12/2015 #36

Avatar de ilcapo

el \n funciona pero el \r no ( lo toma por separado y guarda la barra y el r )

alguna otra secuencia de escape que reemplace el \r ?

---------- Actualizado después de 37 minutos ----------

estoy probando las secuencias de escape \... mandarlas desde la App para que las reconozca el gets(string) . Por ahora solo me reconoce \n

que raro ! a lo mejor el App inventor tiene algun tipo de programacion diferente para enviarle las secuencias de escape ? PHP ? o no se ya no se que pensar ja
14/12/2015 #37

Avatar de Scooter

Actualizado.
Ahora además hay dos checkbox para añadir un CR \r y/o un LF \n a voluntad a cualquier envío por el puerto blutúz.

Bueno, entre otras averiguaciones podemos ver que hace cada cosa que si \n o \r...
Archivos Adjuntos
Tipo de Archivo: zip Terminalito2.zip (2,02 MB (Megabytes), 3 visitas)
14/12/2015 #38

Avatar de ilcapo

Hola Scooter como lograste hacer funcionar el \r ? estoy luchando con eso desde hace varias horas !

Yo envio un string desde el App Inventor , lo tomo con el gets(string), pero nunca logro que salga del gets() :(

pudiste enviar un string con retorno de carro para salir de un gets () ???


saludos!
14/12/2015 #39
Moderador

Avatar de D@rkbytes

Espero que no estés mandando el CR así "\r". Eso es para lenguaje C.
Lo que tienes que enviar es carácter 13 cómo ASCII.

Por ejemplo, en Visual Basic se manda así:
cadena = "esta es una cadena" & vbCr
O de ésta otra forma:
cadena = "esta es una cadena" & Chr(13)

En AppInventor no sé cómo se conviertan los números a ASCII, porque uso B4A (Basic For Android)
15/12/2015 #40

Avatar de Scooter

He puesto añadir \r o \n según el check que marques. Se supone que appinventor reconoce esa secuencia. Eso dice la documentación.
De cualquier modo he puesto el código fuente, así que lo podéis editar a vuestro gusto.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Aportes y documentación

Artículos técnicos, notas de aplicación, diagramas circuitales, y demás documentos de interés enviados por nuestra comunidad.

Cerrar
Foros de Electrónica » Temas de Interés » Aportes y documentación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.