Função de nuvem interrompida Parse.com em loop ao chamar do Arduino-yun

11

Criei uma função de nuvem usando o SDK Javascript do Parse.com e estou chamando essas funções do Arduino. A seguir está o código para a hellofunção:

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

Estou chamando essa função do lado do Arduino usando o seguinte código:

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

O problema é que estou recebendo resposta apenas 8 vezes. Depois que todo o fluxo do programa é bloqueado. Qual é o problema?

Abhijeet Kulkarni
fonte
Não tenho certeza qual é o seu problema, mas eu tentaria um "atraso" em loop após a chamada para demoBasic. Eu começaria com 100 ms. Talvez seu código seja executado "muito rápido", então a função js será bloqueada.
perfil completo
@fabrosell eu tentei fazer isso também, mas ainda havia problema. Você pode sugerir alguma coisa que possa resolver o problema.
Abhijeet Kulkarni 25/11
Se você tiver algum código de trabalho que possa enviar dados continuamente para o Parse.com, você pode compartilhá-lo?
Abhijeet Kulkarni
Me desculpe, eu não tenho nenhum. De qualquer maneira, é um comportamento muito estranho se a função é chamada apenas 8 vezes e não mais ...
fabrosell
Em que momento do código o fluxo do programa "fica bloqueado"?
Kingsley

Respostas:

1

Dá uma chance, eu realmente odeio String, talvez essa coisa de 8 vezes tenha a ver com problemas de memória causados ​​por ela.

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