我试图在串口读取字符串并将字符串中的逗号分隔值解析为数组。我似乎能够这样做,因为我可以读取串行数据并将数组记录下来。我还能够将数组的第一个元素存储到另一个变量中。尝试访问数组中的任何其他元素时出现问题。
import processing.serial.*;
Serial myPort;
String inString="";
PFont font;
int line = 0;
float kph = 0.00;
float distance = 0;
void setup() {
size(300, 300); //size(1920, 1080);
printArray(Serial.list());
String portName = Serial.list()[0];
myPort = new Serial(this, portName, 9600);
myPort.bufferUntil('\n');
font = createFont(PFont.list()[6], 20);
textFont(font);
}
void draw() {
//The serialEvent controls the display
logSerialData(inString);
displayValues();
}
void serialEvent(Serial myPort) {
// read a byte from the serial port:
String inString = myPort.readStringUntil('\n');
// split the string into multiple strings
// where there is a ","
String[] items = split(inString, ',');
kph = float(items[0]);
print(inString);
print(items);
println(items[2]); //processing falls down here: Error, disabling serialEvent() for COM8 null
int size = items.length;
println(size);
}
答案 0 :(得分:1)
如果你得到的错误是
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: ...
这是因为你的数组没有items[2]
,这实际上是数组中的第三个元素。
在Java中,数组从零位开始。
所以第一项是items[0]
第二项是items[1]
您可以看到这些项目的示例
public class Test
{
public static void main(String[] args)
{
String[] items ="a,b".split(",");
for (int i = 0; i < items.length; i++)
{
System.out.println("The item in the position "+i+" has the value "+items[i]);
}
}
}