Send data as columns to pyspMonitor, specifying zmqPort

In the folllowing example data is sent to an extra pyspMonitor. It is distinguished from the standard pyspMonitor by selecting a non-standard ZMQ port number, see 7.2.4 and 7.2.4.

#!/usr/bin/env python3
#
# the script sends 4 columns to the pyspMonitor, displays them
# and reads them back. The first column contains the motor position, 
# the common x-axis, the other contain counter readings
#
# In this example a specific ZMQ port is used to not interfere
# with the standard pyspMonitor
#

import PySpectra, HasyUtils
import sys, time
import numpy as np

PORT = 7780

def main(): 
    #
    # make sure that the pyspMonitor is running
    # it could have been launched by:
    #   pyspMonitor3.py -p 7780
    # Otherwise the following line will create it.
    #
    (status, wasLaunched) = PySpectra.assertPyspMonitorRunning( zmqPort = PORT)

    MAX = 10
    pos = np.linspace(0, 10, MAX)
    d1 = np.random.random_sample( (len( pos), ))*1000.
    d2 = np.random.random_sample( (len( pos), ))*1000.
    d3 = np.random.random_sample( (len( pos), ))*1000.

    hsh = { 'putData': { 'title': "Important Data", 
                         'columns': 
                         [ { 'name': "eh_mot01", 'data' : pos},
                           { 'name': "eh_c01", 'data' : d1},
                           { 'name': "eh_c02", 'data' : d2},
                           { 'name': "eh_c03", 'data' : d3},
                       ]}}
    hshRet = PySpectra.toPyspMonitor( hsh, zmqPort = PORT)
    print( "ret %s " % repr( hshRet))
    if hshRet[ 'result'].upper() != 'DONE':
        print( "toPyspMonitor: returns %s" % hshRet[ 'result'])
        sys.exit(255)

    hshRet = PySpectra.toPyspMonitor( { 'command': [ 'display']}, zmqPort = PORT)
    if hshRet[ 'result'].upper() != 'DONE':
        print( "toPyspMonitor: returns %s" % hshRet[ 'result'])
        sys.exit(255)
        
    print( "Press <space> to continue")
    while 1:
        key = HasyUtils.inkey()
        if key == 32:
            break
        time.sleep( 0.1)
    #
    # get the data back
    # 
    hsh = PySpectra.toPyspMonitor( { 'getData': True}, zmqPort = PORT)

    print( "getData received: %s" % repr( hsh))
    #
    # if the pyspMonitor was launched by this script, send an 'exit' to kill it
    #
    if wasLaunched:
        hshRet = PySpectra.toPyspMonitor( { 'command': [ 'exit']}, zmqPort = PORT)
        
    return

if __name__ == "__main__":
    main()

Figure 7.9: Send data as columns to pyspMonitor, specifying zmqPort
Image examplePysp3

Figure 7.10: Send data as columns to pyspMonitor, specifying zmqPort, main pysp widget
Image examplePysp3a