โครงการนี้ถือว่ามีเสถียรภาพและยังไม่มีการวางแผนการพัฒนาคุณลักษณะที่สำคัญในปัจจุบัน อย่างไรก็ตาม เรายินดีรับคำขอดึงและปัญหาต่างๆ: จะมีการให้การสนับสนุน/บำรุงรักษาตามเวลาที่กำหนด
นี่คือการใช้งาน sACN สำหรับ golang ขึ้นอยู่กับโปรโตคอล E1.31 โดย ESTA สามารถดูสำเนาได้ที่นี่
นี่ยังไม่ใช่การดำเนินการเต็มรูปแบบ แต่อาจเป็นการดำเนินการในอนาคต หากคุณต้องการดูแพ็คเกจ DMX แบบเต็ม โปรดดูโปรเจ็กต์ OLA
นอกจากนี้ยังมีเอกสารบางส่วนใน godoc.org โปรเจ็กต์นี้รองรับ Go Modules ที่เปิดตัวใน Go 1.11
go get github.com/Hundemeier/go-sacn/sacn
วิธีที่ง่ายที่สุดในการรับแพ็กเก็ต sACN คือการใช้ sacn.NewReceiverSocket
สำหรับข้อมูลล่าสุด โปรดไปที่เว็บไซต์ godoc.org ที่มี repo นี้
คุณสามารถหยุดการรับแพ็กเก็ตบน Receiver ผ่านทาง receiver.Stop()
โปรดทราบว่าอาจใช้เวลาถึง 2.5 วินาทีในการหยุดการรับและปิดช่องทั้งหมด หากคุณได้หยุดการทำงานของตัวรับหนึ่งครั้ง คุณสามารถรีสตาร์ทได้ผ่าน receiver.Start()
ในการส่งข้อมูล DMX คุณต้องเริ่มต้นวัตถุ Transmitter
ซึ่งจะจัดการการดำเนินการเฉพาะโปรโตคอลทั้งหมด (ปัจจุบันไม่ใช่ทั้งหมด) คุณสามารถเปิดใช้งานจักรวาลได้หากคุณต้องการส่งข้อมูล จากนั้นคุณสามารถใช้ช่องสัญญาณสำหรับอาร์เรย์ 512 ไบต์เพื่อส่งข้อมูลผ่านเครือข่ายได้
การระบุที่อยู่ผู้รับมีสองประเภทที่แตกต่างกัน: unicast และ multicast เมื่อใช้มัลติคาสต์ โปรดทราบว่าคุณต้องระบุที่อยู่การเชื่อมโยงบนระบบปฏิบัติการบางระบบ (เช่น Windows) คุณสามารถใช้ทั้งพร้อมกันและที่อยู่แบบผู้รับเดียวจำนวนเท่าใดก็ได้ ในการตั้งค่าสภาพอากาศแบบหลายผู้รับควรจะใช้เรียก transmitter.SetMulticast(<universe>, <bool>)
คุณสามารถตั้งค่าปลายทางแบบผู้รับเดียวหลายรายการเป็นชิ้นผ่าน transmitter.SetDestinations(<universe>, <[]string>)
โปรดทราบว่าปลายทางที่มีอยู่จะถูกเขียนทับ หากคุณต้องการต่อท้ายปลายทาง คุณสามารถใช้ transmitter.Destination(<universe>)
ซึ่งจะส่งคืนสำเนาเชิงลึกของอ็อบเจ็กต์ net.UDPAddr ที่ใช้
ตัวอย่าง GoDoc:
ตัวอย่างเครื่องส่งสัญญาณ:
package main
import (
"log"
"math/rand"
"time"
"github.com/Hundemeier/go-sacn/sacn"
)
func main () {
//instead of "" you could provide an ip-address that the socket should bind to
trans , err := sacn . NewTransmitter ( "" , [ 16 ] byte { 1 , 2 , 3 }, "test" )
if err != nil {
log . Fatal ( err )
}
//activates the first universe
ch , err := trans . Activate ( 1 )
if err != nil {
log . Fatal ( err )
}
//deactivate the channel on exit
defer close ( ch )
//set a unicast destination, and/or use multicast
trans . SetMulticast ( 1 , true ) //this specific setup will not multicast on windows,
//because no bind address was provided
//set some example ip-addresses
trans . SetDestinations ( 1 , [] string { "192.168.1.13" , "192.168.1.1" })
//send some random data for 10 seconds
for i := 0 ; i < 20 ; i ++ {
ch <- [ 512 ] byte { byte ( rand . Int ()), byte ( i & 0xFF )}
time . Sleep ( 500 * time . Millisecond )
}
}