Chức năng đám mây bị dừng Parse.com trong vòng lặp khi gọi từ Arduino-yun


11

Tôi đã tạo một chức năng đám mây bằng cách sử dụng SDK Javascript của Parse.com và tôi đang gọi các chức năng đó từ Arduino. Sau đây là mã cho hellochức năng:

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

Tôi gọi hàm này từ phía Arduino bằng mã sau:

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

Vấn đề là tôi chỉ nhận được phản hồi 8 lần. Sau đó toàn bộ dòng chương trình bị chặn. Vấn đề là gì?


Không chắc vấn đề của bạn là gì, nhưng tôi sẽ thử một vòng lặp "trì hoãn" sau cuộc gọi đến demoBasic. Tôi sẽ bắt đầu với 100 ms. Có thể mã của bạn thực thi "quá nhanh" thì hàm js bị chặn.
fabrosell

@fabrosell Tôi cũng đã thử làm điều đó nhưng vẫn có vấn đề. Bạn có thể đề xuất bất kỳ điều gì nhẹ nhàng có thể giải quyết vấn đề.
Abhijeet Kulkarni

Nếu bạn có bất kỳ mã làm việc nào liên tục có thể đẩy dữ liệu lên Parse.com, bạn có thể chia sẻ điều đó không?
Abhijeet Kulkarni

Tôi xin lỗi, tôi không có bất kỳ. Dù bằng cách nào, đó là một hành vi rất kỳ lạ nếu chức năng được gọi chỉ 8 lần và không còn nữa ...
fabrosell

Tại thời điểm nào trong mã, chương trình "bị chặn"?
Kingsley

Câu trả lời:


1

Hãy thử xem, tôi thực sự ghét String, có lẽ điều đó 8 lần liên quan đến các vấn đề bộ nhớ do nó gây ra.

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());
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.