如何实时绘制静态范围的心电波?

时间:2017-01-26 19:01:24

标签: javascript charts canvasjs

我正在使用CanvasJs绘制实时ECG Wave,如果我使用数组的大小,一切都很好,但是当我尝试设置该大小例如478点时,这并没有显示即将到来的新数据,图表是静态的,但我发送新数据。

ECG wave

该图表的代码是下一个:

 maxDataLength = 478;
 dataLenght = 0;

   if (result.length !== maxDataLength) {
        for (var i = dataLength; i < result.length; i++)
            {
                data.push({
                    x: parseInt(result[i].valorx),
                    y: parseFloat(result[i].valory)
                });
               if (data.length > maxDataLength) {
               data.shift()}
            }
            dataLength = result.length;
            chart.render();
        }
  });

问题是图表没有加载新数据。

下一个代码对我有用:

dataLength = 0;

if (dataLength !== result.length) {
  for (var i = dataLength; i < result.length; i++) 
        {
            data.push({
                x: parseInt(result[i].valorx),
                y: parseFloat(result[i].valory)
            });
           if (data.length > result.length) {
           data.shift()}
        }
        dataLength = result.length;
        chart.render();
    }
});

但是这张图显示了阵列的所有数据并且看起来很糟糕,如果你知道如何解决这个问题,请告诉我。

1 个答案:

答案 0 :(得分:1)

检查此maxDataLength的唯一位置是在您执行循环之前:

if (result.length !== maxDataLength) {

当它到达maxDataLength时,这将如何停止循环?以下是您的工作代码,修正了拼写错误,并在for循环中进行了一次额外检查,以便将计数器与maxDataLength进行比较:

maxDataLength = 478;
dataLength = 0;

if (dataLength !== result.length) {
    for (var i = dataLength; i < result.length && i <= maxDataLength; i++) {
        data.push({
            x: parseInt(result[i].valorx),
            y: parseFloat(result[i].valory)
        });
        if (data.length > result.length) {
            data.shift();
        }
        dataLength = result.length;
        chart.render();
    }
}

(这段代码充满了拼写错误,我认为它不会起作用。)