【问题标题】:Processing: Write HTML file from arduino input处理:从 arduino 输入写入 HTML 文件
【发布时间】:2016-08-24 11:16:37
【问题描述】:

我正在尝试使用 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 = " &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代码是:

<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> 

不过,在它第二次从 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 &deg;C <br> 
Humidity: 31.00%  <br> 

我猜这个数组有问题? 任何帮助将不胜感激! :D

【问题讨论】:

  • espruino 为胜利!!!
  • 你能展示你的split函数吗?
  • @JérômeTeisseire dataOutput = split(dataReading, '\n');
  • @JérômeTeisseire 请注意这是一个processing 的问题。 split() 函数内置于处理中。

标签: java html arduino processing


【解决方案1】:

是时候调试您的代码了! (我们无法真正为您做到这一点,因为我们没有您的 Arduino。)

第 1 步: 在您的 serialEvent() 函数中,使用 println() 函数打印出 dataReading 的值。值是您所期望的吗?

第 2 步: 打印出dataOutput 的值。这是你所期望的吗?打印出每个索引。它们都是你所期望的吗?检查多余的空格和控制字符。

第 3 步: 索引是否符合您的预期?我看到您从索引1 开始,而不是索引0。这就是你的意思吗?

关键是,您必须打印出每个变量的值,以确保它们符合您的预期。当您发现具有错误值的变量时,您可以追溯您的代码以准确了解发生了什么。

【讨论】:

  • dataReading 给出正确的输出,dataOutput第一次给出 1 个空格,第二次给出 2 个空格。 dataOutput = split(dataReading, '\n');一定有问题
  • @Jurze 没错。 split() 函数在每个空格上拆分,因此如果您有额外的空格,那么您的索引之一将是一个空的 "" 字符串。在拆分之前,您将不得不跳过此索引或从字符串中去除多余的空间。
  • 感谢您的帮助!我现在修好了。在我的 Arduino 循环的最后一次打印中,我使用了 println() 而不是 print()。这会导致在第一个循环之后开始额外的空间:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多