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?

Abhijeet Kulkarni
quelle
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());
}
dBm
quelle