0

我想做最简单的事情,用处理软件从 Arduino 的串行端口绘制图形。我使用日食。

我按照教程所说的插件做了。我还复制了来自 arduino 网站的代码:

import processing.serial.*;

Serial myPort;        // The serial port
int xPos = 1;         // horizontal position of the graph

void setup () {

  // set the window size:
  size(400, 300);        

  // List all the available serial ports
  println(Serial.list());

  // I know that the first port in the serial list on my mac
  // is always my  Arduino, so I open Serial.list()[0].
  // Open whatever port is the one you're using.
  myPort = new Serial(this, Serial.list()[0], 9600);

  // don't generate a serialEvent() unless you get a newline character:
  myPort.bufferUntil('\n');

  // set inital background:
   background(0);

}

 void draw () {
   // everything happens in the serialEvent()
 }

void serialEvent (Serial myPort) {

  // get the ASCII string:
  String inString = myPort.readStringUntil('\n');

  if (inString != null) {

    // trim off any whitespace:
    inString = trim(inString);

    // convert to an int and map to the screen height:
    float inByte = float(inString);
    inByte = map(inByte, 0, 1023, 0, height);

    // draw the line:
    stroke(127,34,255);
    line(xPos, height, xPos, height - inByte);

    // at the edge of the screen, go back to the beginning:
    if (xPos >= width) {

      xPos = 0;
      background(0);

    }
    else {

       // increment the horizontal position:
       xPos++;

    }

  }

}

存在bufferUntil('\n')没有触发serialevent的问题。

我知道有一个错误案例,您尝试将 8 位 int 设置为 32 位 int 它会下地狱。

处理 ide 效果很好。Eclipse 根本不触发。有什么解决方案吗?

4

1 回答 1

0

请注意,bufferUntil('\n') 采用整数值。你给它一个字符。至少尝试 bufferUntil(10) 只是为了看看那里是否发生了一些奇怪的事情,但可能值得简单地打印在 myPort 上看到的值,看看当你发送换行符时会发生什么。

于 2013-04-25T19:25:34.937 回答