Cloud-Funktion wird gestoppt Parse.com in Schleife beim Aufruf von Arduino-yun


11

Ich habe eine Cloud-Funktion mit dem Parse.com Javascript SDK erstellt und rufe diese Funktionen von Arduino aus auf. Es folgt der Code für die helloFunktion:

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

Ich rufe diese Funktion von der Arduino-Seite mit dem folgenden Code auf:

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

Das Problem ist, dass ich nur 8 Mal eine Antwort bekomme. Danach wird der gesamte Programmablauf blockiert. Worin besteht das Problem?


Ich bin mir nicht sicher, was Ihr Problem ist, aber ich würde nach dem Aufruf von demoBasic eine "Verzögerung" in der Schleife versuchen. Ich würde mit 100 ms beginnen. Möglicherweise wird Ihr Code "zu schnell" ausgeführt, dann wird die js-Funktion blockiert.
Fabrosell

@abrosell Ich habe versucht, das auch zu tun, aber es gab immer noch ein Problem. Kannst du irgendetwas vorschlagen, das das Problem lösen könnte?
Abhijeet Kulkarni

Wenn Sie einen Arbeitscode haben, der kontinuierlich Daten an Parse.com senden kann, können Sie diesen freigeben?
Abhijeet Kulkarni

Es tut mir leid, ich habe keine. In jedem Fall ist es ein sehr seltsames Verhalten, wenn die Funktion nur 8 Mal aufgerufen wird und nicht mehr ...
Fabrosell

An welcher Stelle im Code wird der Programmablauf "blockiert"?
Kingsley

Antworten:


1

Probieren Sie es aus, ich hasse String wirklich, vielleicht hat das 8-fache mit Speicherproblemen zu tun, die dadurch verursacht werden.

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());
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.