Proyek ini dianggap stabil dan tidak ada rencana pengembangan fitur signifikan saat ini. Namun, permintaan penarikan dan masalah diperbolehkan: dukungan/pemeliharaan akan diberikan jika waktu memungkinkan.
Ini adalah implementasi sACN untuk golang. Hal ini didasarkan pada protokol E1.31 oleh ESTA. Salinannya dapat ditemukan di sini.
Hal ini belum sepenuhnya diterapkan, namun mungkin akan terjadi di masa depan. Jika Anda ingin melihat paket DMX lengkap, lihat proyek OLA.
Ada juga beberapa dokumentasi di godoc.org. Proyek ini mendukung Modul Go yang diperkenalkan di Go 1.11.
go get github.com/Hundemeier/go-sacn/sacn
Cara paling sederhana untuk menerima paket sACN adalah dengan menggunakan sacn.NewReceiverSocket
.
Untuk informasi terkini, kunjungi situs godoc.org dengan repo ini.
Anda dapat menghentikan penerimaan paket pada Penerima melalui receiver.Stop()
. Harap dicatat bahwa diperlukan waktu hingga 2,5 detik untuk menghentikan penerimaan dan menutup semua saluran. Jika Anda pernah menghentikan receiver, Anda dapat memulai ulang melalui receiver.Start()
.
Untuk mengirimkan data DMX, Anda harus menginisialisasi objek Transmitter
. Ini menangani semua tindakan spesifik protokol (saat ini tidak semua). Anda dapat mengaktifkan alam semesta, jika Anda ingin mengirimkan data. Kemudian Anda dapat menggunakan saluran untuk array 512-byte untuk mengirimkannya melalui jaringan.
Ada dua jenis pengalamatan penerima: unicast dan multicast. Saat menggunakan multicast, perhatikan bahwa Anda harus memberikan alamat pengikatan pada beberapa sistem operasi (misalnya Windows). Anda dapat menggunakan keduanya secara bersamaan dan sejumlah alamat unicast. Untuk mengatur apakah multicast harus digunakan, panggil transmitter.SetMulticast(<universe>, <bool>)
. Anda dapat mengatur beberapa tujuan unicast sebagai irisan melalui transmitter.SetDestinations(<universe>, <[]string>)
. Perhatikan bahwa semua tujuan yang ada akan ditimpa. Jika Anda ingin menambahkan tujuan, Anda dapat menggunakan transmitter.Destination(<universe>)
yang mengembalikan salinan dalam objek net.UDPAddr yang digunakan.
Contoh GoDoc:
Contoh Pemancar:
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 )
}
}