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; }