forked from defend/nodemcu-lab-1
Никита
7 years ago
3 changed files with 173 additions and 146 deletions
@ -1,91 +1,108 @@ |
|||||
<!DOCTYPE html> |
<!DOCTYPE html> |
||||
<html> |
<html> |
||||
<style> |
<head> |
||||
button { |
<style> |
||||
width: 190px; |
button |
||||
height: 40px; |
{ |
||||
} |
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; |
|
||||
} |
|
||||
</style> |
|
||||
|
|
||||
<body> |
|
||||
<div id="main_block" align="center"> |
|
||||
<h2>Лабораторная работа *НАЗВАНИЕ*</h2> |
|
||||
<h3>Акселерометр ADW22035Z - Cемейство ADXL103</h3> |
|
||||
<p>Акселерометр подает на выход данные по одной оси. |
|
||||
<br />Частота обновления графика - 1 раз в двадцать секунд. |
|
||||
<br />Данные с сенсора снимаются с частотой в 20Hz. </p> |
|
||||
|
|
||||
<canvas id="myCanvas" width="400" height="200" style="border:1px solid #000000;"> |
|
||||
Браузер устарел! |
|
||||
</canvas> |
|
||||
|
|
||||
<script> |
|
||||
var socket = new WebSocket("ws://192.168.4.1:81"); |
|
||||
var data; |
|
||||
var c = document.getElementById("myCanvas"); |
|
||||
var context = c.getContext("2d"); |
|
||||
|
|
||||
socket.onopen = function () { |
|
||||
alert("Соединение установлено."); |
|
||||
}; |
|
||||
socket.onclose = function (event) { |
|
||||
if (!event.wasClean) { |
|
||||
alert('Обрыв соединения'); |
|
||||
} |
|
||||
}; |
|
||||
socket.onmessage = function (event) { |
|
||||
context.clearRect(0, 0, c.width, c.height); |
|
||||
data = event.data; |
|
||||
context.moveTo(0, 0); |
|
||||
for (i = 0; i != 400; i += 2) { |
|
||||
context.lineTo(i, data.root[i]); |
|
||||
} |
|
||||
context.stroke(); |
|
||||
}; |
|
||||
|
|
||||
|
|
||||
|
|
||||
function calibrateDevice() { |
|
||||
var calibrating = 10; |
|
||||
socket.send(JSON.stringify(calibrating)); |
|
||||
document.getElementById("calibrate_text").innerHTML = "Калибровка в течении 10 секунд - Сделайте несколько оборотов устройством перпендикулярно оси Х"; |
|
||||
} |
} |
||||
|
#navs |
||||
context.font = "50px Arial"; |
{ |
||||
context.fillText("24", 320, 170); |
height: 40px; |
||||
</script> |
width: 400px; |
||||
|
position: relative; |
||||
<p id="calibrate_text" onclick="calibrateDevice()">Устройство не откалибровано.</p> |
} |
||||
<button onclick="calibrateDevice()">Откалибровать</button> |
footer |
||||
|
{ |
||||
|
height: 5%; |
||||
|
text-align: center; |
||||
|
width: 100%; |
||||
|
margin-top: 100px; |
||||
|
} |
||||
|
.clear |
||||
|
{ |
||||
|
clear: left; |
||||
|
} |
||||
|
#hbs_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 id="hbs_text">Акселерометр подает на выход данные по одной оси.</p> |
||||
|
<p id="hbs_text">Частота обновления графика - 1 раз в секунду. Данные с сенсора снимаются |
||||
|
с частотой в 50Hz. </p> |
||||
|
<canvas id="myCanvas" width="440" height="240" style="border:0px solid #000000;"> |
||||
|
Браузер устарел! |
||||
|
</canvas> |
||||
|
<script> |
||||
|
var socket = new WebSocket("ws://192.168.1.1:81"); |
||||
|
var i, data; |
||||
|
var c = document.getElementById("myCanvas"); |
||||
|
var context = c.getContext("2d"); |
||||
|
var maxX = 400, maxY = 200; |
||||
|
var biasX = 20, biasY = 20; |
||||
|
|
||||
<div id="navs"> |
function iY(y) { |
||||
<button onclick="window.location.href='/hbs.html'" class="button">Оптодатчик</button> |
return maxY + biasY - y; |
||||
|
} |
||||
|
// отрисовка OY шкалы |
||||
|
context.moveTo(20, iY(0)); |
||||
|
for (i = 0; i <= 200; i+=20) { |
||||
|
context.lineTo(20, iY(i)); |
||||
|
context.lineTo(15, iY(i)); |
||||
|
context.moveTo(20, iY(i)); |
||||
|
textY = i/200*3.3; |
||||
|
context.fillText(textY.toFixed(1), 0, iY(i-2.5)); |
||||
|
} |
||||
|
// отрисовка OX шкалы |
||||
|
context.moveTo(20, iY(0)); |
||||
|
for (i = 20; i <= 420; i+=40) { |
||||
|
context.lineTo(i, iY(0)); |
||||
|
context.lineTo(i, iY(-5)); |
||||
|
context.moveTo(i, iY(0)); |
||||
|
textX = (i-20)/400*4 ; |
||||
|
context.fillText(textX.toFixed(1), i-10, iY(-20)); |
||||
|
} |
||||
|
context.stroke(); |
||||
|
|
||||
|
socket.onopen = function () { |
||||
|
alert('Соединение установлено.'); |
||||
|
}; |
||||
|
socket.onclose = function (event) { |
||||
|
if (!event.wasClean) { |
||||
|
alert('Обрыв соединения'); |
||||
|
} |
||||
|
}; |
||||
|
socket.onmessage = function (event) { |
||||
|
context.clearRect(biasX, biasY, maxX, maxY); |
||||
|
context.beginPath(); |
||||
|
data = JSON.parse(event.data); |
||||
|
context.moveTo(biasX, data.data[0]+biasY); |
||||
|
for (i = 0; i < 200; i++) { |
||||
|
context.lineTo(i*2 + biasX, data.data[i] + biasY); |
||||
|
} |
||||
|
context.stroke(); |
||||
|
}; |
||||
|
function calibrateDevice() { |
||||
|
var calibrating = 10; |
||||
|
socket.send(JSON.stringify(calibrating)); |
||||
|
document.getElementById("calibrate_text").innerHTML = "Калибровка в течении 10 секунд - Сделайте несколько оборотов устройством перпендикулярно оси Х"; |
||||
|
} |
||||
|
</script> |
||||
|
<div class="clear"></div> |
||||
</div> |
</div> |
||||
<div class="clear"></div> |
<footer> |
||||
|
<hr \>Тамбовский Государственный Технический Университет 2017-2018 г. |
||||
</div> |
</footer> |
||||
|
</body> |
||||
<footer> |
|
||||
Тамбовский Государственный Технический Университет 2017 г. |
|
||||
</footer> |
|
||||
|
|
||||
</body> |
|
||||
|
|
||||
</html> |
</html> |
Loading…
Reference in new issue