Arduino-yunから呼び出したときにクラウド機能がループでParse.comを停止する


11

Parse.com Javascript SDKを使用してクラウド関数を作成し、それらの関数を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 2015年

@fabrosell私もそれをやってみましたが、それでも問題がありました。問題を解決するかもしれない何かを提案できますか?
Abhijeet Kulkarni

Parse.comにデータを継続的にプッシュできる作業コードがある場合、それを共有できますか?
Abhijeet Kulkarni

すみません、ありません。いずれにせよ、それは関数がちょうど8回呼び出されていないし、何より...取得した場合、非常に奇妙な行動だ
fabrosell

コードのどの時点でプログラムフローは「ブロックされる」のですか?
キングスレー

回答:


1

これを試してみてください、私は文字列が本当に嫌いです、おそらくそれの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());
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.