我正在尝试使用Arduino制作工厂监视器并进行处理。 Processing根据Arduino的传感器输入写入html文件。 WinSCP正在监视为更改创建的文件,并在文件发生更改时直接通过FTP上传。
Arduino通过串口发送以下内容进行处理:
45
0
31
40
x
在处理中使用以下代码我用这个数据编写一个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 = " °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代码是:
<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 °C <br>
Humidity: 35.00% <br>
但是,在第二次从Arduino获取数据后,它看起来像这样:
<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 °C <br>
Humidity: 31.00% <br>
我猜数组有问题吗? 任何帮助将非常感谢! :d
答案 0 :(得分:1)
调试代码的时间! (我们不能真的为你做这件事,因为我们没有你的Arduino。)
第1步:在serialEvent()
功能中,使用println()
功能打印出dataReading
的值。价值是您所期望的吗?
第2步:打印出dataOutput
的值。那是你的期望吗?打印出每个索引。它们都是你所期望的吗?检查额外的空格和控制字符。
第3步:索引是您所期望的吗?我看到你开始使用索引1
而不是索引0
。这是你的意思吗?
关键是,你必须打印出每个变量的值,以确保它们符合你的期望。当您发现变量值不正确时,您可以追溯您的代码,以确切了解发生了什么。