Ayer tuve mi primer contacto con js y obtuve esta pequeña tarea para hacer un pequeño script en el controlador de construcción. Estoy leyendo valores de cierta ubicación y calculando energía, y después de 1 hora debo leer los mismos valores y restarlos para obtener delta de energía delta. La secuencia de comandos debe ejecutarse constantemente, por lo que estoy usando while (1) sleep (3,6 * 1000000)
Aquí está mi código donde estoy
function summa() { var E1 = (parseFloat(read("location1","value1")) * parseFloat(read("location11","value11"))) / Math.pow(10,6) executePropertyCommand("object1","Value","Write", E1) var E2 = (parseFloat(read("location2","value2")) * parseFloat(read("location22","value22"))) / Math.pow(10,6) executePropertyCommand("object2","Value","Write", E2) var IT_Sum = (E1 + E2) return IT_Sum} setTimeout(summa1,3.599 * 1000000);{ function summa1() { var E1 = (parseFloat(read("location1","value1")) * parseFloat(read("location1","value1"))) / Math.pow(10,6) var E2 = (parseFloat(read("location2","value2")) * parseFloat(read("location22","value2"))) / Math.pow(10,6) var IT_Sum1 = (E1 + E2) return IT_Sum1 }} while(1) { var sum1 = summa() var sum2 = summa1() var IT_delta = summa2 - summa1 sleep(3.6 * 1000000)}Intenté ubicar el tiempo de espera establecido en diferentes ubicaciones, como en el ciclo while, pero parece que no puedo obtener el sum2 para esperar el retraso.
¿Alguna idea para una mejor manera de calcular la resta de los mismos datos en bucles de 1 hora?
Puede agregar valores a la matriz cada hora y luego calcular la diferencia de los índices adyacentes.
Para ejecutar el código cada hora, use window.setTimeout y pase la devolución de llamada y la hora.
// array with values added each hour var numbers = []; function runHourly() { var dateNow = new Date(); var mins = dateNow.getMinutes(); var secs = dateNow.getSeconds(); var interval = (60*(60-mins)+(60-secs))*1000; if (interval > 0) { window.setTimeout(runHourly, interval); } // your code for calculating delta goes here numbers.push(summa()); if(numbers.length >= 2) { var IT_delta = numbers[1] - numbers[0]; // do something with delta here // shift array for getting delta in an hour for new values… numbers.shift(); } }