separate functions for set channel
This commit is contained in:
parent
df49286e4a
commit
2283f339df
2 changed files with 42 additions and 17 deletions
|
@ -4,7 +4,7 @@
|
|||
|
||||
[node name="Node2D" type="Node2D"]
|
||||
script = ExtResource("1_hsiae")
|
||||
master = 240
|
||||
red = 215
|
||||
green = 85
|
||||
blue = 135
|
||||
master = 255
|
||||
red = 130
|
||||
ip_destination = "192.168.21.27"
|
||||
update_frequency = 40
|
||||
|
|
|
@ -4,33 +4,58 @@ extends Node2D
|
|||
var socket = PacketPeerUDP.new()
|
||||
var data = []
|
||||
|
||||
@export_range(0,255,1) var master = 200
|
||||
@export_range(0,255,1) var master = 0
|
||||
@export_range(0,255,1) var red = 0
|
||||
@export_range(0,255,1) var green = 200
|
||||
@export_range(0,255,1) var green = 0
|
||||
@export_range(0,255,1) var blue = 0
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@export var ip_destination = "127.0.0.1"
|
||||
@export_range(1,100,1) var update_frequency=10
|
||||
|
||||
var last_update_delta=0
|
||||
|
||||
func _ready() -> void:
|
||||
# Server
|
||||
socket.set_dest_address("192.168.21.27", 6454)
|
||||
socket.set_dest_address(ip_destination, 6454)
|
||||
print("connecting to:"+str(ip_destination))
|
||||
data.resize(512)
|
||||
data.fill(0)
|
||||
|
||||
var last_update_delta=0
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
last_update_delta+=delta
|
||||
|
||||
if last_update_delta>1.0/40.0:
|
||||
if last_update_delta>1.0/update_frequency:
|
||||
last_update_delta=0
|
||||
print("Update")
|
||||
|
||||
data[0]=master #master dimmer
|
||||
data[2]=red #red
|
||||
data[3]=green #green
|
||||
data[4]=blue #blue
|
||||
setDMXChannel(1,master) #master dimmer
|
||||
setDMXChannel(3,red) #red
|
||||
setDMXChannel(4,green) #green
|
||||
setDMXChannel(5,blue) #blue
|
||||
sendDMX(data)
|
||||
|
||||
func setDMXChannel(ch,val,twobytes:bool=false):
|
||||
if (ch-1>512):
|
||||
print("DMX Error: Channel out of bounds")
|
||||
return 0
|
||||
|
||||
if (!twobytes):
|
||||
data[ch-1]=val
|
||||
else:
|
||||
data[ch-1]=val/256
|
||||
data[ch-1+1]=val%256
|
||||
|
||||
return 1
|
||||
|
||||
func setDMXChannel_Array(chstart,arr:Array):
|
||||
var ch=chstart
|
||||
for a in arr:
|
||||
if (ch-1<=512):
|
||||
data[ch-1]=a
|
||||
ch+=1
|
||||
else:
|
||||
print("DMX Error: Channel out of bounds")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
func sendDMX(data:Array):
|
||||
var buffer=PackedByteArray([65, 114, 116, 45, 78, 101, 116, 0, 0, 80, 0, 14]) # Art-Net\0 / OpCodeLo / OpCodeHi / ProtoHi /ProtoLow
|
||||
|
|
Loading…
Add table
Reference in a new issue