<!DOCTYPE html> <html> <head> <style> button { width: 190px; height: 40px; } #navs { height: 40px; width: 400px; position: relative; } footer { height: 5%; text-align: center; width: 100%; margin-top: 100px; } .clear { clear: left; } .text { text-align: left; width: 400px; text-indent: 20px; } </style> <meta charset="UTF-8"> </head> <body> <div id="main_block" align="center"> <h1>Лабораторная работа</h1> <h2>Акселерометр ADW22035Z - Cемейство ADXL103</h2> <p class="text">Акселерометр подает на выход данные по одной оси.</p> <canvas id="canvasVoltage" width="496" height="240" style="border:0px solid #000000;"> Браузер устарел! Установите современный браузер, для того, чтобы ознакомиться с графиком! </canvas> <p class="text"><center>График 1 - Напряжение на выводе акселерометра</center></p> <canvas id="canvasFFT" width="440" height="240" style="border:0px solid #000000;"> Браузер устарел! Установите современный браузер, для того, чтобы ознакомиться с графиком! </canvas> <p class="text"><center>График 2 - Частотный спектр (быстрое преобразование Фурье)</center></p> <p class="text"><div id="peakFreq"></div> пиковая частота</p> <script> var socket = new WebSocket("ws://2.2.2.2:81"); var i, data; var c1 = document.getElementById("canvasVoltage"); var c2 = document.getElementById("canvasFFT"); var canvasVoltage = c1.getContext("2d"); var canvasFFT = c2.getContext("2d"); var maxX = 456, maxY = 200; var biasX = 20, biasY = 20; //drawXYui(canvasFFT); drawXYui(canvasVoltage); function iY(y) { return maxY + biasY - y; } function drawXYui(someCanvas) { someCanvas.beginPath(); someCanvas.moveTo(20, iY(0)); for (i = 0; i <= 200; i+=20) { someCanvas.lineTo(20, iY(i)); someCanvas.lineTo(15, iY(i)); someCanvas.moveTo(20, iY(i)); textY = i/200*3.3; someCanvas.fillText(textY.toFixed(1), 0, iY(i-2.5)); } someCanvas.moveTo(20, iY(0)); for (i = 20; i <= 420; i+=40) { someCanvas.lineTo(i, iY(0)); someCanvas.lineTo(i, iY(-5)); someCanvas.moveTo(i, iY(0)); textX = (i-20)/456*4 ; someCanvas.fillText(textX.toFixed(1), i-10, iY(-20)); } someCanvas.stroke(); } socket.onopen = function () { alert('Соединение установлено.'); }; socket.onclose = function (event) { if (!event.wasClean) { alert('Обрыв соединения'); } }; socket.onmessage = function (event) { // first canvas update data = JSON.parse(event.data); if(data.data) { canvasVoltage.clearRect(biasX, 0, maxX, maxY + biasY); canvasVoltage.beginPath(); canvasVoltage.moveTo(biasX, data.data[0]+biasY); for (i = 1; i < 256; i++) { canvasVoltage.lineTo(i*2 + biasX, data.data[i] + biasY); } canvasVoltage.stroke(); } if (data.fft) { canvasFFT.clearRect(biasX, 0, maxX, maxY + biasY); canvasFFT.beginPath(); canvasFFT.moveTo(biasX, data.fft[1]+biasY); for (i = 2; i < 128; i++) { canvasFFT.lineTo(i*2 + biasX, data.fft[i] + biasY); } canvasFFT.stroke(); } if (data.peakFreq) { document.getElementById("peakFreq").innerHTML = data.peakFreq; } }; function calibrateDevice() { var calibrating = 10; socket.send(JSON.stringify(calibrating)); document.getElementById("calibrate_text").innerHTML = "Калибровка в течении 10 секунд - Сделайте несколько оборотов устройством перпендикулярно оси Х"; } </script> <div class="clear"></div> </div> <footer> <hr \>Тамбовский Государственный Технический Университет 2017-2018 г. </footer> </body> </html>