function query(scpi) {
enableSRQ();
/* możliwe że wystarczy zrobić to raz, w enable SRQ. Funkcja poniżej jest wbita inline, ale oczywiście powinna być to metoda w srqHandlerze */
this.srqHandler = new SRQHandler(
void handleSRQ() { /* czy jak tam ta funkcja sie nazywa w SRQHandlerze*/
/* funkcja zostanie uruchomiona w watku obslugujacym srq */
/* jesli srq zwraca dane, a nie tylko sygnalizuje o ich gotowosci to: */
this.data = jakis_tam_parametr;
/* ^^^^^ jest OPCJONALNE, zalezy jak działa SRQ */
monitor.signal(); /* metody synchronizacji, signal powoduje że wątek oczekujący na wywołaniu wait() zostaje odblokowany */
}
});
setSRQHandler();
device.send(scpi);
monitor.wait(); /* czekamy aż ktoś da znać - synchronizacja wątków, można dodać timeout żeby nie blokować w nieskończoność i zwracać błąd */
/* mamy dane, trzeba użyć jednego z poniższych, zależnie od działania SRQ */
data = device.read(); // jesli sqrHandler nie ma danych (patrz wyżej)
data = this.srqHandler.getData() // jesli srqHandler jednak ma dane (patrz wyzej)
disableSRQ(); // opcjonalnie
return data;
}