我构想了一个测试随机数的实验,即MCU产生随机数后,通过串口传递给上位机Processing,由Processing绘制点云来实现2D平面内的随机数可视化。坦白地说,Java的类库很不熟悉。我的Processing代码如下:
/*
* Random_Serial_2D.pde
*/
import processing.serial.*;
import java.util.StringTokenizer;
Serial myPort; // The serial port
String inString = null;
void setup() {
size(256, 256);
noSmooth();
background(0);
translate(0,0);
stroke(255);
printArray(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
}
void draw() {
int x, y;
String[] sa = null;
int sz;
while (myPort.available() > 0) {
myPort.bufferUntil('\n');
if (inString != null){
//print(inString);
inString = inString.replace("\r\n","");
sa = inString.split(",");
sz = sa.length;
if (sz==2){
x = Integer.parseInt(sa[0]);
y = Integer.parseInt(sa[1]);
point(x,y);
}
inString = null;
}
}
}
void serialEvent(Serial p){
inString = p.readString();
}
从mbed MCU处打印的随机数是这样的格式:"%d,%d\r\n"。截取一段如下:
141,188
255,198
193,224
83,138
53,68
231,142
233,232
187,210
221,204
207,86
17,240
35,26
133,84
183,30
57,248
139,98
现在的现象是,pde代码一旦加上parseInt之类的处理后,接收几组数据后会卡死在那里。我相信Java现在的速度不至于那么LOW,或许有人有过类似经验。请教一下。
单独使用Math.Random或串口收发,都不卡。