FlexEye Remote Control via Python

Instrument
DCA-X
N109x
Flex Apps:
FlexDCA
Meas. mode:
Eye
Waveform type:
NRZ
PAM4
Package License:
L-RND
L-MFG

When writing programs to remotely use FlexEye, follow these steps:

  • Write a parent program that launches one subprocess (child program) for each session. The parent program can use FlexDCA's primary VISA address to configure, setup, and start FlexEye. This VISA address can be located by clicking Tools > SCPI Programming Tools > SCPI Server Setup.
  • Write a subprocess to make measurements on a session. Your parent program can launch the same or different subprocess for each FlexEye session. The parent program should pass to the subprocess the following arguments:
    • The session's VISA address.
    • A list of all channels assigned to the session that you intend to use.
  • When writing your subprocess, it is a good practice to begin by sending the :SYSTem:DEFault;*OPC? commands. This places the session into a known starting state and pauses program execution until the default setup has completed.
  • All subprocesses are run in parallel and not sequentially. Therefore, the time required to run all subprocesses can be greatly reduced.
  • Subprocesses can be used to simultaneously measure multiple DUTs.

Parent Process

  1. Configure FlexEye using the commands in the :FEYE subsystem.
  2. Launch a child process for each FlexEye session with the following unique arguments:
    1. VISA address for child process.
    2. List of channels for child process.
    3. import subprocess
      command = ['python','subprocess.py','TCPIP0::localhost::hislip2,4880::INSTR','1B']
      subprocess.Popen(command)
  3. Close the FlexDCA parent session.

Child Process

  1. Open a FlexDCA session using the VISA address argument.
  2. Send a :SYSTem:DEFault;*OPC? command to the session. When FlexEye is exited, FlexDCA stores each FlexEye session's settings in memory just like FlexDCA's primary settings. As a result you should almost always reset the session to its defaults settings at the start of any child process.
  3. When FlexEye is launched, all of the channels that are assigned to a session are automatically turned on. However, the default setup recommended above will turn off all channels except for the lowest assigned channel (numerically/alphabetically). For example, if channels 1C, 1D, and 2A are assigned, only channel 1C will be on after a default setup.
  4. You do not need to send the :SYSTem:MODE EYE command since FlexEye sessions only support Eye/Mask mode. A default setup (:SYSTEM:DEFault) does not change FlexDCA out of Eye mode.
  5. Send all FlexDCA commands required to configure and run the measurement on the channel IDs passed as an argument.
  6. Save the results to a database or use another reporting method as your need dictates.
  7. Close the FlexDCA child session.

If your child process needs to confirm that it is controlling FlexDCA running as a FlexEye session rather than N1010A FlexEye or on a DCA-X, use the :SYSTem:HAL? query.

Do not place FlexEye in paused mode while an autoscale is being performed by a session. Doing so can result in unexpected behaviour.