Ce projet est considéré comme stable et aucun développement de fonctionnalités significatif n'est actuellement prévu. Cependant, les pull request et les problèmes sont les bienvenus : le support/maintenance sera fourni si le temps le permet.
Il s'agit d'une implémentation sACN pour Golang. Il est basé sur le protocole E1.31 de l'ESTA. Une copie peut être trouvée ici.
Il ne s’agit en aucun cas d’une mise en œuvre complète pour l’instant, mais cela pourrait le devenir dans le futur. Si vous souhaitez voir un package DMX complet, consultez le projet OLA.
Il existe également de la documentation sur godoc.org. Ce projet prend en charge les modules Go introduits dans Go 1.11.
go get github.com/Hundemeier/go-sacn/sacn
Le moyen le plus simple de recevoir des paquets sACN consiste à utiliser sacn.NewReceiverSocket
.
Pour des informations à jour, visitez le site Web godoc.org avec ce dépôt.
Vous pouvez arrêter la réception de paquets sur un récepteur via receiver.Stop()
. Veuillez noter que l'arrêt de la réception et la fermeture de toutes les chaînes peuvent prendre jusqu'à 2,5 secondes. Si vous avez arrêté un récepteur une fois, vous pouvez le redémarrer via receiver.Start()
.
Pour transmettre des données DMX, vous devez initialiser un objet Transmitter
. Cela gère toutes les actions spécifiques au protocole (actuellement pas toutes). Vous pouvez activer des univers si vous souhaitez envoyer des données. Vous pouvez ensuite utiliser un canal pour les tableaux de 512 octets afin de les transmettre sur le réseau.
Il existe deux types différents d'adressage du récepteur : unicast et multicast. Lorsque vous utilisez la multidiffusion, notez que vous devez fournir une adresse de liaison sur certains systèmes d'exploitation (par exemple Windows). Vous pouvez utiliser les deux en même temps et n'importe quel nombre d'adresses unicast. Pour définir si la multidiffusion doit être utilisée, appelez transmitter.SetMulticast(<universe>, <bool>)
. Vous pouvez définir plusieurs destinations de monodiffusion en tant que tranche via transmitter.SetDestinations(<universe>, <[]string>)
. Notez que toutes les destinations existantes seront écrasées. Si vous souhaitez ajouter une destination, vous pouvez utiliser transmitter.Destination(<universe>)
qui renvoie une copie complète des objets net.UDPAdr utilisés.
Exemples GoDoc :
Exemple d'émetteur :
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 )
}
}