56
« : enero 17, 2016, 18:47:19 pm »
Hola Boris nuevamente,
Hoy estuve extendiendo el uso de las funcionalidades de ThingSpeak en mi PLC, y me encontré con un problema que no pude descifrar. Te explico:
Yo hasta ahora venía usando 4 canales: field1, field2, field3 y field4.
A partir de esta "ampliación", empecé a utilizar 6 canales: field1, field2, field3, field4, field5 y field6
Y me encontré que en ningún caso puedo subir la información de los 6 fields simultáneamente, o sea armando correctamente el string con toda la cadena conteniendo los 6 fields.
Sí puedo subir los primeros 4. O bien los últimos 2. o bien los 3 primeros y uno más. Pero nunca los 6 campos. En otras pruebas simplemente no pude subir ningún dato a los fields4, 5 y 6 (!?).
Pensé que habría un problema en thingspeak.p en cuanto al tamaño definido de los strings[], asi que les puse 300 char a todos. Pero eso no cambió nada (aunque tengo el pálpito que con los valores originales nos estamos quedando cortos).
Para mí el problema está en la zona de la función ThingspeakSendFields(), en la parte donde hace los getargs(), pero no pude encontrar ningún error.
Tengo varias dudas:
1- Existe alguna limitación para que no se pueda subir mas de 4 fields al mismo tiempo?
2- Qué hace la función getargs(), como funciona?
3- Cuál es el tamaño máximo de los strings? En el manual si no me equivoco habla de 160 caracteres, pero en tu codigo thingspeak.p ya había originalmente strings más grandes (antes de que yo lo edite). Entonces en algún momento se ha extendido la capacidad de los strings?
4- Existe alguna función substring(string,comienzo,numero_de_caracteres), o sea para extraer un string a partir de un punto.
5- Para monitorear y debugear todo este tema de ThingSpeak, siempre envié el string que armo con los "field´s" al VirtualHDMI Android, pero encontré que VirtualHDMI tiene aparentemente un límite de algo así como 37 caracteres por renglón y trunca la línea, y es como que no hay forma de mostrar un string completo que sea realmente largo (50-200 bytes), si es necesario haciendo line break hacia el siguiente renglón. Quise "partir" mi string largo en varios strings, pero como no tenía función substring() no lo pude resolver. Fijate que VirtualHDMI Android en el modo "Menu Keys" tiene una pantalla enorme, y caracteres muy pequeños, por lo que se podrían mostrar strings realmente largos.
Bueno, si se te ocurre algo avisame. Me gustaría saber si vos podés hacer la prueba y definís en ThingSpeak un Channel con 6 ó mas fields, y les mandás un dato a cada uno, si te los toma o no. Para mí no funciona. Estuve como 5 horas probando y probando !
Desde ya muchas gracias y buenas vacaciones!
Pablo.
PD: se me ocurre ahora: no se tratará de un problema de tiempos? O sea: que al protocolo TCP no le den los tiempos para realizar la transacción con ThingSpeak cuando la cantidad de campos es más de 4 ?? Fijate que en otro hilo estoy reportando un problema similar con el firmware revisión 215, en el que encontré que accediendo via ModBus, el sistema responde solo con las primeras variables, pero llega un punto en el que se traba...