Zatrzymywanie funkcji chmury Parse.com w pętli podczas dzwonienia z Arduino-yun


11

Utworzyłem funkcję chmury za pomocą zestawu SDK JavaScript Parse.com i wywołuję te funkcje z Arduino. Poniżej znajduje się kod hellofunkcji:

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

Wywołuję tę funkcję od strony Arduino przy użyciu następującego kodu:

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

Problem w tym, że dostaję odpowiedź tylko 8 razy. Po tym cały przepływ programu zostaje zablokowany. Jaki jest problem?


Nie jestem pewien, na czym polega twój problem, ale spróbuję wykonać „opóźnienie” w pętli po wywołaniu demoBasic. Zacznę od 100 ms. Być może kod wykonuje się „zbyt szybko”, a następnie funkcja js zostaje zablokowana.
fabrosell

@ Fabrosell też próbowałem to zrobić, ale nadal występował problem. Czy możesz zasugerować coś innego, co mogłoby rozwiązać problem.
Abhijeet Kulkarni

Jeśli masz jakiś działający kod, który stale może przesyłać dane do Parse.com, czy możesz to udostępnić?
Abhijeet Kulkarni

Przepraszam, nie mam żadnych. Tak czy inaczej, jest to bardzo dziwne zachowanie, jeśli funkcja zostanie wywołana tylko 8 razy i nigdy więcej ...
fabrosell

W którym momencie kodu program przepływa „zostaje zablokowany”?
Kingsley,

Odpowiedzi:


1

Dajcie temu szansę, naprawdę nienawidzę Stringa, może ta 8-krotna rzecz ma związek z problemami z pamięcią spowodowanymi przez to.

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());
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.