JFreeChart: DynamicTimeSeries con un período de n milisegundos
Estoy intentando definir una interfaz en la que quiero trazar algunos valores recibidos por un dispositivo externo. Estos valores se reciben con una frecuencia que se puede configurar a través de la interfaz. Por supuesto, el período de la trama debe cambiar de acuerdo con el período definido por el usuario. Entonces comencé a definir el siguiente gráfico:
int periodMs = 200;
MilliDTSC dataset = new MilliDTSC(1,100, new MultipleOfMillisecond(periodMs));
dataset.setTimeBase(new MultipleOfMillisecond(periodMs))
dataset.addSeries(zeroSeries()),0,"Zero data") // zeroSeries returs a series with values set to 0
JFreeChart chart = createChart(dataset) // create the chart and set ranges and legends
ChartPanel panel = new ChartPanel(panel);
MilliDTSC
es la siguiente clase, como se sugiereaqu:
public class MilliDTSC extends DynamicTimeSeriesCollection{
public MilliDTSC(int nSeries, int nMoments, RegularTimePeriod timeSample){
super(nSeries, nMoments, timeSample);
if(timeSample instanceof Millisecond)
this.pointsInTime = new Millisecond[nMoments]
else if (timeSample instanceof MultipleOfMillisecond)
this.pointsInTime = new MultipleOfMillisecond[nMoments]
}
}
MultipleOfMillisecond
es la siguiente clase:
public class MultipleOfMilliseconds extends Millisecond{
MulitpleOfMilliseconds(int periodMs){
this.periodMs = periodMs
}
public RegularTimePeriod previous(){
RegularTimePeriod result = null;
if(getMillisecond() - periodMs >= FIRST_MILLISECOND_IN_SECOND)
result = new Millisecond((int)getMillisecond - periodMs, getSecond());
else{
Second previous = (Second)getSecond().previous();
if(previous!=null)
result = new Millisecond((int)(getMillisecond() - periodMS + LAST_MILLISECOND_IN_SECOND + 1), previous);
}
return result;
}
// similar for next()
}
Agrego muestra a la serie de la siguiente manera:
dataset.advanceTime();
dataset.appendData(newData);
o que esperaba es que una vez que fijé el período a 200 ms, el gráfico informa en la etiqueta X más o menos 5 valores de tiempo:
00:00:00.000 00:00:05.000 00:00:10.000 00:00:15.000 00:00:20.000
Y esperaba 25 muestras en cada "espacio".
Lo que sucede en su lugar es que tengo 25 muestras para cada "espacio", pero el gráfico informa los siguientes valores en la etiqueta X:
00:00:00.000 00:00:00.025 00:00:00.050 00:00:00.075 00:00:00.100
arece que el período es de 1 ms, pero estoy agregando muestras muy 200 ms.
¿Cómo puedo resolver el problema? Si no estaba claro, por favor dímelo. ¡¡Gracias!