The following piece of code simulates a scan using toPyspMonitor(). 7.2.3 shows the final plot. The counter readings ar scalars, the MCA data are spectra.
#!/usr/bin/env python3 # # this script simulates a scan using am MCA and a counter # import random, time import PySpectra, HasyUtils import numpy as np def main(): (status, wasLaunched) = PySpectra.assertPyspMonitorRunning() ret = PySpectra.toPyspMonitor( { 'command': ["cls", "delete"]}) if ret[ 'result'].upper() != 'DONE': print( "error from pyspMonitor %s" % ret[ 'result']) return ret = PySpectra.toPyspMonitor( { 'command': ["setTitle \"An important title\"", "setComment \"An interesting comment\""]}) name = "TestScan" max = 101 MAX = 1024 ret = PySpectra.toPyspMonitor( {'Scan': { 'name': name, 'xMin': 0., 'xMax': 100., 'yMin': 0., 'yMax': 1., 'symbol': '+','symbolColor': 'red', 'symbolSize': 7, 'lineColor': 'blue', 'nPts': max, 'autoscaleX': False, 'autoscaleY': True}}) x = np.linspace(0, 1023, MAX) y = np.random.random_sample( (len( x), ))*1000. ret = PySpectra.toPyspMonitor( {'Scan': { 'name': "MCA", 'flagMCA': True, 'lineColor': 'blue', 'x': x, 'y': y}}) for i in range( max): # # send a new MCA spectrum for every scan point # y = np.random.random_sample( (len( x), ))*1000. ret = PySpectra.toPyspMonitor( {'Scan': { 'name': "MCA", 'flagMCA': True, 'lineColor': 'blue', 'x': x, 'y': y}}) pos = float(i) posY = random.random()*10 PySpectra.toPyspMonitor( { 'command': ['setXY %s %d %s %s' % (name, i, repr(pos), repr(posY))]}) PySpectra.toPyspMonitor( { 'command': ["display"]}) time.sleep( 0.1) print( "Press <space> to continue") while 1: key = HasyUtils.inkey() if key == 32: break time.sleep( 0.1) # # if the pyspMonitor was launched by this script, kill it. # if wasLaunched: hshRet = PySpectra.toPyspMonitor( { 'command': [ 'exit']}) return if __name__ == "__main__": main()