Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   web управление на основе javascript (https://javascript.ru/forum/dom-window/50772-web-upravlenie-na-osnove-javascript.html)

MaksLuk 10.10.2014 16:12

web управление на основе javascript
 
Добрый день уважаемые программисты! Есть пару заготовок с ползунками. Идя заключается в управлении поворотом web камеры на двух сервоприводах которые бы управлялись этими ползунками по вертикали и горизонтали (Сейчас Алгоритм управления таков: На HTML странице располагаются ссылки с названиями ПОВОРОТ ВЛЕВО HTTP://192.168.1.111/?BUTTONLEFT И ПОВОРОТ ВПРАВО HTTP://192.168.1.111/?BUTTONRIGHT
при нажатии на ссылку ПОВОРОТ ВЛЕВО сервопривод поворачивается ВЛЕВО, идентично для ПРАВОЙ сервы.

Возможно ли сделать так, чтобы при движении ползунка с шагом 10 web-браузер переходил по ссылке HTTP://192.168.1.111/?BUTTONLEFT, то есть каждый шаг сопровождался переходом=это если ВЛЕВО ползунок от центра потянуть и если потянуть ВПРАВО, то каждый шаг сопровождался бы переходом по ссылке HTTP://192.168.1.111/?BUTTONRIGHT?
)
<head>
<body>
<label for=fader>Управление по горизонтали</label><br>
<input type=range min=-100 max=100 value=0 id=fader step=10 list=volsettings1 oninput="outputUpdate1(value)">
<output for=fader id=volume1>0%</output>
<datalist id=volsettings1>
<option>-100</option>
<option>-80</option>
<option>-60</option>
<option>-40</option>
<option>-20</option>
<option>0</option>
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
<option>100</option>
</datalist><br><br>
<script>
function outputUpdate1(vol) {
  document.querySelector('#volume1').value = vol+"%";}
</script>
<label for=fader>Управление по вертикали</label><br>
<input type=range min=-100 max=100 value=0 id=fader list=volsettings2 step=10 oninput="outputUpdate2(value)">
<output for=fader id=volume2>0%</output>
<datalist id=volsettings2>
<option>-100</option>
<option>-80</option>
<option>-60</option>
<option>-40</option>
<option>-20</option>
<option>0</option>
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
<option>100</option>
</datalist>
<script>
function outputUpdate2(vol) {
  document.querySelector('#volume2').value = vol+"%";}
</script>
</body>

danik.js 10.10.2014 17:25

var request = new XMLHttpRequest();
request.open('GET', '//192.168.1.111/?BUTTONRIGHT');
request.send(null);

danik.js 10.10.2014 17:29

Только, во-избежание рассинхрона, лучше остылай значение ползунка, а не просто сам факт, что его дернули.

MaksLuk 10.10.2014 20:17

Хм...Если тянуть ползунок от центра ВЛЕВО....отправляется запрос //192.168.1.111/?buttonleft, а если ВПРАВО, то тоже самое...//192.168.1.111/?buttonleft,а хотелось бы чтобы отправлялось //192.168.1.111/?buttoright...Где мне нужно подправить код? Спасибо!

<head>
<body>
<label for=fader>Управление по горизонтали</label><br>
<label for=fader>ВЛЕВО&nbsp&nbsp</label>
<output for=fader id=volume1>0%</output>
<label for=fader>&nbsp&nbspВПРАВО</label><br>
<input type=range min=-100 max=100 value=0 id=fader step=10 list=volsettings1 oninput="outputUpdate1(value)">
<datalist id=volsettings1>
<option>-100</option>
<option>-80</option>
<option>-60</option>
<option>-40</option>
<option>-20</option>
<option>0</option>
<option>20</option>
<option>40</option>
<option>60</option>
<option>80</option>
<option>100</option>
</datalist><br><br>
<script>
function outputUpdate1(vol) {
  document.querySelector('#volume1').value = vol+"%";
  var xhr = new XMLHttpRequest();
  xhr.open('GET','//192.168.1.111/?buttonleft');
  xhr.send(null);
}
function outputUpdate2(vol) {
  document.querySelector('#volume1').value = vol+"%";
  var xhr = new XMLHttpRequest();
  xhr.open('GET','//192.168.1.111/?buttoright');
  xhr.send(null);
}
</script>
</body>

danik.js 10.10.2014 20:20

А что скажешь на это?
Цитата:

Сообщение от danik.js
во-избежание рассинхрона, лучше остылай значение ползунка, а не просто сам факт, что его дернули

  

MaksLuk 10.10.2014 20:28

Рассинхрона надеюсь не будет. У меня сервер состоит из одной html страницы. То есть в xhr.send(null);заменить на xhr.send(outputUpdate1(value))"?

MaksLuk 10.10.2014 20:29

Нее че то я не в ту степь...блин...не получилось :)

danik.js 10.10.2014 20:34

Цитата:

Сообщение от MaksLuk
Рассинхрона надеюсь не будет

А если не тянуть ползунок, а кликнуть в его правое положение? Одним щелчком ползунок уйдет в крайнее положение, а сервопривод твой сдвинется только на шаг. Так что это неправильный подход, видишь?

danik.js 10.10.2014 20:35

Либо пересылай положение ползунка, и согласуй с ним положение привода, либо сделай просто две кнопки <- и ->

MaksLuk 10.10.2014 20:42

Так в том то и дело....КНОПКИ я сделал, даже обработчик клавиатуры к ним сделал....все работает....а вот с ползунком...че только не перечитал...jquery,кучу ссылок,на javascript.ru...уже неделю не могу слепить скрипт :)
Вот я алгоритм осознаю,а вот код под него разработать ума не хватает :) Подозреваю,что финиш(лечинка) данной задачи и скрывается в ПОЛОЖЕНИИ ПОЛЗУНКА...:)
Если значение ползунка=10 отправляем один запрос ВПРАВО,так как оно положительное,далее значение=20 отправляем снова вправо и так до 100....ИНАЧЕ если значение = -10 отправляем запрос ВЛЕВО...ну и так дор -100...


Часовой пояс GMT +3, время: 01:10.