Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   математические вычисления (https://javascript.ru/forum/misc/29634-matematicheskie-vychisleniya.html)

Rock877 05.07.2012 16:31

математические вычисления
 
К сожалению не силен в JavaScript, поэтому надеюсь на Вашу помощь.
Суть проблемы следующая. Есть устройство, с которого мы хотим получать данные посредством сети интернет и протокола НТТР. Для этого была создана НТМL страничка, исходный код которой представлен. На устройство при нажатии кнопки «Обновить» посылается запрос вида:
GET/pXX
где ХХ – код/номер датчика.
В ответ от устройства приходит ответ:
ХХхУУУУ
где х – разделитель;
УУУУ – значение датчика в шестнадцатеричном виде (к примеру FFFF).
Это значение отображается в соответствующих INPUT боксах. До сих пор все было хорошо и прекрасно работало.
Проблема возникла, когда встала необходимость перевести значение датчика УУУУ из шестнадцатиричного вида в десятичный и провести над этим числом элементарные математические операции (сложить, умножить, разделить).
Я не разрабатывал страницу и не имел дело с JavaScript, поэтому прошу помочь. Как это можно осуществить? Может быть есть какие примеры?
Исходный код страницы прилагаю.
Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0020)http://192.168.0.30/ -->
<HTML><HEAD><TITLE>6u</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<SCRIPT type=text/javascript>
url='http://192.168.0.30/';
 

 
jx = {
getHTTPObject : function() {
var http = false;
if(typeof ActiveXObject != 'undefined') {
try {http = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {
try {http = new ActiveXObject("Microsoft.XMLHTTP");}
catch (E) {http = false;}
}
} else if (window.XMLHttpRequest) {
try {http = new XMLHttpRequest();}
catch (e) {http = false;}
}
return http;
},
load : function (url,callback,format) {
var http = this.init();
if(!http||!url) return;
if (http.overrideMimeType) http.overrideMimeType('text/xml');
if(!format) var format = "text";
format = format.toLowerCase();
 
http.open("GET", url, true);
http.onreadystatechange = function () {
if (http.readyState == 4){
if(http.status == 200) {
var result = "";
if(http.responseText) result = http.responseText;
if(format.charAt(0) == "j") {
        result = result.replace(/[\n\r]/g,"");
        result = eval('('+result+')');
}
if(callback) callback(result);
} else {
if(error) error(http.status);
}
}
}
http.send(null);
},
init : function() {return this.getHTTPObject();}
}
lastRequestId = -1;
function ask_wrap(id)
{
ask(id);
}
function ask(id)
{
jx.load(url+'p'+id, update);
}
 
function update(ans)
{
(document.getElementById('p'+ans.charAt(0))).value= ans.slice(3);
}
 

 
</SCRIPT>
 
<META content="MSHTML 6.00.6000.20973" name=GENERATOR></HEAD>
<BODY>
<TABLE width="60%" border=1>
  <TR>
    <TH colspan="2">Датчики</TH>
  </TR>
  <TR>
    <TD width="30%">Датчик1</TD>
    <TD width="30%"><INPUT id=p0 value=-----> <INPUT onclick="ask_wrap('0')" type=button value=Обновить></TD></TR>
  <TR>
    <TD>Датчик2</TD>
    <TD><INPUT id=p1 value=-----> <INPUT onclick="ask_wrap('1')" type=button value=Обновить></TD></TR>
  <TR>
    <TD>Датчик3</TD>
    <TD><INPUT id=p2 value=-----> <INPUT onclick="ask_wrap('2')" type=button value=Обновить></TD></TR>
  </TABLE>
  </BODY></HTML>


Deff 05.07.2012 16:43

Rock877,
Лучше ссылку на тестовую страницу - тут XMLHttpRequest не сработает ни разу

lord2kim 05.07.2012 17:15

ИМХО чтобы не заморачиваться проще брать по одному символу из строки полученной от устройства и переводить его в привычный десятиричный вид (A - 10, B - 11,...)
функции для работы со строками

Deff 05.07.2012 17:26

lord2kim,
Да вродь c переводoм нет затруднений

var  input= 'ff';
alert(parseInt(input,16))

lord2kim 05.07.2012 18:49

Цитата:

Сообщение от Deff (Сообщение 186537)
lord2kim,
Да вродь c переводoм нет затруднений

var  input= 'ff';
alert(parseInt(input,16))

O_о буду знать) ниразу подобным не занимался, разве что проверял такой вещью на "является ли числом"

Rock877 08.07.2012 22:50

К сожалению так и не смог разобраться :cray: .
Поэтому прошу помощи :help: . Само собой не бесплатно.
Прошу обсуждать через почту: Rock87@yandex.ru
или форум. Форум предпочтительнее.

nerv_ 08.07.2012 23:00

Rock877,
alert( 0xff );

Deff 08.07.2012 23:01

Rock877,

1. Создайте у себя реально работающую тестовую страницу - выложите ссылку, - тогда сможем преобразовать в десятичный вид в самих input...

*Сейчас там Аякс - который на любой странице , кроме вашей будет лежать безполезным кодом

Rock877 09.07.2012 08:09

Цитата:

Сообщение от Deff (Сообщение 187367)
1. Создайте у себя реально работающую тестовую страницу - выложите ссылку, - тогда сможем преобразовать в десятичный вид в самих input...

*Сейчас там Аякс - который на любой странице , кроме вашей будет лежать безполезным кодом

Что-то я не пойму. Исходный код реально работающей страницы я привел.
Еще раз поясню. Страничка нужна для считывания информации с устройства. Устройство - это черная коробочка с проводами, подключенными к сети (компьютерной). Оно же выступает в качестве сервера в рассматриваемой системе. Т. е. речь не идет о создании сайта.
Куда мне выложить страничку?

Serg_pnz 09.07.2012 21:20

Rock877,
может у вас железка сдохла и не отвечает?
http://192.168.0.30/ молчит.


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