Add tests for SCPI synchronization: *WAI, *OPC? and *OPC

This commit is contained in:
Scott Guthridge 2024-04-19 23:21:11 -07:00
parent 41033fdecd
commit 15024eb91e
2 changed files with 53 additions and 0 deletions

View file

@ -4,6 +4,7 @@ testmodules = [
'tests.TestConnect',
'tests.TestStatusRegisters',
'tests.TestMode',
'tests.TestSync',
'tests.TestVNASweep',
'tests.TestCalibration',
'tests.TestGenerator',

View file

@ -0,0 +1,52 @@
from tests.TestBase import TestBase
import time
class TestSync(TestBase):
def test_wai(self):
self.vna.cmd("*RST")
self.vna.cmd("VNA:ACQ:SINGLE TRUE")
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE")
self.vna.cmd("*WAI", timeout=3)
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE")
def test_opc_query(self):
self.vna.cmd("*RST")
self.vna.cmd("VNA:ACQ:SINGLE TRUE")
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE")
resp = self.vna.query("*OPC?", timeout=3)
self.assertEqual(resp, "1")
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE")
def test_opc_poll(self):
self.vna.cmd("*RST")
self.vna.cmd("VNA:ACQ:SINGLE TRUE")
self.vna.cmd("*OPC")
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "FALSE")
time_limit = time.time() + 2
while True:
status = self.vna.get_status()
if status & 0x01:
break
if time.time() >= time_limit:
raise Exception("Timeout waiting for OPC")
time.sleep(0.05)
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE")
self.assertEqual(self.vna.get_status(), 0)
def test_idle_waits(self):
'''
Test that *WAI and *OPC? don't hang when device is idle. Test
that *OPC query sets the OPC status bit immediately.
'''
self.vna.cmd("*RST")
self.vna.cmd("VNA:ACQ:SINGLE TRUE")
self.vna.cmd("*WAI", timeout=3)
self.assertEqual(self.vna.get_status(), 0)
self.assertEqual(self.vna.query(":VNA:ACQ:FIN?"), "TRUE")
self.vna.cmd("*WAI")
resp = self.vna.query("*OPC?")
self.assertEqual(resp, "1")
self.assertEqual(self.vna.get_status(), 0)
self.assertEqual(self.vna.cmd("*OPC"), 0x01) # should return OPC
self.assertEqual(self.vna.get_status(), 0)