La fonction cloud s'arrête Parse.com en boucle lors d'un appel depuis Arduino-yun

11

J'ai créé une fonction cloud à l'aide du SDK Javascript Parse.com et j'appelle ces fonctions depuis Arduino. Voici le code de la hellofonction:

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

J'appelle cette fonction du côté Arduino en utilisant le code suivant:

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());
}

Le problème est que je reçois une réponse 8 fois seulement. Après ce flux de programme entier est bloqué. Quel est le problème?

Abhijeet Kulkarni
la source
Je ne sais pas quel est votre problème, mais j'essaierais un "retard" en boucle après l'appel à demoBasic. Je commencerais avec 100 ms. Peut-être que votre code s'exécute "trop ​​vite", puis la fonction js est bloquée.
fabrosell
@fabrosell j'ai essayé de le faire aussi mais il y avait toujours un problème. Pouvez-vous suggérer quelque chose qui pourrait résoudre le problème.
Abhijeet Kulkarni
Si vous avez un code de travail capable de transmettre en continu des données à Parse.com, pouvez-vous le partager?
Abhijeet Kulkarni
Je suis désolé, je n'en ai pas. Quoi qu'il en soit, c'est un comportement très étrange si la fonction n'est appelée que 8 fois et pas plus ...
fabrosell
À quel moment du code le flux du programme "est-il bloqué"?
Kingsley

Réponses:

1

Essayez ceci, je déteste vraiment String, peut-être que cette chose 8 fois a à voir avec les problèmes de mémoire causés par elle.

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
la source