|
@ -50,16 +50,23 @@ const char html_begin[] PROGMEM = R"===( |
|
|
<canvas id="canvasVoltage" width="552" height="240" style="border:0px solid #000000;"> |
|
|
<canvas id="canvasVoltage" width="552" height="240" style="border:0px solid #000000;"> |
|
|
Браузер устарел! Установите современный браузер, для того, чтобы ознакомиться с графиком! |
|
|
Браузер устарел! Установите современный браузер, для того, чтобы ознакомиться с графиком! |
|
|
</canvas> |
|
|
</canvas> |
|
|
<p class="text"><center>График 1 - Напряжение на выводе акселерометра [OX - t,c; OY - U,В]</center></p> |
|
|
<p class="text"><center>График 1 - Напряжение на выводе акселерометра</center></p> |
|
|
|
|
|
<form> |
|
|
|
|
|
<input type="button" OnClick="getCsv(voltageArr);" value="Сохранить данные"> |
|
|
|
|
|
</form> |
|
|
<canvas id="canvasFFT" width="296" height="240" style="border:0px solid #000000;"> |
|
|
<canvas id="canvasFFT" width="296" height="240" style="border:0px solid #000000;"> |
|
|
Браузер устарел! Установите современный браузер, для того, чтобы ознакомиться с графиком! |
|
|
Браузер устарел! Установите современный браузер, для того, чтобы ознакомиться с графиком! |
|
|
</canvas> |
|
|
</canvas> |
|
|
<p class="text"><center>График 2 - Частотный спектр [OX - f,Гц; OY - U,В] (быстрое преобразование Фурье)</center></p> |
|
|
<form> |
|
|
<p class="text"><center><span id="peakFreq">0</span>Hz - пиковая частота</center></p> |
|
|
<input type="button" OnClick="getCsv(fftArr);" value="Сохранить данные"> |
|
|
<p class="text"><center><span id="steps">0</span> шагов</center></p> |
|
|
</form> |
|
|
|
|
|
<p class="text"><center>График 2 - Частотный спектр (быстрое преобразование Фурье)</center></p> |
|
|
|
|
|
<p class="text"><div id="peakFreq">0</div>Hz - пиковая частота</p> |
|
|
|
|
|
<p class="text"><div id="steps">0</div> шагов</p> |
|
|
<script> |
|
|
<script> |
|
|
var socket = new WebSocket("ws://2.2.2.2:81"); |
|
|
var socket = new WebSocket("ws://2.2.2.2:81"); |
|
|
var i, data; |
|
|
var i, data; |
|
|
|
|
|
var voltageArr, fftArr; |
|
|
var c1 = document.getElementById("canvasVoltage"); |
|
|
var c1 = document.getElementById("canvasVoltage"); |
|
|
var c2 = document.getElementById("canvasFFT"); |
|
|
var c2 = document.getElementById("canvasFFT"); |
|
|
var canvasVoltage = c1.getContext("2d"); |
|
|
var canvasVoltage = c1.getContext("2d"); |
|
@ -97,11 +104,11 @@ const char html_begin[] PROGMEM = R"===( |
|
|
function drawXYui2(someCanvas) { |
|
|
function drawXYui2(someCanvas) { |
|
|
someCanvas.beginPath(); |
|
|
someCanvas.beginPath(); |
|
|
someCanvas.moveTo(20, iY(0)); |
|
|
someCanvas.moveTo(20, iY(0)); |
|
|
for (i = 20; i <= 296; i+=40) { |
|
|
for (i = 20; i <= 552; i+=40) { |
|
|
someCanvas.lineTo(i, iY(0)); |
|
|
someCanvas.lineTo(i, iY(0)); |
|
|
someCanvas.lineTo(i, iY(-5)); |
|
|
someCanvas.lineTo(i, iY(-5)); |
|
|
someCanvas.moveTo(i, iY(0)); |
|
|
someCanvas.moveTo(i, iY(0)); |
|
|
textX = (i-20)/256*15 ; |
|
|
textX = (i-20)/276*15 ; |
|
|
someCanvas.fillText(textX.toFixed(1), i-10, iY(-20)); |
|
|
someCanvas.fillText(textX.toFixed(1), i-10, iY(-20)); |
|
|
} |
|
|
} |
|
|
someCanvas.stroke(); |
|
|
someCanvas.stroke(); |
|
@ -126,6 +133,7 @@ const char html_begin[] PROGMEM = R"===( |
|
|
canvasVoltage.lineTo(i*2 + biasX, data.data[i] + biasY); |
|
|
canvasVoltage.lineTo(i*2 + biasX, data.data[i] + biasY); |
|
|
} |
|
|
} |
|
|
canvasVoltage.stroke(); |
|
|
canvasVoltage.stroke(); |
|
|
|
|
|
voltageArr = data.data; |
|
|
} |
|
|
} |
|
|
if (data.fft) { |
|
|
if (data.fft) { |
|
|
canvasFFT.clearRect(biasX, 0, maxX, maxY + biasY); |
|
|
canvasFFT.clearRect(biasX, 0, maxX, maxY + biasY); |
|
@ -135,6 +143,7 @@ const char html_begin[] PROGMEM = R"===( |
|
|
canvasFFT.lineTo(i*2 + biasX, data.fft[i] + biasY); |
|
|
canvasFFT.lineTo(i*2 + biasX, data.fft[i] + biasY); |
|
|
} |
|
|
} |
|
|
canvasFFT.stroke(); |
|
|
canvasFFT.stroke(); |
|
|
|
|
|
fftArr = data.fft; |
|
|
} |
|
|
} |
|
|
if (data.peakFreq) { |
|
|
if (data.peakFreq) { |
|
|
document.getElementById("peakFreq").innerHTML = data.peakFreq; |
|
|
document.getElementById("peakFreq").innerHTML = data.peakFreq; |
|
@ -142,6 +151,20 @@ const char html_begin[] PROGMEM = R"===( |
|
|
} |
|
|
} |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
function downloadableCSV(rows) { |
|
|
|
|
|
var content = "data:text/csv;charset=utf-8,"; |
|
|
|
|
|
rows.forEach(function(row, index) { |
|
|
|
|
|
content += row + "\n"; |
|
|
|
|
|
}); |
|
|
|
|
|
return encodeURI(content); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
function getCsv (array) { |
|
|
|
|
|
if (array) { |
|
|
|
|
|
window.open(downloadableCSV(array)); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
function calibrateDevice() { |
|
|
function calibrateDevice() { |
|
|
var calibrating = 10; |
|
|
var calibrating = 10; |
|
|
socket.send(JSON.stringify(calibrating)); |
|
|
socket.send(JSON.stringify(calibrating)); |
|
|