1

光センサーの温度 Web パネルの例 (arduino-1.5.6-rw/libraries/Bridge/examples/TemperatureWebPanel にあります)を変更しようとしました。残念ながら、wifi を介した最も単純な送受信の結果でさえ機能しないようです! ご覧のとおり、作業部分をコメントアウトして、テキストをブラウザーに送り返すだけにしましたが、ブラウザーにはまだ何も表示されません。

#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>

// Listen on default port 5555, the webserver on the Yun
// will forward there all the HTTP requests for us.
YunServer server;
String startString;
long hits = 0;

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

  // For debugging, wait until the serial console is connected.
  /*delay(4000);
  while(!Serial);
  Bridge.begin();
*/
  // Bridge startup
  pinMode(13, OUTPUT);
  Bridge.begin();
  digitalWrite(13, HIGH);

  pinMode(A0, INPUT);


  // Listen for incoming connection only from localhost
  // (no one from the external network could connect)
  server.listenOnLocalhost();
  server.begin();

  // get the time that this sketch started:
  Process startTime;
  startTime.runShellCommand("date");
  while (startTime.available()) {
    char c = startTime.read();
    startString += c;
  }

  Serial.println("yeah\n");
  Serial.println(startTime);
}

void loop() {
  // Get clients coming from server
  Serial.println("a\n");
  YunClient client = server.accept();

  // There is a new client?
  if (client) {
    Serial.println("Client!\n");
    // read the command
    String command = client.readString();
    client.print('(This should definitely be sent over bridge)');
    /*command.trim();        //kill whitespace
    Serial.println(command);
    // is "temperature" command?
    if (command == "temperature") {

      // get the time from the server:
      Process time;
      time.runShellCommand("date");
      String timeString = "";
      while (time.available()) {
        char c = time.read();
        timeString += c;
      }
      Serial.println(timeString);
      int sensorValue = analogRead(A0);
      // convert the reading to millivolts:
      client.print("Current time on the Yún: ");
      client.println(timeString);
      client.print("<br>Current value: ");
      client.print(sensorValue);
      client.print("<br>This sketch has been running since ");
      client.print(startString);
      client.print("<br>Hits so far: ");
      client.print(hits);
    }*/

    // Close connection and free resources.
    client.stop();
    hits++;
  }

  delay(50); // Poll every 50ms
}

シリアル モニタに "a" が複数回表示されますが、arduino.local/arduino/temperatureURL には何も表示されず、空の応答のみが表示されます。

さらに、しばらくすると、Yun がネットワークから切断され、http または ssh 経由でアクセスできなくなったようです。ssh がこのコンピューターと通信する主な方法であることを考えると、このような問題をどのようにデバッグするのでしょうか?

4

4 に答える 4

1

自分の構成で段階的にデバッグした後、コードが Bridge.begin() を超えて進んでいないことがわかりました。

さらに調査したところ、デフォルトのブリッジ ボー レートである 250000 が、カーネル ボー レートの 115200 と一致しなくなっていることがわかりました。

変更: Bridge.begin(115200)... 問題を修正しました。

カーネルの速度を確認するにcat /proc/cmdlineは、ターミナルから Yun に実行します。

詳細については、次のリンクを参照してください: https://groups.google.com/forum/#!msg/linino/-rSmpjX4UOM/Cnjv-uzrlfgJ

これが問題でない場合は、Bridge.cpp などの実際のソース ファイルにデバッグ情報 (つまり、Serial.print()) を追加することを検討してください。ドキュメント、例などを更新するためのリソースがあります。

于 2014-09-05T20:51:38.767 に答える
0

Windows を使用している場合は、'arduino.local' を使用しないでください。Windows にはこのホストの解決に問題があるためです。IPアドレスで試しましたか?シリアル経由ではなく、wifi 経由でスクリプトをテレバースする必要があります (arduino Ide では、ポートを変更する必要があります) パス 'arduino/www/' を作成しましたか?

ルートに「arduino」という名前のフォルダーがある Yun に差し込まれたマイクロ SD カードが必要です。「arduino」フォルダー内には、「www」というディレクトリが必要です。ローカルの「www」フォルダーの内容を転送するには、WiFi 経由でスケッチをアップロードする必要があります。USB経由でファイルを転送することはできません。アップロードしたら、お気に入りのブラウザを開いてhttp://arduino.local/sd/TemperatureWebPanelにアクセスできます。

http://YUNS_IP/sd/TemperatureWebPanelを開く必要があります

于 2017-08-07T09:10:18.847 に答える
-1

serial.begin(115...)で置き換えBridge.begin()ます。

于 2015-10-22T19:10:22.337 に答える