All pastes #2065608 Raw Edit

null

public text v1 · immutable
#2065608 ·published 2011-05-20 12:12 UTC
rendered paste body
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;

}