fireandforget version
This commit is contained in:
parent
4faf53168d
commit
93cbcfefd5
24 changed files with 565 additions and 1840 deletions
|
|
@ -70,12 +70,9 @@ def OSCframe():
|
|||
oscserver.handle_request()
|
||||
|
||||
|
||||
|
||||
|
||||
# OSC server Thread : handler, dacs reports and simulator points sender to UI.
|
||||
def osc_thread():
|
||||
|
||||
|
||||
#print("osc Thread launched")
|
||||
try:
|
||||
while True:
|
||||
|
|
@ -92,8 +89,6 @@ def osc_thread():
|
|||
print("\n")
|
||||
|
||||
|
||||
|
||||
|
||||
# Properly close the system. Todo
|
||||
def Stop():
|
||||
oscserver.close()
|
||||
|
|
|
|||
|
|
@ -398,6 +398,16 @@ def handler(oscpath, args):
|
|||
print()
|
||||
DAChecks()
|
||||
print("Done.")
|
||||
|
||||
|
||||
if oscpath[2] == "reset":
|
||||
import shutil
|
||||
print()
|
||||
shutil.copyfile(gstt.ljpath+'/templates/LJ_template.conf', gstt.ljpath+'/LJ.conf')
|
||||
print("templates/LJ_template.conf copied to LJ.conf.")
|
||||
print("** RESTART LJ **")
|
||||
#LJautokill()
|
||||
|
||||
|
||||
if oscpath[2] == "restart":
|
||||
print()
|
||||
|
|
@ -597,7 +607,7 @@ def UpdateAllwww():
|
|||
Updatepage(gstt.ljpath+"/www/LJ.js")
|
||||
Updatepage(gstt.ljpath+"/www/trckr/trckrcam1.html")
|
||||
Updatepage(gstt.ljpath+"/www/simu.html")
|
||||
Updatepage(gstt.ljpath+"/www/align.html")
|
||||
Updatepage(gstt.ljpath+"/www/settings.html")
|
||||
Updatepage(gstt.ljpath+"/www/auralls.html")
|
||||
Updatepage(gstt.ljpath+"/www/index.html")
|
||||
|
||||
|
|
|
|||
|
|
@ -1012,8 +1012,4 @@ def TextRGB(message, zpos, c, layer, xpos, ypos, resize, rotx, roty, rotz):
|
|||
Text(message, zpos, int('0x%02x%02x%02x' % (red,green,blue),0), layer, xpos, ypos, resize, rotx, roty, rotz)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -15,7 +15,7 @@ from libs3 import gstt
|
|||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
from socket import *
|
||||
|
||||
def Init(wserver):
|
||||
global WSserver
|
||||
|
|
@ -177,6 +177,14 @@ def OSCsend(name, oscaddress, oscargs =''):
|
|||
#PluginStart(name)
|
||||
return False
|
||||
|
||||
def sendbroadcast():
|
||||
|
||||
if gstt.debug > 0:
|
||||
print("Sending broadcast")
|
||||
cs = socket(AF_INET, SOCK_DGRAM)
|
||||
cs.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
|
||||
cs.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
|
||||
cs.sendto("LJ 0.8".encode(), ("255.255.255.255", 54545))
|
||||
|
||||
|
||||
# for each plugin will automatically add /pluginame before oscpath to send like /aurora/scim 1, if oscpath = "/scim 1"
|
||||
|
|
|
|||
|
|
@ -23,44 +23,44 @@ This tracer include an enhanced version (support for several lasers) of the ethe
|
|||
|
||||
- Drawing things :
|
||||
|
||||
/pl/Scene/lasernumber [(x,y,color),(x1,y1,color),...] The live list of drawn pygame points. Tracer continously ask redis for key /clientkey+lasernumber
|
||||
/pl/Scene/lasernumber [(x,y,color),(x1,y1,color),...] The live list of drawn pygame points. Tracer continously ask redis for key /clientkey+lasernumber
|
||||
/resampler/lasernumber [(1.0,8), (0.25,3),(0.75,3),(1.0,10)] : a string for resampling rules.
|
||||
the first tuple (1.0,8) is for short line < 4000 in etherdream space
|
||||
(0.25,3),(0.75,3),(1.0,10) for long line > 4000
|
||||
i.e (0.25,3) means go at 25% position on the line, send 3 times this position to etherdream
|
||||
/clientkey "/pl/SceneNumber/" What Scene to retrieve from redis
|
||||
/clientkey "/pl/SceneNumber/" What Scene to retrieve from redis
|
||||
/EDH/lasernumber
|
||||
|
||||
- Tracer control :
|
||||
|
||||
/order 0-8 Set redis key with new value then issue the order number
|
||||
/order 0-8 Set redis key with new value then issue the order number
|
||||
|
||||
0 : Draw Normal point list
|
||||
1 : Get the new EDH = reread redis key /EDH/lasernumber
|
||||
1 : Get the new EDH = reread redis key /EDH/lasernumber
|
||||
2 : Draw BLACK point list
|
||||
3 : Draw GRID point list
|
||||
4 : Resampler Change (longs and shorts lsteps)
|
||||
5 : Client Key Change = reread redis key /clientkey
|
||||
6 : Max Intensity Change = reread redis key /intensity
|
||||
7 : kpps change = reread redis key /kpps
|
||||
8 : color balance change = reread redis keys /red /green /blue
|
||||
5 : Client Key Change = reread redis key /clientkey
|
||||
6 : Max Intensity Change = reread redis key /intensity
|
||||
7 : kpps change = reread redis key /kpps
|
||||
8 : color balance change = reread redis keys /red /green /blue
|
||||
|
||||
|
||||
- Managing Etherdream DACs :
|
||||
|
||||
Discrete drawing values
|
||||
|
||||
/kpps 0- DAC output speed to laser, then order 7. Depends of actual angle
|
||||
/intensity 0-255 Laser output power, then order 6 (for alignement,...)
|
||||
/red 0-100 % of full red, then order 8
|
||||
/green 0-100 % of full green, then order 8
|
||||
/blue 0-100 % of full blue, then order 8
|
||||
/kpps 0- DAC output speed to laser, then order 7. Depends of actual angle
|
||||
/intensity 0-255 Laser output power, then order 6 (for alignement,...)
|
||||
/red 0-100 % of full red, then order 8
|
||||
/green 0-100 % of full green, then order 8
|
||||
/blue 0-100 % of full blue, then order 8
|
||||
|
||||
DAC status report
|
||||
|
||||
/lstt/lasernumber etherdream last_status.playback_state (0: idle 1: prepare 2: playing)
|
||||
/cap/lasernumber number of empty points sent to fill etherdream buffer (up to 1799)
|
||||
/lack/lasernumber "a": ACK "F": Full "I": invalid. 64 or 35 for no connection.
|
||||
/lstt/lasernumber etherdream last_status.playback_state (0: idle 1: prepare 2: playing)
|
||||
/cap/lasernumber number of empty points sent to fill etherdream buffer (up to 1799)
|
||||
/lack/lasernumber "a": ACK "F": Full "I": invalid. 64 or 35 for no connection.
|
||||
|
||||
|
||||
Geometric corrections
|
||||
|
|
@ -223,7 +223,7 @@ class DAC(object):
|
|||
|
||||
while True:
|
||||
|
||||
#pdb.set_trace()
|
||||
#pdb.set_trace()
|
||||
for indexpoint,currentpoint in enumerate(self.pl):
|
||||
#print indexpoint, currentpoint
|
||||
xyc = [currentpoint[0],currentpoint[1],currentpoint[2]]
|
||||
|
|
@ -335,7 +335,7 @@ class DAC(object):
|
|||
|
||||
# ipconn state is -1 at startup (see gstt) and modified here
|
||||
r.set('/lack/'+str(self.mylaser), self.connstatus)
|
||||
gstt.lstt_ipconn[self.mylaser] = self.connstatus
|
||||
gstt.lstt_ipconn[self.mylaser] = self.connstatus
|
||||
|
||||
self.buf = b''
|
||||
# Upper case PL is the Point List number
|
||||
|
|
@ -349,7 +349,7 @@ class DAC(object):
|
|||
if r.get('/EDH/'+str(self.mylaser)) == None:
|
||||
#print("Laser",self.mylaser,"NO EDH !! Computing one...")
|
||||
homographyp.newEDH(self.mylaser)
|
||||
else:
|
||||
else:
|
||||
|
||||
gstt.EDH[self.mylaser] = np.array(ast.literal_eval(r.get('/EDH/'+str(self.mylaser)).decode('ascii')))
|
||||
#print("Laser",self.mylaser,"found its EDH in redis")
|
||||
|
|
@ -447,9 +447,17 @@ class DAC(object):
|
|||
if order == 0:
|
||||
|
||||
# USER point list
|
||||
self.pl = ast.literal_eval(r.get(self.clientkey+str(self.mylaser)).decode('ascii'))
|
||||
|
||||
#self.pl = ast.literal_eval(r.get(self.clientkey+str(self.mylaser)).decode('ascii'))
|
||||
#print("Tracer : laser", self.mylaser, " order 0 : pl : ",len(self.pl))
|
||||
|
||||
try:
|
||||
self.pl = ast.literal_eval(r.get(self.clientkey+str(self.mylaser)).decode('ascii'))
|
||||
|
||||
except SyntaxError:
|
||||
print("BAD POINTLIST on Tracer : laser", self.mylaser, " order 0 : pl :",self.pl)
|
||||
self.pl = grid_points
|
||||
|
||||
else:
|
||||
|
||||
# Get the new EDH
|
||||
|
|
@ -524,13 +532,13 @@ class DAC(object):
|
|||
time.sleep(0.001)
|
||||
cap += 150
|
||||
|
||||
# print("Writing %d points" % (cap, ))
|
||||
#print("Writing %d points" % (cap, ))
|
||||
#t0 = time.time()
|
||||
#if self.mylaser == 2:
|
||||
# print(points)
|
||||
# print(points)
|
||||
self.write(points)
|
||||
#t1 = time.time()
|
||||
# print("Took %f" % (t1 - t0, )
|
||||
#print("Took %f" % (t1 - t0, )
|
||||
|
||||
if not started:
|
||||
print("Tracer", self.mylaser, "starting with", gstt.kpps[self.mylaser],"kpps")
|
||||
|
|
@ -571,7 +579,7 @@ def find_dac():
|
|||
order = r.get('/order')
|
||||
neworder = order & ~(1<< self.mylaser*2)
|
||||
neworder = neworder & ~(1<< 1+ self.mylaser*2)
|
||||
r.set('/order', str(neworder))
|
||||
r.set('/order', str(neworder))
|
||||
else:
|
||||
|
||||
# Laser bit 0 = 1
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue