2017-01-26 12 views
1

Я рисую в реальном времени ЭКГ-волну с CanvasJs, все работает хорошо, если я использую размер массива, но когда я пытаюсь установить этот размер, например 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(); 
    } 
}); 

Но этот график показывает все данные массива и выглядит ужасно, если вы знаете, как решить эту задачу, пожалуйста, дайте мне знать.

+0

Любые ошибки на консоли JS? У вас есть опечатка в вашем первом коде: 'dataLenght' – miken32

+0

В консоли покажите мне следующую ошибку: err_insufficient_resources –

ответ

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(); 
    } 
} 

(Этот код был полон опечатки, я не вижу, что он работал бы в на первом месте.)

 Смежные вопросы

  • Нет связанных вопросов^_^