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.