Хмарна функція зупинки Parse.com у циклі, коли дзвонить з Arduino-yun


11

Я створив функцію хмари за допомогою SDK Parse.com Javascript, і я викликаю ці функції від Arduino. Далі йде код helloфункції:

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

Я викликаю цю функцію зі сторони Arduino, використовуючи наступний код:

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

Проблема в тому, що я отримую відповідь лише 8 разів. Після цього весь потік програми блокується. В чому проблема?


Не впевнений, у чому полягає ваша проблема, але я б спробував "затримати" цикл після виклику demoBasic. Я б почав із 100 мс. Можливо, ваш код виконується "занадто швидко", тоді функція js блокується.
fabrosell

@fabrosell я також намагався це зробити, але все-таки виникла проблема. Можна запропонувати будь-яку річ, яка могла б вирішити проблему.
Abhijeet Kulkarni

Якщо у вас є якийсь робочий код, який постійно може передавати дані на Parse.com, можете поділитися цим?
Abhijeet Kulkarni

Вибачте, у мене немає. Так чи інакше, це дуже дивна поведінка, якщо функція стає викликана всього 8 разів і не більше ...
fabrosell

У який момент у коді потік програми "заблокується"?
Кінгслі

Відповіді:


1

Дайте це постріл, я дуже ненавиджу String, можливо, це 8-річна справа пов'язана з викликаними нею проблемами пам'яті.

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());
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.