Облачная функция останавливается в цикле Parse.com при вызове из Arduino-yun

Я создал облачную функцию с помощью Javascript SDK Parse.com и вызываю эти функции из Arduino. Ниже приведен код функции hello:

Parse.Cloud.define("hello", function(request, response) {
                response.success("This is hello function");         
}); //привет функция Блок

Я вызываю эту функцию со стороны Arduino, используя следующий код:

void setup() {
  Bridge.begin();
  Serial.begin(9600);

  while (!Serial);

  Parse.begin("***zE0uUjQkMa7nj5D5BALvzegzfyVNSG22BD***", "***Ssggp5JgMFmSHfloewW5oixlM5ibt9LBSE***");
  //только здесь прокомментировал мои ключи *

  // В этом примере мы связываем это устройство с заранее созданной установкой
  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");//параметры

  ParseResponse response = cloudFunction.send();
  Serial.println(response.getJSONBody());
}

Проблема в том, что я получаю ответ только 8 раз. После этого весь поток программы блокируется. В чем проблема?

, 👍11

Обсуждение

Не уверен, в чем ваша проблема, но я бы попробовал «задержку» в цикле после вызова demoBasic. Я бы начал со 100 мс. Возможно, ваш код выполняется «слишком быстро», тогда функция js блокируется., @fabrosell

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

Если у вас есть рабочий код, который может постоянно передавать данные на Parse.com, можете ли вы им поделиться?, @Abhijeet Kulkarni

Извините, у меня их нет. В любом случае, это очень странное поведение, если функция вызывается всего 8 раз и не более..., @fabrosell

В каком месте кода поток программы «блокируется»?, @Kingsley


1 ответ


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