import sys, time
from array import array
from ola.ClientWrapper import ClientWrapper
#This is the total number of channels
#our fixtures are using
channels = 8
#Our input and output universes
receiveUniverse = 1
sendUniverse = 2
#This is only used to calculate input framerate
inputFrameCounter = 0
currentTime = time.time()
def dmxSent(state):
pass
def NewData(data):
#Send truncated frame to output universe
global channels
clientSend.SendDmx(sendUniverse, data[:channels], dmxSent)
#Framerate calculation
global inputFrameCounter
global currentTime
inputFrameCounter += 1
if time.time() - currentTime > 1:
sys.stdout.write("-Input framerate: " + str(inputFrameCounter) + "Hz \r")
sys.stdout.flush()
currentTime = time.time()
inputFrameCounter = 0
print "-----truncator-----"
print "Piping data from the input of universe",str(receiveUniverse),"to the output of universe",str(sendUniverse)
#Wrapper and Client for sending to the output universe
wrapperSend = ClientWrapper()
clientSend = wrapperSend.Client()
while True:
try:
#Wrapper and Client for receiving on the input universe
wrapperReceive = ClientWrapper()
clientReceive = wrapperReceive.Client()
clientReceive.RegisterUniverse(receiveUniverse, clientReceive.REGISTER, NewData)
wrapperReceive.Run()
except KeyboardInterrupt:
print "Keyboard interrupt. Exiting.."
sys.exit()
except:
print "wrapperReceive.Run() failed.. trying again"
time.sleep(1)