La función de nube se detiene Parse.com en bucle cuando se llama desde Arduino-yun

11

He creado una función en la nube usando el SDK de Parse.com Javascript y llamo a esas funciones desde Arduino. El siguiente es el código para la hellofunción:

Parse.Cloud.define("hello", function(request, response) {
                response.success("This is hello function");         
}); //hello function Block

Llamo a esta función desde el lado de Arduino usando el siguiente código:

void setup() {
  Bridge.begin();
  Serial.begin(9600);

  while (!Serial);

  Parse.begin("***zE0uUjQkMa7nj5D5BALvzegzfyVNSG22BD***", "***Ssggp5JgMFmSHfloewW5oixlM5ibt9LBSE***");
  //commented my keys with * here only

  // In this example, we associate this device with a pre-generated installation
  Parse.getInstallationId();
  Parse.startPushService();
}


void loop() {
  Serial.println("Start loop");
  demoBasic("meeting", 0);
}

void demoBasic(String functionname, int light) {
  char fnname[11];
  functionname.toCharArray(fnname, 11);

  Serial.print("In ");
  Serial.print(functionname);
  Serial.println(" Function");


  ParseCloudFunction cloudFunction;
  cloudFunction.setFunctionName(fnname);
  cloudFunction.add("light_sensor", light);
  cloudFunction.add("value", "Arduino Hello");//parameters

  ParseResponse response = cloudFunction.send();
  Serial.println(response.getJSONBody());
}

El problema es que solo recibo respuesta 8 veces. Después de todo el flujo del programa se bloquea. ¿Cuál es el problema?

Abhijeet Kulkarni
fuente
No estoy seguro de cuál es su problema, pero intentaría un "retraso" en el bucle después de la llamada a demoBasic. Comenzaría con 100 ms. Tal vez su código se ejecute "demasiado rápido", entonces la función js se bloquea.
fabrosell
@fabrosell, intenté hacer eso también, pero aún había un problema. ¿Puede sugerirme algo que pueda resolver el problema?
Abhijeet Kulkarni el
Si tiene algún código de trabajo que pueda enviar datos continuamente a Parse.com, ¿puede compartirlo?
Abhijeet Kulkarni
Lo siento, no tengo ninguno. De cualquier manera, es un comportamiento muy extraño si se llama a la función sólo 8 veces y no más ...
fabrosell
¿En qué punto del código el flujo del programa "se bloquea"?
Kingsley

Respuestas:

1

Dale una oportunidad a esto, realmente odio a String, tal vez esa cosa de 8 veces tiene que ver con problemas de memoria causados ​​por ella.

void loop() {

  char functionToCall[8] = "meeting";
  Serial.println("Start loop");
  demoBasicCharArray(functionToCall, 0);
}


void demoBasicCharArray(char *functionname, int light) {

  Serial.print("In ");
  for (byte i=0;i<sizeof(functionname);i++){
    Serial.print(functionname[i]);
  }
  Serial.println(" Function");

  ParseCloudFunction cloudFunction;
  cloudFunction.setFunctionName(functionname);
  cloudFunction.add("light_sensor", light);
  cloudFunction.add("value", "Arduino Hello");//parameters

  ParseResponse response = cloudFunction.send();
  Serial.println(response.getJSONBody());
}
dBm
fuente