我正在尝试绘制一些通过串口读入的传感器数据。我找到了这个2D绘图仪的Processing示例代码,我正在尝试改变它以适用于我的应用程序。
虽然编程有点过头了。我可以看到它从三个方程类中获取三条线的数据。我想用一个变量或者指向最新传感器更新的东西替换读取mouseX的部分。传感器数据在void Draw()
循环中不断更新。
/**
* RollingGraph
* This sketch makes ise of the RollingLine2DTrace object to
* draw a dynamically updated plot.
*/
import org.gwoptics.graphics.graph2D.Graph2D;
import org.gwoptics.graphics.graph2D.traces.ILine2DEquation;
import org.gwoptics.graphics.graph2D.traces.RollingLine2DTrace;
class eq implements ILine2DEquation{
public double computePoint(double x,int pos) {
return mouseX;
}
}
class eq2 implements ILine2DEquation{
public double computePoint(double x,int pos) {
return mouseY;
}
}
class eq3 implements ILine2DEquation{
public double computePoint(double x,int pos) {
if(mousePressed)
return 400;
else
return 0;
}
}
RollingLine2DTrace r,r2,r3;
Graph2D g;
void setup(){
size(600,300);
r = new RollingLine2DTrace(new eq() ,100,0.1f);
r.setTraceColour(0, 255, 0);
r2 = new RollingLine2DTrace(new eq2(),100,0.1f);
r2.setTraceColour(255, 0, 0);
r3 = new RollingLine2DTrace(new eq3(),100,0.1f);
r3.setTraceColour(0, 0, 255);
g = new Graph2D(this, 400, 200, false);
g.setYAxisMax(600);
g.addTrace(r);
g.addTrace(r2);
g.addTrace(r3);
g.position.y = 50;
g.position.x = 100;
g.setYAxisTickSpacing(100);
g.setXAxisMax(5f);
}
void draw(){
background(200);
g.draw();
}
答案 0 :(得分:2)
不完全确定您拥有的代码是否是您所需要的,但这是一个简单的程序,它接受串行输入并生成线图。希望这会有所帮助。
import processing.serial.*;
Serial myPort;
int x = 0;
void setup() {
size(600, 400);
println(Serial.list()); //list of available serial ports
String portName = Serial.list()[0]; //replace 0 with whatever port you want to use.
myPort = new Serial(this, portName, 9600);
}
void draw() {
}
void serialEvent(Serial myPort) {
int inByte = myPort.read();
println(inByte);
stroke(90, 76, 99);
//vertical line with height varying according to input
line(x, height, x, height - inByte);
if (x >=width) {
x=0;
background(0);
}
x++;
}