plot - 从串口绘制数据时如何在处理中编写文本()?
问题描述
最近我正在学习使用我的 arduino UNO 进行处理,我检查了 arduino 图形教程,它就像一个魅力,但是当你绘制数据时我无法刷新简单的文本,例如,如果我有一个来自串行端口的实时数据源。
我想写一个带有该值的文本,但它似乎以某种方式被遮盖/覆盖,并且不可能用数字显示。
检查下图:
绘制该数据的源代码如下:
/*
GreenLine Temperature Graph,
Modified from https://www.arduino.cc/en/Tutorial/Graph
c1b3r
*/
import processing.serial.*;
Serial myPort;
int xPos = 1;
color eggshell = color(255, 253, 248);
int temperaturaActual;
float temperaturaPreviaAltura = 0 ;
String inDataArduino;
PFont font;
void setup () {
size(600,600);
//fullScreen();
frameRate(30);
println(Serial.list());
myPort = new Serial(this, Serial.list()[0], 9600);
myPort.bufferUntil('\n');
background(0);
font = createFont("Arial",32,true);
}
void draw () {
int Xmaxgraph = int(width-(width/4));
println(Xmaxgraph,width, height);
temperaturaActual = int(inDataArduino);
float alturaTemperatura = map(temperaturaActual, 0, 1023, 0, height);
stroke(255,255,255);
line(Xmaxgraph, 0, Xmaxgraph, height);
textSize(40);
fill(255, 0, 0);
textFont(font,16);
text("Temp°", width - 150, 40);
text(temperaturaActual, width - 150, 90);
fill(255,255,0);
text("Estado", width - 150, height-100);
stroke(0,255,0);
line(xPos-1, height - temperaturaPreviaAltura, xPos, height- alturaTemperatura);
temperaturaPreviaAltura = alturaTemperatura;
if (xPos >= Xmaxgraph) {
xPos = 0;
background(0);
} else {
xPos++;
}
}
void serialEvent (Serial myPort) {
inDataArduino = myPort.readStringUntil('\n');
if (inDataArduino != null) {
inDataArduino = trim(inDataArduino);
}
}
这是语法突出显示的代码。
为什么会发生这种行为?我可以做些什么来解决这种情况并在绘制数据时清楚地看到文本?
感谢您对此的帮助,谢谢您,H.
解决方案
大多数处理草图将background()
在每次调用顶部调用该函数draw()
以清除旧帧。background()
只有当图形离开屏幕右边缘时,您才调用该函数。因此,对于大多数帧,您直接在之前的帧之上进行绘制。这就是为什么您会看到自己的文本堆栈。
要解决此问题,您需要在background()
每一帧调用该函数(这将需要重构代码以每次重绘整个图形),或者您可能只需在之前的文本上绘制一个矩形即可。
推荐阅读
- c# - 我想将光线投射到由 x 轴和 z 轴产生的假想平面
- import - 导入的 protobuf 是否应该在 gRPC 中有选项?
- python - PySimpleGUI 输出元素换行符
- javascript - 自定义 Javascript 在 Wordpress 中不起作用
- c# - 如何在 Xamarin 的同一 API 中传递表单数据和 json?
- flutter - 使用ffmpeg向视频添加音频不起作用
- javascript - 使用递归函数时如何避免模块之间的循环依赖?
- flutter - 在颤振/飞镖中与图像下的小部件交互
- javascript - 傀儡师的麻烦。或者,至少,javascript 的麻烦;你决定,请
- javascript - NPM 版本历史 API