File: test_redpitaya_scpi_with_device.py

package info (click to toggle)
python-pymeasure 0.14.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 8,788 kB
  • sloc: python: 47,201; makefile: 155
file content (122 lines) | stat: -rw-r--r-- 3,866 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import datetime

import pytest
from pymeasure.instruments.redpitaya import RedPitayaScpi


@pytest.fixture(scope="module")
def redpitaya_scpi(connected_device_address: str):
    """ to use the tests in this file invoke pytest as:
    pytest -k redpitaya_scpi --device-address TCPIP::x.y.z.k::port::SOCKET
    where you replace x.y.z.k byt the device IP address and port by its port address
    """
    instr = RedPitayaScpi(adapter=connected_device_address)
    # ensure the device is in a defined state, e.g. by resetting it.
    instr.digital_reset()
    instr.analog_reset()
    return instr


class TestRedpitaya:

    def test_time_date(self, redpitaya_scpi):
        inst = redpitaya_scpi
        inst.time = datetime.time(13, 7, 20)
        assert inst.time.hour == 13
        assert inst.time.minute == 7

        inst.date = datetime.date(2023, 12, 22)
        assert inst.date == datetime.date(2023, 12, 22)

    def test_led_dio(self, redpitaya_scpi):
        inst = redpitaya_scpi

        for ind in range(8):
            inst.led[ind].enabled = True
            assert inst.led[ind].enabled

            inst.led[ind].enabled = False
            assert not inst.led[ind].enabled

        for ind in range(7):
            inst.dioN[ind].direction_in = True
            assert inst.dioN[ind].direction_in
            inst.dioN[ind].direction_in = False
            assert not inst.dioN[ind].direction_in

            inst.dioN[ind].enabled = True
            assert inst.dioN[ind].enabled

            inst.dioN[ind].enabled = False
            assert not inst.dioN[ind].enabled

        for ind in range(7):
            inst.dioP[ind].direction_in = True
            assert inst.dioP[ind].direction_in
            inst.dioP[ind].direction_in = False
            assert not inst.dioP[ind].direction_in

            inst.dioP[ind].enabled = True
            assert inst.dioP[ind].enabled

            inst.dioP[ind].enabled = False
            assert not inst.dioP[ind].enabled

    def test_analog_slow(self, redpitaya_scpi):
        inst = redpitaya_scpi

        for ind in range(4):
            inst.analog_in_slow[ind].voltage
            inst.analog_out_slow[ind].voltage = 0.5

    def test_acquisition(self, redpitaya_scpi):
        inst = redpitaya_scpi

        for ind in range(17):
            inst.decimation = 2**ind
            assert inst.decimation == 2**ind

        inst.average_skipped_samples = False
        assert inst.average_skipped_samples is False
        inst.average_skipped_samples = True
        assert inst.average_skipped_samples

        assert inst.acq_units == 'VOLTS'
        inst.acq_units = 'RAW'
        assert inst.acq_units == 'RAW'

        assert inst.buffer_length == 16384

        inst.acq_format = 'ASCII'
        inst.acq_format = 'BIN'

        for trigger_source in inst.TRIGGER_SOURCES:
            inst.acq_trigger_source = trigger_source
            if trigger_source == "DISABLED":
                assert inst.acq_trigger_status

        assert inst.acq_buffer_filled is False

        inst.acq_trigger_delay_samples = 0
        assert inst.acq_trigger_delay_samples == 0
        assert inst.acq_trigger_delay_ns == 0

        inst.acq_trigger_delay_samples = 500
        assert inst.acq_trigger_delay_samples == 500
        assert inst.acq_trigger_delay_ns == int(500 / inst.CLOCK * 1e9)

        inst.acq_trigger_delay_ns = RedPitayaScpi.DELAY_NS[10]
        assert inst.acq_trigger_delay_ns == RedPitayaScpi.DELAY_NS[10]
        assert inst.acq_trigger_delay_samples == -8192 + 10

        inst.acq_trigger_level = 0.5
        assert inst.acq_trigger_level == pytest.approx(0.5)

        inst.ain1.gain = 'LV'
        assert inst.ain1.gain == 'LV'

        inst.acq_format = 'BIN'
        inst.ain1.get_data_from_binary()

        inst.acq_format = 'ASCII'
        inst.ain1.get_data_from_ascii()