我按照youtube上的指南创建了一个从串口读取的java程序,该程序连接到arduino uno,并在jfreechart XYSeries图上显示读数。 我正在尝试使用连接到arduino的心跳传感器来显示心跳,并且arduino通过串行端口连接。我已经设法在图表上显示读数,但图表从头开始记录读数,但是,我希望它只显示最后一秒或某事,以便图表看起来像真实的心跳读数。这是我绘制值的代码
series = new XYSeries("Heart Reading");
XYSeriesCollection dataset = new XYSeriesCollection(series);
JFreeChart chart = ChartFactory.createXYLineChart(
"Your heartbeats", "Time (seconds)", "ADC Reading", dataset);
window.add(new ChartPanel(chart), BorderLayout.CENTER);
port = SerialPort.getCommPort("COM5");
if(port.openPort()){
System.out.println("Success");
port.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER, 0, 0);
port.setBaudRate(9600);
Thread thread = new Thread(){
@Override public void run() {
Scanner scanner = new Scanner(port.getInputStream());
while(scanner.hasNextLine()) {
try {
String line = scanner.nextLine();
int number = Integer.parseInt(line);
series.add(x++, number);
window.repaint();
} catch(Exception e) {}
}
scanner.close();
}
};
thread.start();
我知道问题是我只是在不删除它们的情况下添加值,但是如果值很多,我怎么能删除它?
答案 0 :(得分:0)
由于您要删除XYSeries的元素,为什么不使用XYSeries类的delete()
方法?
一旦你的系列是一定的长度,你可以开始为你在最后添加的每个元素删除一个元素。
除非我遗漏了一些明显的东西,否则这似乎很容易。