【发布时间】:2021-04-16 13:08:16
【问题描述】:
我将 3 个传感器值从 Arduino 发送到处理并将字符串拆分为数组中的三个元素。 有时当我运行程序时,我会收到 ArrayIndexOutOfBoundsException: 2 错误,据我了解,这意味着我正在尝试访问数组中不存在的元素。 我做错了什么?
我的 Processing 和 Arduino 代码如下:
处理:
import processing.serial.*;
Serial port;
float background;
float r1;
int a;
int b;
int c;
PrintWriter output;
Databox Data1 = new Databox(20, 20);
Databox Data2 = new Databox(20, 190);
Databox Data3 = new Databox(20, 360);
void setup() {
size (690, 530);
port = new Serial(this, "COM3", 9600);
output = createWriter(hour() + "." + minute() + "." + second() + ".txt");
}
void draw() {
background(60, 40);
Data1.drawDataboxHumi();
Data2.drawDataboxTemp();
Data3.drawDataboxMoist();
if (port.available() > 0) {
String inString = port.readStringUntil('\n');
if (inString != null) {
inString = trim(inString);
String[] data = split(inString, '#');
a = int(data[0]);
b = int(data[1]);
c = int(data[2]);
output.println("Tidspunkt:" + " " + hour() + ":" + minute() + ":" + second() + " - "
+ "Luftfugtighed:" + a +"%" + " "+ "Temperatur:" + b + " " + "Jordfugtighed:" + " " + c);
output.flush();
}
}
}
阿杜诺:
#include <dht.h>
dht DHT;
#define DHT11_PIN 7
void setup() {
Serial.begin(9600);
pinMode(A0, INPUT);
}
void loop() {
int SensorValue = analogRead(A0);
int chk = DHT.read11(DHT11_PIN);
Serial.print(DHT.humidity);
Serial.print("#");
Serial.print(DHT.temperature);
Serial.print("#");
Serial.print(SensorValue);
Serial.println("#");
delay(1500);
}
【问题讨论】:
标签: arrays string split arduino processing