2016-11-29 11 views
0

私はArduinoにはかなり新しいので、これは簡単な問題ですが、解決策を見つけることができませんでした。Arduino Webサーバーの応答は「It Works!」です。

私は、Intel Galileo Gen 2ボードを持っています。私は、要求に応じて、センサーから取得した値を返すWebサーバーを提供する簡単なプログラムを作成しようとしています。私はネットワークを正常に設定して値を取得しましたが、サーバーへのすべての要求は「動作します!」メッセージを応答として返します。私は異なるブラウザ(chromwからlynxまで)と異なるneworkの場所で試しました。

#include <SPI.h> 
#include <Ethernet.h> 

byte mac[] = { 0x98, 0x4F, 0xEE, 0x05, 0x65, 0x02 }; 
char SENSORNAME[ ] = "galileo01"; 
IPAddress ip(192, 168, 15, 177); 
IPAddress dnServer(8, 8, 8, 8); 

EthernetServer server(80); 

int sensorPin = A0; // select the input pin for the potentiometer 
int readValue = 0; 
int prevValue = 0; 

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

    system("ifconfig enp0s20f6 down "); 
    system("ip link set enp0s20f6 name eth0"); 
    system("ifconfig eth0 up"); 
    Ethernet.begin(mac, ip, dnServer); 
    server.begin(); 

} 

void loop() { 
    readValue = analogRead(sensorPin); 
    EthernetClient client = server.available(); 
    if (client) { 
    boolean currentLineIsBlank = true; 
    while (client.connected()) { 
     if (client.available()) { 
     char c = client.read(); 
     Serial.write(c); 
     if (c == '\n' && currentLineIsBlank) { 
      client.println("HTTP/1.1 200 OK"); 
      client.println("Content-Type: text/html"); 
      client.println("Connection: close"); 
      client.println(); 
      client.print("{\"sensor\":\""); 
      client.print(SENSORNAME); 
      client.print("\",\"value\":\""); 
      client.print(readValue); 
      client.println("\"}"); 
      break; 
     } 
     if (c == '\n') { 
      // you're starting a new line 
      currentLineIsBlank = true; 
     } 
     else if (c != '\r') { 
      // you've gotten a character on the current line 
      currentLineIsBlank = false; 
     } 
     } 
    } 
    // give the web browser time to receive the data 
    delay(1); 
    // close the connection: 
    client.stop(); 
    Serial.println("client disonnected"); 
    } 
} 

を私が間違っているのは何:

これは私が使用しているコードのですか?

ありがとうございました。


UPDATE:

私が見る何が要求を行う際にループ()関数は、それを処理していないということです。センサーの読み取り結果が表示されますが、if節は決して通過しません。

EthernetClient client = server.available(); 
    if (client) { 

内部Webサーバーはありますか?どうすればいいですか?

+0

はあなたがアルドゥイーノにこのコードを点滅しているかどうか、あなたがよろしいですか? – shazin

+0

私は信じています。私はコードにいくつかのトレースを設定して、私はシリアルモニタで私のメッセージを見ることができます。また、IPに正しく設定されていることがわかります。メッセージに応答しています。 – jordi

答えて

0

私は最終的にそれを見つけました。デフォルトのシステムは、このコードを追加するポート80で新しいサーバを設定することができていなかった実行中のWebサーバーに付属しているisueを解決した:

system("systemctl stop lighttpd > /dev/ttyGS0"); 
system("systemctl stop disable > /dev/ttyGS0"); 
関連する問題