58 lines
1.2 KiB
Python
Executable File
58 lines
1.2 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import sacn
|
|
import time
|
|
|
|
ipaddr = "192.168.68.130"
|
|
|
|
|
|
sender = None
|
|
data = None
|
|
|
|
start = time.time()
|
|
|
|
def init():
|
|
global sender
|
|
global data
|
|
sender = sacn.sACNsender(universeDiscovery=False)
|
|
sender.start() # start the sending thread
|
|
sender.activate_output(2) # start sending out data
|
|
sender[2].destination = ipaddr
|
|
sender.manual_flush = True
|
|
|
|
# initialize global pixel data list
|
|
data = list()
|
|
for x in range(170):
|
|
data.append((1,2,3)) # some random data
|
|
|
|
def fastsendall(datain):
|
|
# send all LED data to all controllers
|
|
# data must have all LED data in it as [(R,G,B,)] tuples in an array, 1 tuple per pixel
|
|
global sender
|
|
sender[2].dmx_data = list(sum(datain[0:170] , ())) # flatten the subsection of the data array
|
|
|
|
sender.flush()
|
|
|
|
def close():
|
|
global sender
|
|
time.sleep(0.5)
|
|
sender.stop()
|
|
|
|
def send_fps(fps=140):
|
|
global start
|
|
while time.time() - start < 1/fps:
|
|
time.sleep(0.00001)
|
|
print("FPS:", 1 / (time.time() - start))
|
|
start = time.time()
|
|
global data
|
|
fastsendall(data)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
init()
|
|
while True:
|
|
send_fps()
|
|
|
|
time.sleep(1)
|
|
close()
|
|
#sys.exit(0) |