Originally Posted by
Omega
Code:
polyRx = E('polyRx');
polyCoreTmp_2 = E('polyCoreTmp_2');
polyCoreTmp_5 = E('polyCoreTmp_5');
top.coreTmp_2[top.coreTmp_2.length] = top.curr_coreTmp_2;
top.coreTmp_5[top.coreTmp_5.length] = top.curr_coreTmp_5;
rxData[rxData.length] = top.curr_rxData*5+40;
drawData(polyCoreTmp_2, top.coreTmp_2, 0, "#FF9000");
drawData(polyCoreTmp_5, top.coreTmp_5, 0, "#33CCFF");
drawData(polyRx, rxData, 0, "#33CCFF");
rxData[rxData.length] = top.curr_rxData*5+40; - это скорость вращения вентилятора (которую мерлин убрал из отрисовки), а температура идет вроде бы без неизменная, но в результате, похоже работает так :
Показания температуры вычитываются скриптом ajax_coretmp.asp
Code:
fanctrl_info = <% get_fanctrl_info(); %>;
curr_rxData = fanctrl_info[3];
curr_coreTmp_2 = fanctrl_info[1];
curr_coreTmp_5 = fanctrl_info[2];
curr_coreTmp_2 = (parseInt(curr_coreTmp_2)+parseInt(curr_coreTmp_5))*0.5;
Т.е. высчитывается среднее значение с обоих интерфейсов (2,4 и 5).
"Подкачка" данных происходит в Advanced_PerformanceTuning_Content.asp, а точнее в двух функциях
1. Апдейт данных через вышеприведенный скрипт
Code:
function update_coretmp(e){
$j.ajax({
url: '/ajax_coretmp.asp',
dataType: 'script',
error: function(xhr){
update_coretmp();
},
success: function(response){
updateNum(curr_coreTmp_2, curr_coreTmp_5);
setTimeout("update_coretmp();", 5000);
}
});
}
2. Обновление глобальной переменной curr_coreTmp_2
Code:
function updateNum(_coreTmp_2, _coreTmp_5){
curr_coreTmp_2 = convertTemp(_coreTmp_2, _coreTmp_5, 0);
if(document.form.fanctrl_fullspeed_temp_unit.value == 1){
$("coreTemp_2").innerHTML = Math.round(_coreTmp_2*9/5+32) + " °F";
$("coreTemp_5").innerHTML = Math.round(_coreTmp_5*9/5+32) + " °F";
}
else{
$("coreTemp_2").innerHTML = _coreTmp_2 + " °C";
$("coreTemp_5").innerHTML = _coreTmp_5 + " °C";
}
}
по правилу
Code:
function convertTemp(__coreTmp_2, __coreTmp_5, _method){
if(_method == 0)
return parseInt(__coreTmp_2)*0.5+20;
else
return (parseInt(__coreTmp_2)-20)*2;
}
,
т.к. _method == 0, то всегда применяется формула = х*0,5+20.
далее отрисовывается в, каждый раз добавляя в конец массива текущее значение curr_coreTmp_2
Code:
function gen_svg(){
polyRx = E('polyRx');
polyCoreTmp_2 = E('polyCoreTmp_2');
polyCoreTmp_5 = E('polyCoreTmp_5');
top.coreTmp_2[top.coreTmp_2.length] = top.curr_coreTmp_2;
top.coreTmp_5[top.coreTmp_5.length] = top.curr_coreTmp_5;
rxData[rxData.length] = top.curr_rxData*5+40;
updateSVG();
}
function updateSVG(){
drawData(polyCoreTmp_2, top.coreTmp_2, 0, "#FF9000");
//drawData(polyCoreTmp_5, top.coreTmp_5, 0, "#33CCFF");
drawData(polyRx, rxData, 0, "#33CCFF");
setTimeout('gen_svg();', 5000);
}
Таким образом получаем, что на графике нам рисуют усредненное значение температуры с обоих интерфейсов, сконвертированное по формуле , т.е. фактически будет :
Т= ((Т2,4 + Т5) / 2 ) /2 + 20.
Учитывая что данная страничка была в новой ревизии отключена от отображения, и вероятность наличия в ней (на всей цепочке) ошибок не нулевая, и учитывая, что :
1. изначально планировалось рисовать графики температуры по обоим интерфейсам (и в сишной функции, и в скрипте апдейта, и в основном скрипте и в свг присутствуют переменные для обоих интерфейсов раздельно).
2. Далее решили оставить один график (закомментировали в свг).
3. Потом (или сразу) решили усреднить - (в аджаксе, и в основном, т.к. функция convertTemp(__coreTmp_2, __coreTmp_5, _method) все еще принимает оба значения ).
То можно сделать вывод (ИМО), сейчас график рисуется левый, т.к. наложились несогласованные изменения по усреднению в разных скриптах. А правильные значения - выдаваемые через wl phy_tempsense, которые постобработкой приведены непонятно к чему ....