Exemplo n.º 1
0
def test_lock_timeout():

    register_resources(instruments.resources)

    rc = ResourceManager(visa_library="@mock")
    res: Resource = rc.open_resource("MOCK0::mock1::INSTR")
    res.write(":INSTR:CHANNEL1:VOLT 2.3")

    res.write(":INSTR:CHANNEL1:VOLT 2.3")

    def blocking_thread(res: Resource, event: Event):
        with res.lock_context():
            event.wait()

    block_release: Event = Event()
    blocker: Thread = Thread(
        target=blocking_thread,
        args=[res, block_release],
    )
    try:
        blocker.start()

        with raises(VisaIOError) as e:
            with res.lock_context(timeout=0):
                res.query(":INSTR:CHANNEL1:VOLT?")
        assert e.value.error_code == StatusCode.error_timeout
    finally:
        block_release.set()
        blocker.join()
    reply = res.query(":INSTR:CHANNEL1:VOLT?")
    assert reply == '2.3'
Exemplo n.º 2
0
def test_lock():
    register_resources(instruments.resources)

    rc = ResourceManager(visa_library="@mock")
    res: Resource = rc.open_resource("MOCK0::mock1::INSTR")
    res.lock_excl(timeout=0)
    res.unlock()
Exemplo n.º 3
0
def test_sanity():

    register_resources(instruments.resources)

    rc = ResourceManager(visa_library="@mock")
    res = rc.open_resource("MOCK0::mock1::INSTR")
    res.write(":INSTR:CHANNEL1:VOLT 2.3")
    reply = res.query(":INSTR:CHANNEL1:VOLT?")

    assert reply == '2.3'
Exemplo n.º 4
0
def test_non_blocking_read():
    """
    Make sure the the non blocking read is fast.
    """
    register_resources(instruments.resources)
    rc = ResourceManager(visa_library="@mock")
    res: MockResource = rc.open_resource("MOCK0::mock5::INSTR")
    meas_time = Mocker5.meas_time

    start_time = time.time()
    res.write(":instr:channel1:volt 12")
    end_time = time.time()
    elapsted = end_time - start_time
    assert elapsted < meas_time/2

    # clear the STB reg
    voltage = res.write("*CLS")

    # kick off reading
    start_time = time.time()
    res.write(":inStrument:channel1:MEAS")
    end_time = time.time()
    elapsted = end_time - start_time
    assert elapsted < meas_time/2

    # Make sure time out happens
    with pytest.raises(VisaIOError) as e:
        res.wait_for_srq(0)
    assert e.value.error_code == StatusCode.error_timeout

    # Wait for event interrupt
    start_time = time.time()
    res.wait_for_srq()
    end_time = time.time()
    elapsted = end_time - start_time
    assert elapsted > meas_time/2

    start_time = time.time()
    voltage = res.query(":inStrument:channel1:REAd?")
    end_time = time.time()
    elapsted = end_time - start_time
    assert elapsted < meas_time/2
    assert voltage == "12.0"
Exemplo n.º 5
0
def test_blocking_read():
    """
    Make sure the the measurement takes a while to complete and
    that other operations are fast.
    """
    register_resources(instruments.resources)
    rc = ResourceManager(visa_library="@mock")
    res: MockResource = rc.open_resource("MOCK0::mock5::INSTR")
    meas_time = Mocker5.meas_time

    start_time = time.time()
    res.write(":instr:channel1:volt 12")
    end_time = time.time()
    elapsted = end_time - start_time
    assert elapsted < meas_time/2

    start_time = time.time()
    voltage = res.query(":inStrument:channel1:vOlT?")
    end_time = time.time()
    elapsted = end_time - start_time
    assert elapsted > meas_time/2
    assert voltage == "12.0"