Witam.
Męczę się już bardzo długo z problemem skanowania karty czytnikiem RFID do inputa i przetwarzaniem tego numeru. O tyle jest mi ciężko, że skrypt wykonuje się poprawnie około 19/20 razy, czyli wczytuje 10 znaków DEC, kończy enterem, zamienia je na HEX, odpytuje czy użytkownik ma uprawnienia i wykonuje dalsze polecenia. Ten jeden raz, numer wczytuje się niepełny... 2 cyfry, 8 cyfr, różnie. W tym samym formie co 1 sekundę wywołuję 3 funkcje. Jeśli ich nie wywołuję, to skanowanie działa zawsze.
Jeśli w inpucie pojawił się enter to wykonuję to polecenie:
//jeśli 10 znaków to konwertuję dec to hex
// jeśli 8 znaków, to jest od razu hex i nie muszę robić konwersji
jQuery(function($) {
$('#scan_number_ustawianie').keydown(
function (len){
if(len.keyCode == 13){
scan_number=document.getElementById("scan_number_ustawianie").value;
hid_id=document.getElementById("hid_id").value;
machines_info=document.getElementById("machines_info").value;
ifhow=0;
var n = scan_number.length;
if (n==10)
{
scan_number_hex=decimalToHex(scan_number,8);
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","get_perm.php?code="+scan_number_hex+"&machines_info="+machines_info,false);
xmlhttp.send();
perm=xmlhttp.responseText;
scan("scan_number_ustawianie");
ifhow=1;
}
if (n==8 && ifhow==0)
{
xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST","get_perm.php?code="+scan_number+"&machines_info="+machines_info,false);
xmlhttp.send();
perm=xmlhttp.responseText;
scan("scan_number_ustawianie");
}
}
});
});
//funkcja uaktywniająca przyciski po jakimś czasie i wywołująca 3 funkcje ->
button_time(q);
show_leader_info();
show_shunter_info();
show_kj_info();
które wpływają na ten pojawiający się problem. Wszystkie działają na tej samej zasadzie, wkleję tylko jeden.
function button_time(q)
{
operation_time = get_operation_time();
temp_q = q;
if (a<operation_time && q==0)
{
if (document.getElementById('minus') !==null)
{
document.getElementById('minus').setAttribute("disabled","disabled");
document.getElementById('minus_2').setAttribute("disabled","disabled");
document.getElementById('minus').style.backgroundColor = "silver";
document.getElementById('minus_2').style.backgroundColor = "silver";
document.getElementById('minus').src = "images/accept_grey.png";
document.getElementById('minus_2').src = "images/delete_grey.png";
document.getElementById('repeat').setAttribute("disabled","disabled");
document.getElementById('repeat').style.backgroundColor = "silver";
}
}
else
{
if (document.getElementById('minus') !==null)
{
document.getElementById('minus').removeAttribute("disabled");
document.getElementById('minus_2').removeAttribute("disabled");
document.getElementById('repeat').removeAttribute("disabled");
document.getElementById('minus').src = "images/accept.png";
document.getElementById('minus_2').src = "images/delete.png";
document.getElementById('minus').style.backgroundColor = "green";
document.getElementById('minus_2').style.backgroundColor = "red";
document.getElementById('repeat').style.backgroundColor = "red";
}
}
a=a+1;
setTimeout(
function()
{
button_time(q);
show_leader_info();
show_shunter_info();
show_kj_info();
} , 1000
);
}
function show_leader_info()
{
xmlhttp2 = new XMLHttpRequest();
xmlhttp2.open("POST","get_come_on_leader.php?type=2",false);
xmlhttp2.send();
if (xmlhttp2.readyState == 4 && xmlhttp2.status == 200)
{
document.getElementById("inner").innerHTML = xmlhttp2.responseText;
}
machines_info=document.getElementById("machines_info").value;
xmlhttp3 = new XMLHttpRequest();
xmlhttp3.open("GET","get_come_on_leader.php?type=3&id="+machines_info,false);
xmlhttp3.send();
if (xmlhttp3.readyState == 4 && xmlhttp3.status == 200)
{
rowcount = xmlhttp3.responseText;
}
if (rowcount==1)
{
document.getElementById("leader_show").style = "display:none;";
document.getElementById("leader_hide").style = "display:block; background-color:red;";
}
//////////////////////////////////////
}
I jeszcze fragment get_come_on_leader.php
if ($type==2)
{
$query = "SELECT name from machines where come_on_leader = 1";
$result = mysqli_query($con,$query);
$rowcount=mysqli_num_rows($result);
if ($rowcount>0)
{
echo '<span style="font-size:24px; color:red; font-weight: bold;">PROWADZĄCY PROSZONY NA:</span>';
echo '<span style="font-size:24px; color:green; font-weight: bold;"> ';
}
while($row = mysqli_fetch_array($result))
{
echo $row['name'];
echo ' | ';
}
echo '</span>';
}
if ($type==3)
{
$id = $_GET['id'];
$query2 = "SELECT id from machines WHERE id= '$id' and come_on_leader= '1' ";
$result2= mysqli_query($con,$query2);
$rowcount=mysqli_num_rows($result2);
echo $rowcount;
}
Bardzo bym prosił o jakąś sugestię co powoduje przerwanie wczytywania tego numeru. Co najlepsze, czasem jest to tylko środkowy fragment...
Z JS zaczynam dopiero przygodę, pewnie kod bardzo mało optymalny. Dziękuję za wszelkie rady.