#!/usr/bin/env python import PyTine as pt import numpy as np import random import time import threading from threading import Thread N = 1024 ix = np.arange(N) vals = [np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N)), np.zeros(shape=(N))] ampl = [100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0,100.0] freq = [1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0] noise = [10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0] phase = [ 0, 0 ,0, 0, 0, 0, 0, 0, 0, 0] damp = [10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0] def updateSine(devnr) : f = freq[devnr] a = ampl[devnr] n = noise[devnr] p = phase[devnr] vals[devnr] = n * random.random() + a * np.sin(2 * np.pi * f * ix / N) return; def updateSineCurve() : for i in range(0,10): updateSine(i) rc = pt.pushdata(property='Sine',device='SineDevice'+str(i),data=vals[i].tolist(),scheduled=1) return; def amplHndlr(inpt): dev = inpt['device'] v = inpt['data'] devnr = inpt['devicenumber'] ampl[devnr] = v pt.pushdata(property=inpt['property'],device=dev,data=v) return 0; def freqHndlr(inpt): dev = inpt['device'] v = inpt['data'] devnr = inpt['devicenumber'] freq[devnr] = v pt.pushdata(property=inpt['property'],device=dev,data=v) return 0; def noiseHndlr(inpt): dev = inpt['device'] v = inpt['data'] devnr = inpt['devicenumber'] noise[devnr] = v pt.pushdata(property=inpt['property'],device=dev,data=v) return 0; def phaseHndlr(inpt): dev = inpt['device'] v = inpt['data'] devnr = inpt['devicenumber'] phase[devnr] = v pt.pushdata(property=inpt['property'],device=dev,data=v) return 0; rc = pt.attach_server() rc = pt.attach_handler(property='Amplitude',handler=amplHndlr) rc = pt.attach_handler(property='Frequency',handler=freqHndlr) rc = pt.attach_handler(property='Noise',handler=noiseHndlr) rc = pt.attach_handler(property='Phase',handler=phaseHndlr) for i in range(0,10): rc = pt.pushdata(property='Amplitude',device='SineDevice'+str(i),data=ampl[i]) rc = pt.pushdata(property='Frequency',device='SineDevice'+str(i),data=ampl[i]) rc = pt.pushdata(property='Noise',device='SineDevice'+str(i),data=ampl[i]) rc = pt.pushdata(property='Phase',device='SineDevice'+str(i),data=ampl[i]) updateSineCurve() active = True def cycleThread(): while active: updateSineCurve() time.sleep(0.10) t = Thread(target=cycleThread, args=[]) t.start() print ("Press Enter to exit ...") input() active = False