2016-08-24 11 views
1

私はArduinoを使用してプラントモニタを作成しようとしています。 処理は、Arduinoによるセンサー入力に基づいてhtmlファイルを書き込みます。 WinSCPは変更用に作成されたファイルを監視しており、ファイルが変更されたときにトラフFTPを直接アップロードします。処理中:arduino入力からHTMLファイルを書き込む

import processing.serial.*; 

Serial myPort; 
String dataReading = ""; 
int lol = 0; 
String string0 = "<h1>Jurze Plants <img src=\"https://html-online.com/editor/tinymce/plugins/emoticons/img/smiley-laughing.gif\" alt=\"laughing\" /></h1>"; 
String string1 = "Moisture Level: "; 
String string2 = " %<br> Motorstate: "; 
String string3 = "<br> Temperature: "; 
String string4 = " &deg;C<br> Humidity: "; 
String string5 = "%<br>"; 

void setup() { 
    size(500, 500); 

    myPort = new Serial(this, "COM4", 9600); 
    myPort.bufferUntil('x'); 
} 

void draw() { 
} 

String [] dataOutput = {}; 

void serialEvent(Serial myPort) { 
    dataReading = myPort.readString(); 
    if (dataReading!=null) { 
     dataOutput = split(dataReading, '\n'); 
     String [] tempfile = {string0,string1,dataOutput[1],string2,dataOutput[2],string3,dataOutput[3],string4,dataOutput[4],string5 }; 
     println("saving to html file..."); 
     saveStrings("data/index.html",tempfile); 
    } 
} 

htmlコード私が手に:私は、このデータを使ってHTMLページを作成する処理で、次のコードを使用して

45 
0 
31 
40 
x 

:Arduinoのシリアルを介して処理に次の送信され

初めての場合:

<h1>Jurze Plants <img src="https://html-online.com/editor/tinymce/plugins/emoticons/img/smiley-laughing.gif" alt="laughing" /></h1> 
Moisture Level: 46 %<br> 
Motorstate: 0 <br> 
Temperature:31.00 &deg;C <br> 
Humidity: 35.00% <br> 

アルドゥイーノからもう一度このように見えます:

<h1>Jurze Plants <img src="https://html-online.com/editor/tinymce/plugins/emoticons/img/smiley-laughing.gif" alt="laughing" /></h1> 
Moisture Level:  %<br> 
Motorstate: 46 <br> 
Temperature:0 &deg;C <br> 
Humidity: 31.00% <br> 

私は配列に何か問題はありますか? ご協力いただければ幸いです! :D

+0

勝つために[espruino](http://www.espruino.com/) –

+0

'split'関数を表示できますか? –

+0

@JérômeTeisseire 'dataOutput = split(dataReading、 '\ n');' – Jurze

答えて

1

コードをデバッグする時間! (私たちはあなたのArduinoを持っていないので、私たちは本当に、あなたのためにこれを行うことはできません。)

ステップ1:をごserialEvent()機能では、dataReadingの値をプリントアウトするprintln()関数を使用します。あなたが期待している価値ですか?

手順2:dataOutputの値を出力します。それはあなたの期待ですか?各インデックスを印刷します。彼らは皆あなたが期待しているものですか?余分なスペースと制御文字がないか確認してください。

ステップ3:インデックスは、あなたが期待しているインデックスですか?インデックス0ではなく、インデックス1で始まっています。それはあなたがすることを意図したものですか?

重要な点は、すべての変数の値を印刷して、期待どおりのものであることを確認する必要があります。変数の値が間違っている場合は、コードをトレースして何が起きているのかを正確に把握することができます。

+0

'dataReading'は正しい出力を与え、' dataOutput'は最初に1スペース、2スペース目に2スペースを与えます。 'dataOutput = split(dataReading、 '\ n');' – Jurze

+0

@Jurzeとまったく間違っている必要があります。 'split()'関数はすべてのスペースで分割されます。余分なスペースがある場合、インデックスの1つは空の文字列になります。このインデックスをスキップするか、分割する前に余分なスペースをストリングから取り除かなければなりません。 –

+0

ご協力ありがとうございます!私は今それを修正した。私のArduinoのループの最後のプリントでは、 'print()'の代わりに 'println()'を使いました。それは最初のループの後に開始する余分なスペースを引き起こします:) – Jurze

関連する問題