:ACQ:NUMAC? resetting unexpectedly
Posted: January 4th, 2018, 3:48 pm
I'm talking to an MDO3012 scope with pyVISA. I have a strange coordination issue. After I make a change to the voltage scale, for instance, I query the number of acquisitions (start_ac = query(':ACQ:NUMAC?')) and then sit in a while loop until the number of acquisitions equals or exceeds start_ac + num_averages.
Here's the (simplified) code:
This logs:
04:27:28 PM- DEBUG - PyScopeTek: start_ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 1
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 2
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 4
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 6
...etc...
I highlighted the strange line. For some reason, the number of acquisitions reset to 1. Is this a synchronization issue? Prior to this loop, I set the scale (viWrite(2L, ':CH1:SCA 2.00e-01\r\n', 19, 'c_ulong(19L)') -> 0) and queried the acquisition mode (viWrite(2L, ':ACQ:MODE?\r\n', 12, 'c_ulong(12L)') -> 0). Neither of these commands would appear to trigger the *OPC? wait.
Here's the (simplified) code:
Code: Select all
start_ac = int(self.query(':ACQ:NUMAC?'))
ac = start_ac
while ac < start_ac + n_av:
ac = int(self.query(':ACQ:NUMAC?'))
time.sleep(config.scope_intermeasure_delay)
log.debug('PyScopeTek: n_av is {}, start_ac is {}, ac is {}'.format(n_av, start_ac, ac))
04:27:28 PM- DEBUG - PyScopeTek: start_ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(3L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 91
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 1
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 2
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40ABC8>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 4
04:27:28 PM- DEBUG - viWrite(2L, ':ACQ:NUMAC?\r\n', 13, 'c_ulong(13L)') -> 0
04:27:28 PM- DEBUG - TCPIP0::10.1.0.31::inst0::INSTR - reading 20480 bytes (last status <StatusCode.success_max_count_read: 1073676294>)
04:27:28 PM- DEBUG - viRead(2L, <ctypes.c_char_Array_20480 object at 0x000000001D40A048>, 20480, 'c_ulong(2L)') -> 0
04:27:28 PM- DEBUG - PyScopeTek: n_av is 1, start_ac is 91, ac is 6
...etc...
I highlighted the strange line. For some reason, the number of acquisitions reset to 1. Is this a synchronization issue? Prior to this loop, I set the scale (viWrite(2L, ':CH1:SCA 2.00e-01\r\n', 19, 'c_ulong(19L)') -> 0) and queried the acquisition mode (viWrite(2L, ':ACQ:MODE?\r\n', 12, 'c_ulong(12L)') -> 0). Neither of these commands would appear to trigger the *OPC? wait.