Example 2. Show Input Variables
Instrument:
                                                N1000A
                                                N109x
                                                UXR Scope
                                            Flex Apps:
                                                FlexDCA
                                                FlexRT
                                            Meas. mode:
                                                Scope
                                                Eye
                                                Jitter
                                                TDR
                                            Package License:
                                                L-RND
                                            This Python example of a user measurement script simply shows the input variables that have been passed from FlexDCA into Python. It illustrates this action and may be useful for troubleshooting. The variables are printed to FlexDCA's Show dialob box and to the text file c:/Temp/Show User Operator Input Vars.txt. After you've been successful with this example, try the Example 3. Butterworth Filter script.
Because Example 1 showed how to install a user measurement, this and the remaining examples will not repeat this procedure.
Example of User Measurement Output dialog
This dialog is updated with each data acquisition. Click FlexDCA's Single button to stop the updates.
 
                                            Required Files
ShowOperatorInputVars.xml
Copy
                                                
                                                    
                                                
                                            
                                            ShowOperatorInputVars.xml
<?xml version="1.0" encoding="utf-8"?>
<Function xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Script>ShowOperatorInputVars.py</Script>
<Name>Show Vars</Name>
<Comments>Writes input variables and their values
to the Show Output window and to the file:
C:/Users/user name/Documents\user_operator_inputVars.txt
</Comments>
<FunctionType>1 Source</FunctionType>
</Function>ShowOperatorInputVars.py
Copy
                                                
                                                    
                                                
                                            
                                        ShowOperatorInputVars.py
""" Python 3.9 FlexDCA User Operator. 
Print the keys and values of the dictionary that is passed from FlexDCA to this
script to the Show Output window. Since Show Output does not accept any
Unicode characters, the print_to_show_window() function removes them.
The Show Output window also truncates lines over 80 characters, but this
function does not correct for this.
    C:\Users\<user name>\Documents\user_operator_inputVars.txt.
"""
firstpass = True
def algorithm(inputVars):
    import time
    global firstpass
    if firstpass == True:
        save_input_vars_to_file(inputVars)
        time.sleep(0.5)
        firstpass = False
    print_input_vars_to_show_output(inputVars)
    XOrg = 0.0
    XInc = 0.0
    Gain = 2.0
    FilterWidth = 0.0
    FilterDelay = 0.0
    XUnits = 'Same'
    YUnits = 'Same'
    ErrorMsg = ''
    SrcData = inputVars['SrcData']
    XOrg = inputVars['XOrg']
    XInc = inputVars['XInc']
    FiltData = SrcData
    return { "FiltData": FiltData,
             "XOrg": XOrg,
             "XInc": XInc,
             "Gain": Gain,
             "FilterWidth": FilterWidth,
             "FilterDelay": FilterDelay,
             "XUnits": XUnits,
             "YUnits": YUnits,
             "ErrorMsg": ErrorMsg
           }
def print_input_vars_to_show_output(inputVars):
    """ . """
    print('Input inputVars from FlexDCA:\n')
    s = ''
    for var, value in inputVars.items():
        s += "  '{0}':  {1} \n".format(var, value)
    print_to_show_window(s)
def save_input_vars_to_file(inputVars):
    """ . """
    import os
    documents_folder = os.path.expanduser("~\\Documents")
    file_path = os.path.join(documents_folder, 'user_operator_inputVars.txt')
    fout = open(file_path, 'wt', encoding='utf-8')
    fout.write('Input inputVars from FlexDCA:\n\n')
    for var, value in inputVars.items():
        s = "  '{0}':  {1}".format(var, value)
        fout.write(s + '\n')
    fout.close()
def print_to_show_window(message):
    """ FlexDCA's Show Output window for user measurements and operators
    causes a error if a Unicode character is in the printed string.
    Removes all Unicode characters. It also removes any '\n' and '\t'
    characters.
    """
    message = message.replace('\n', '1banana')
    message = message.replace('\t', '2squirrels')
    asciiString = message.encode('ascii', 'xmlcharrefreplace')
    cleanMessage = asciiString.decode('utf-8')
    cleanMessage = cleanMessage.replace('1banana', '\n')
    cleanMessage = cleanMessage.replace('2squirrels', '\t')
    print(cleanMessage)