Arresto della funzione cloud Parse.com in loop quando si chiama da Arduino-yun


11

Ho creato una funzione cloud usando l'SDK Javascript di Parse.com e sto chiamando quelle funzioni da Arduino. Di seguito è riportato il codice per la hellofunzione:

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

Chiamo questa funzione dal lato Arduino usando il seguente codice:

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

Il problema è che sto ricevendo una risposta solo 8 volte. Dopo che l'intero flusso del programma viene bloccato. Qual è il problema?


Non sono sicuro di quale sia il tuo problema, ma proverei un "ritardo" in loop dopo la chiamata a demoBasic. Vorrei iniziare con 100 ms. Forse il tuo codice viene eseguito "troppo velocemente", quindi la funzione js viene bloccata.
fabrosell,

@fabrosell ho provato anche a farlo ma c'era ancora un problema. Puoi suggerire qualsiasi altra cosa che possa risolvere il problema.
Abhijeet Kulkarni,

Se disponi di un codice funzionante in grado di inviare continuamente dati a Parse.com, puoi condividerlo?
Abhijeet Kulkarni,

Mi dispiace, non ne ho. Ad ogni modo, è un comportamento molto strano se la funzione viene chiamata solo 8 volte e non più ...
fabrosell,

A che punto del codice il flusso del programma "viene bloccato"?
Kingsley,

Risposte:


1

Prova, odio davvero String, forse quella cosa di 8 volte ha a che fare con problemi di memoria causati da essa.

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());
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.