Processing Java 通讯线程假死

我构想了一个测试随机数的实验,即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或串口收发,都不卡。

阅读 2.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题