forked from protonphoton/LJ
UI updates
This commit is contained in:
parent
8fd1202bc4
commit
cd9461a8fc
@ -15,6 +15,7 @@ import configparser
|
||||
from libs3 import gstt
|
||||
import ast
|
||||
import numpy as np
|
||||
import updateUI
|
||||
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
@ -22,6 +23,7 @@ config.read(gstt.ConfigName)
|
||||
|
||||
qList = [
|
||||
{"q":"The server IP address ","c":"General","k":"ljayserverip"},
|
||||
{"q":"The IP address or domain for webui","c":"General","k":"wwwip"},
|
||||
{"q":"How many lasers to use ","c":"General","k":"lasernumber"},
|
||||
{"q":"Laser 0 IP address ","c":"laser0","k":"ip"},
|
||||
{"q":"Laser 1 IP address ","c":"laser1","k":"ip"},
|
||||
@ -52,4 +54,7 @@ while stop == False :
|
||||
new_value = input("Please enter the new value:")
|
||||
config.set(choice["c"],choice["k"],new_value)
|
||||
config.write(open(gstt.ConfigName,'w'))
|
||||
print(choice["c"],choice["k"])
|
||||
if choice["k"] == "wwwip":
|
||||
updateUI.www(new_value)
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- mode: Python -*-
|
||||
'''
|
||||
LJay/LJ
|
||||
LJ
|
||||
v0.7.0
|
||||
|
||||
Settings Handler
|
||||
|
277
plugins/custom1.py
Normal file
277
plugins/custom1.py
Normal file
@ -0,0 +1,277 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- mode: Python -*-
|
||||
|
||||
|
||||
'''
|
||||
|
||||
custom1
|
||||
v0.1.0
|
||||
|
||||
A copy of square.py you can modify to code your plugin.
|
||||
custom1 has necessary hooks in LJ.conf, webui and so on.
|
||||
|
||||
|
||||
LICENCE : CC
|
||||
|
||||
by Sam Neurohack
|
||||
|
||||
|
||||
'''
|
||||
import sys
|
||||
import os
|
||||
print()
|
||||
ljpath = r'%s' % os.getcwd().replace('\\','/')
|
||||
|
||||
# import from shell
|
||||
|
||||
sys.path.append(ljpath +'/../libs/')
|
||||
|
||||
#import from LJ
|
||||
sys.path.append(ljpath +'/libs/')
|
||||
print(ljpath+'/../libs/')
|
||||
|
||||
import lj23layers as lj
|
||||
|
||||
sys.path.append('../libs')
|
||||
from OSC3 import OSCServer, OSCClient, OSCMessage
|
||||
import redis
|
||||
import math
|
||||
import time
|
||||
import argparse
|
||||
|
||||
OSCinPort = 8014
|
||||
|
||||
print ("")
|
||||
print ("Arguments parsing if needed...")
|
||||
argsparser = argparse.ArgumentParser(description="Custom1 example for LJ")
|
||||
argsparser.add_argument("-r","--redisIP",help="IP of the Redis server used by LJ (127.0.0.1 by default) ",type=str)
|
||||
argsparser.add_argument("-s","--scene",help="LJ scene number (0 by default)",type=int)
|
||||
#argsparser.add_argument("-l","--laser",help="Laser number to be displayed (0 by default)",type=int)
|
||||
argsparser.add_argument("-v","--verbose",help="Verbosity level (0 by default)",type=int)
|
||||
argsparser.add_argument("-m","--myIP",help="Local IP (127.0.0.1 by default) ",type=str)
|
||||
|
||||
args = argsparser.parse_args()
|
||||
|
||||
if args.scene:
|
||||
ljscene = args.scene
|
||||
else:
|
||||
ljscene = 0
|
||||
'''
|
||||
if args.laser:
|
||||
plnumber = args.laser
|
||||
else:
|
||||
plnumber = 0
|
||||
'''
|
||||
|
||||
# Redis Computer IP
|
||||
if args.redisIP != None:
|
||||
redisIP = args.redisIP
|
||||
else:
|
||||
redisIP = '127.0.0.1'
|
||||
|
||||
print("redisIP",redisIP)
|
||||
|
||||
# myIP
|
||||
if args.myIP != None:
|
||||
myIP = args.myIP
|
||||
else:
|
||||
myIP = '127.0.0.1'
|
||||
|
||||
print("myIP",myIP)
|
||||
if args.verbose:
|
||||
debug = args.verbose
|
||||
else:
|
||||
debug = 0
|
||||
|
||||
# Useful variables init.
|
||||
white = lj.rgb2int(255,255,255)
|
||||
red = lj.rgb2int(255,0,0)
|
||||
blue = lj.rgb2int(0,0,255)
|
||||
green = lj.rgb2int(0,255,0)
|
||||
|
||||
width = 800
|
||||
height = 600
|
||||
centerX = width / 2
|
||||
centerY = height / 2
|
||||
|
||||
# 3D to 2D projection parameters
|
||||
fov = 256
|
||||
viewer_distance = 2.2
|
||||
|
||||
# Anaglyph computation parameters for right and left eyes.
|
||||
# algorythm come from anaglyph geo maps
|
||||
eye_spacing = 100
|
||||
nadir = 0.5
|
||||
observer_altitude = 30000
|
||||
map_layerane_altitude = 0.0
|
||||
|
||||
# square coordinates : vertices that compose each of the square.
|
||||
vertices = [
|
||||
(- 1.0, 1.0,- 1.0),
|
||||
( 1.0, 1.0,- 1.0),
|
||||
( 1.0,- 1.0,- 1.0),
|
||||
(- 1.0,- 1.0,- 1.0)
|
||||
]
|
||||
|
||||
face = [0,1,2,3]
|
||||
|
||||
#
|
||||
# LJ inits
|
||||
#
|
||||
|
||||
layer = 0
|
||||
|
||||
# Setup LJ library mandatory properties for this plugin
|
||||
lj.Config(redisIP, ljscene, "custom1")
|
||||
|
||||
# Define properties for each drawn "element" : name, intensity, active, xy, color, red, green, blue, layer , closed
|
||||
Leftsquare = lj.FixedObject('Leftsquare', True, 255, [], red, 255, 0, 0, layer , True)
|
||||
Rightsquare = lj.FixedObject('Rightsquare', True, 255, [], green, 0, 255, 0, layer , True)
|
||||
|
||||
# 'Destination' for given layer : name, number, active, layer , scene, laser
|
||||
Dest0 = lj.DestObject('0', 0, True, 0 , 0, 0) # Dest0 will send layer 0 points to scene 0, laser 0
|
||||
|
||||
|
||||
#
|
||||
# Anaglyph computation : different X coordinate for each eye
|
||||
#
|
||||
|
||||
def LeftShift(elevation):
|
||||
|
||||
diff = elevation - map_layerane_altitude
|
||||
return nadir * eye_spacing * diff / (observer_altitude - elevation)
|
||||
|
||||
def RightShift(elevation):
|
||||
|
||||
diff = map_layerane_altitude - elevation
|
||||
return (1 - nadir) * eye_spacing * diff / (observer_altitude - elevation)
|
||||
|
||||
#
|
||||
# OSC
|
||||
#
|
||||
|
||||
oscserver = OSCServer( (myIP, OSCinPort) )
|
||||
oscserver.timeout = 0
|
||||
|
||||
|
||||
# this method of reporting timeouts only works by convention
|
||||
# that before calling handle_request() field .timed_out is
|
||||
# set to False
|
||||
def handle_timeout(self):
|
||||
self.timed_out = True
|
||||
|
||||
# funny python's way to add a method to an instance of a class
|
||||
import types
|
||||
oscserver.handle_timeout = types.MethodType(handle_timeout, oscserver)
|
||||
|
||||
|
||||
# OSC callbacks
|
||||
|
||||
# /custom1/ljscene
|
||||
def OSCljscene(path, tags, args, source):
|
||||
|
||||
print("Got /custom1/ljscene with value", args[0])
|
||||
lj.WebStatus("custom1 to virtual "+ str(args[0]))
|
||||
ljscene = args[0]
|
||||
lj.Ljscene(ljscene)
|
||||
|
||||
|
||||
def Proj(x,y,z,angleX,angleY,angleZ):
|
||||
|
||||
rad = angleX * math.pi / 180
|
||||
cosa = math.cos(rad)
|
||||
sina = math.sin(rad)
|
||||
y2 = y
|
||||
y = y2 * cosa - z * sina
|
||||
z = y2 * sina + z * cosa
|
||||
|
||||
rad = angleY * math.pi / 180
|
||||
cosa = math.cos(rad)
|
||||
sina = math.sin(rad)
|
||||
z2 = z
|
||||
z = z2 * cosa - x * sina
|
||||
x = z2 * sina + x * cosa
|
||||
|
||||
rad = angleZ * math.pi / 180
|
||||
cosa = math.cos(rad)
|
||||
sina = math.sin(rad)
|
||||
x2 = x
|
||||
x = x2 * cosa - y * sina
|
||||
y = x2 * sina + y * cosa
|
||||
|
||||
|
||||
""" Transforms this 3D point to 2D using a perspective projection. """
|
||||
factor = fov / (viewer_distance + z)
|
||||
x = x * factor + centerX
|
||||
y = - y * factor + centerY
|
||||
return (x,y)
|
||||
|
||||
|
||||
#
|
||||
# Main
|
||||
#
|
||||
|
||||
def Run():
|
||||
|
||||
|
||||
Left = []
|
||||
Right = []
|
||||
counter =0
|
||||
#lj.SendLJ("/custom1/start 1")
|
||||
|
||||
# OSC Server callbacks
|
||||
print("Starting OSC server at",myIP," port",OSCinPort,"...")
|
||||
oscserver.addMsgHandler( "/custom1/ljscene", OSCljscene )
|
||||
|
||||
# Add OSC generic plugins commands : 'default", /ping, /quit, /pluginame/obj, /pluginame/var, /pluginame/adddest, /pluginame/deldest
|
||||
lj.addOSCdefaults(oscserver)
|
||||
|
||||
try:
|
||||
|
||||
while lj.oscrun:
|
||||
|
||||
lj.OSCframe()
|
||||
Left = []
|
||||
Right = []
|
||||
|
||||
x = vertices[0][0]
|
||||
y = vertices[0][1]
|
||||
z = vertices[0][2]
|
||||
|
||||
# LJ tracers will "move" the laser to this first point in black, then move to the next with second point color.
|
||||
# For more accuracy in dac emulator, repeat this first point.
|
||||
|
||||
# Generate all points in square.
|
||||
for point in face:
|
||||
x = vertices[point][0]
|
||||
y = vertices[point][1]
|
||||
z = vertices[point][2]
|
||||
|
||||
Left.append(Proj(x+LeftShift(z*25),y,z,0,counter,0))
|
||||
Right.append(Proj(x+RightShift(z*25),y,z,0,counter,0))
|
||||
|
||||
|
||||
lj.PolyLineOneColor(Left, c = Leftsquare.color , layer = Leftsquare.layer, closed = Leftsquare.closed)
|
||||
lj.PolyLineOneColor(Right, c = Rightsquare.color , layer = Rightsquare.layer, closed = Rightsquare.closed)
|
||||
|
||||
lj.DrawDests()
|
||||
|
||||
|
||||
time.sleep(0.1)
|
||||
|
||||
counter += 1
|
||||
if counter > 360:
|
||||
counter = 0
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
# Gently stop on CTRL C
|
||||
|
||||
finally:
|
||||
|
||||
lj.ClosePlugin()
|
||||
|
||||
|
||||
Run()
|
279
plugins/square.py
Normal file
279
plugins/square.py
Normal file
@ -0,0 +1,279 @@
|
||||
#!/usr/bin/python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- mode: Python -*-
|
||||
|
||||
|
||||
'''
|
||||
|
||||
Square
|
||||
v0.1.0
|
||||
|
||||
Anaglyphed rotating square (for red and green glasses)
|
||||
|
||||
This scene uses the drawing functions provided by LJ in lj23.py
|
||||
|
||||
LICENCE : CC
|
||||
|
||||
by Sam Neurohack
|
||||
|
||||
|
||||
'''
|
||||
import sys
|
||||
import os
|
||||
print()
|
||||
ljpath = r'%s' % os.getcwd().replace('\\','/')
|
||||
|
||||
# import from shell
|
||||
|
||||
sys.path.append(ljpath +'/../libs/')
|
||||
|
||||
#import from LJ
|
||||
sys.path.append(ljpath +'/libs/')
|
||||
print(ljpath+'/../libs/')
|
||||
|
||||
import lj23layers as lj
|
||||
|
||||
sys.path.append('../libs')
|
||||
from OSC3 import OSCServer, OSCClient, OSCMessage
|
||||
import redis
|
||||
import math
|
||||
import time
|
||||
import argparse
|
||||
|
||||
OSCinPort = 8013
|
||||
|
||||
print ("")
|
||||
print ("Arguments parsing if needed...")
|
||||
argsparser = argparse.ArgumentParser(description="Square example for LJ")
|
||||
argsparser.add_argument("-r","--redisIP",help="IP of the Redis server used by LJ (127.0.0.1 by default) ",type=str)
|
||||
argsparser.add_argument("-s","--scene",help="LJ scene number (0 by default)",type=int)
|
||||
#argsparser.add_argument("-l","--laser",help="Laser number to be displayed (0 by default)",type=int)
|
||||
argsparser.add_argument("-v","--verbose",help="Verbosity level (0 by default)",type=int)
|
||||
argsparser.add_argument("-m","--myIP",help="Local IP (127.0.0.1 by default) ",type=str)
|
||||
|
||||
args = argsparser.parse_args()
|
||||
|
||||
if args.scene:
|
||||
ljscene = args.scene
|
||||
else:
|
||||
ljscene = 0
|
||||
'''
|
||||
if args.laser:
|
||||
plnumber = args.laser
|
||||
else:
|
||||
plnumber = 0
|
||||
'''
|
||||
|
||||
# Redis Computer IP
|
||||
if args.redisIP != None:
|
||||
redisIP = args.redisIP
|
||||
else:
|
||||
redisIP = '127.0.0.1'
|
||||
|
||||
print("redisIP",redisIP)
|
||||
|
||||
# myIP
|
||||
if args.myIP != None:
|
||||
myIP = args.myIP
|
||||
else:
|
||||
myIP = '127.0.0.1'
|
||||
|
||||
print("myIP",myIP)
|
||||
|
||||
if args.verbose:
|
||||
debug = args.verbose
|
||||
else:
|
||||
debug = 0
|
||||
|
||||
# Useful variables init.
|
||||
white = lj.rgb2int(255,255,255)
|
||||
red = lj.rgb2int(255,0,0)
|
||||
blue = lj.rgb2int(0,0,255)
|
||||
green = lj.rgb2int(0,255,0)
|
||||
|
||||
width = 800
|
||||
height = 600
|
||||
centerX = width / 2
|
||||
centerY = height / 2
|
||||
|
||||
# 3D to 2D projection parameters
|
||||
fov = 256
|
||||
viewer_distance = 2.2
|
||||
|
||||
# Anaglyph computation parameters for right and left eyes.
|
||||
# algorythm come from anaglyph geo maps
|
||||
eye_spacing = 100
|
||||
nadir = 0.5
|
||||
observer_altitude = 30000
|
||||
map_layerane_altitude = 0.0
|
||||
|
||||
# square coordinates : vertices that compose each of the square.
|
||||
vertices = [
|
||||
(- 1.0, 1.0,- 1.0),
|
||||
( 1.0, 1.0,- 1.0),
|
||||
( 1.0,- 1.0,- 1.0),
|
||||
(- 1.0,- 1.0,- 1.0)
|
||||
]
|
||||
|
||||
face = [0,1,2,3]
|
||||
|
||||
#
|
||||
# LJ inits
|
||||
#
|
||||
|
||||
layer = 0
|
||||
|
||||
# Setup LJ library mandatory properties.
|
||||
lj.Config(redisIP, ljscene, "square")
|
||||
|
||||
# You can define properties for each drawn "element" : name, intensity, active, xy, color, red, green, blue, layer , closed
|
||||
Leftsquare = lj.FixedObject('Leftsquare', True, 255, [], red, 255, 0, 0, layer , True)
|
||||
Rightsquare = lj.FixedObject('Rightsquare', True, 255, [], blue, 0, 255, 0, layer , True)
|
||||
|
||||
# 'Destination' for given layer : name, number, active, layer , scene, laser
|
||||
Dest0 = lj.DestObject('0', 0, True, 0 , 0, 0) # Dest0 will send layer 0 points to scene 0, laser 0
|
||||
|
||||
|
||||
#
|
||||
# Anaglyph computation : different X coordinate for each eye
|
||||
#
|
||||
|
||||
def LeftShift(elevation):
|
||||
|
||||
diff = elevation - map_layerane_altitude
|
||||
return nadir * eye_spacing * diff / (observer_altitude - elevation)
|
||||
|
||||
def RightShift(elevation):
|
||||
|
||||
diff = map_layerane_altitude - elevation
|
||||
return (1 - nadir) * eye_spacing * diff / (observer_altitude - elevation)
|
||||
|
||||
#
|
||||
# OSC
|
||||
#
|
||||
|
||||
oscserver = OSCServer( (myIP, OSCinPort) )
|
||||
oscserver.timeout = 0
|
||||
|
||||
|
||||
# this method of reporting timeouts only works by convention
|
||||
# that before calling handle_request() field .timed_out is
|
||||
# set to False
|
||||
def handle_timeout(self):
|
||||
self.timed_out = True
|
||||
|
||||
# funny python's way to add a method to an instance of a class
|
||||
import types
|
||||
oscserver.handle_timeout = types.MethodType(handle_timeout, oscserver)
|
||||
|
||||
|
||||
# OSC callbacks
|
||||
|
||||
# /square/ljscene
|
||||
def OSCljscene(path, tags, args, source):
|
||||
|
||||
print("Got /square/ljscene with value", args[0])
|
||||
lj.WebStatus("square to virtual "+ str(args[0]))
|
||||
ljscene = args[0]
|
||||
lj.Ljscene(ljscene)
|
||||
|
||||
|
||||
def Proj(x,y,z,angleX,angleY,angleZ):
|
||||
|
||||
rad = angleX * math.pi / 180
|
||||
cosa = math.cos(rad)
|
||||
sina = math.sin(rad)
|
||||
y2 = y
|
||||
y = y2 * cosa - z * sina
|
||||
z = y2 * sina + z * cosa
|
||||
|
||||
rad = angleY * math.pi / 180
|
||||
cosa = math.cos(rad)
|
||||
sina = math.sin(rad)
|
||||
z2 = z
|
||||
z = z2 * cosa - x * sina
|
||||
x = z2 * sina + x * cosa
|
||||
|
||||
rad = angleZ * math.pi / 180
|
||||
cosa = math.cos(rad)
|
||||
sina = math.sin(rad)
|
||||
x2 = x
|
||||
x = x2 * cosa - y * sina
|
||||
y = x2 * sina + y * cosa
|
||||
|
||||
|
||||
""" Transforms this 3D point to 2D using a perspective projection. """
|
||||
factor = fov / (viewer_distance + z)
|
||||
x = x * factor + centerX
|
||||
y = - y * factor + centerY
|
||||
return (x,y)
|
||||
|
||||
|
||||
#
|
||||
# Main
|
||||
#
|
||||
|
||||
def Run():
|
||||
|
||||
|
||||
Left = []
|
||||
Right = []
|
||||
counter =0
|
||||
lj.WebStatus("Square")
|
||||
lj.SendLJ("/square/start 1")
|
||||
|
||||
# OSC Server callbacks
|
||||
print("Starting OSC server at",myIP," port",OSCinPort,"...")
|
||||
oscserver.addMsgHandler( "/square/ljscene", OSCljscene )
|
||||
|
||||
# Add OSC generic plugins commands : 'default", /ping, /quit, /pluginame/obj, /pluginame/var, /pluginame/adddest, /pluginame/deldest
|
||||
lj.addOSCdefaults(oscserver)
|
||||
|
||||
try:
|
||||
|
||||
while lj.oscrun:
|
||||
|
||||
lj.OSCframe()
|
||||
Left = []
|
||||
Right = []
|
||||
|
||||
x = vertices[0][0]
|
||||
y = vertices[0][1]
|
||||
z = vertices[0][2]
|
||||
|
||||
# LJ tracers will "move" the laser to this first point in black, then move to the next with second point color.
|
||||
# For more accuracy in dac emulator, repeat this first point.
|
||||
|
||||
# Generate all points in square.
|
||||
for point in face:
|
||||
x = vertices[point][0]
|
||||
y = vertices[point][1]
|
||||
z = vertices[point][2]
|
||||
|
||||
Left.append(Proj(x+LeftShift(z*25),y,z,0,counter,0))
|
||||
Right.append(Proj(x+RightShift(z*25),y,z,0,counter,0))
|
||||
|
||||
|
||||
lj.PolyLineOneColor(Left, c = Leftsquare.color , layer = Leftsquare.layer, closed = Leftsquare.closed)
|
||||
lj.PolyLineOneColor(Right, c = Rightsquare.color , layer = Rightsquare.layer, closed = Rightsquare.closed)
|
||||
|
||||
lj.DrawDests()
|
||||
|
||||
|
||||
time.sleep(0.1)
|
||||
|
||||
counter += 1
|
||||
if counter > 360:
|
||||
counter = 0
|
||||
|
||||
except KeyboardInterrupt:
|
||||
pass
|
||||
|
||||
# Gently stop on CTRL C
|
||||
|
||||
finally:
|
||||
|
||||
lj.ClosePlugin()
|
||||
|
||||
|
||||
Run()
|
20
updateUI.py
20
updateUI.py
@ -14,7 +14,7 @@ ljpath = r'%s' % os.getcwd().replace('\\','/')
|
||||
|
||||
python2 = (2, 6) <= sys.version_info < (3, 0)
|
||||
|
||||
def Updatewww(file_name):
|
||||
def Updatepage(file_name):
|
||||
|
||||
print("updating", file_name)
|
||||
f=open(file_name,"r+")
|
||||
@ -53,10 +53,14 @@ def Updatewww(file_name):
|
||||
o.close()
|
||||
#now the modification is done in the file
|
||||
|
||||
print("Updating www files...")
|
||||
Updatewww(ljpath+"/www/LJ.js")
|
||||
Updatewww(ljpath+"/www/trckr/trckrcam1.html")
|
||||
Updatewww(ljpath+"/www/simu.html")
|
||||
Updatewww(ljpath+"/www/align.html")
|
||||
Updatewww(ljpath+"/www/auralls.html")
|
||||
Updatewww(ljpath+"/www/index.html")
|
||||
def www(wwwip):
|
||||
global wwwIP
|
||||
|
||||
wwwIP = wwwip
|
||||
print("Updating www files to use", wwwIP)
|
||||
Updatepage(ljpath+"/www/LJ.js")
|
||||
Updatepage(ljpath+"/www/trckr/trckrcam1.html")
|
||||
Updatepage(ljpath+"/www/simu.html")
|
||||
Updatepage(ljpath+"/www/align.html")
|
||||
Updatepage(ljpath+"/www/auralls.html")
|
||||
Updatepage(ljpath+"/www/index.html")
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
// LJ websocket address. IP will be updated at LJ startup according to LJ.conf wwwIP
|
||||
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
|
||||
|
||||
//
|
||||
|
@ -604,7 +604,7 @@
|
||||
<!-- LJ style WS : A nettoyer ! -->
|
||||
|
||||
<script type="text/javascript">
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
|
||||
var _WS = {
|
||||
uri: LJ,
|
||||
|
@ -417,7 +417,7 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
|
||||
|
||||
var pl = "";
|
||||
|
@ -231,7 +231,7 @@
|
||||
<!-- LJ style WS : A nettoyer ! -->
|
||||
|
||||
<script type="text/javascript">
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
|
||||
|
||||
var _WS = {
|
||||
|
@ -197,7 +197,7 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
|
||||
|
||||
var pl = "";
|
||||
|
@ -378,8 +378,8 @@
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.1.48:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
var LJ = 'ws://192.168.2.43:9001/'
|
||||
|
||||
var _WS = {
|
||||
uri: LJ,
|
||||
|
Loading…
Reference in New Issue
Block a user