يعتبر هذا المشروع مستقرًا ولا يتم التخطيط حاليًا لتطوير ميزات مهمة. ومع ذلك، نرحب بطلبات السحب والمشكلات: سيتم توفير الدعم/الصيانة حسب ما يسمح به الوقت.
هذا هو تطبيق SACN لجولانج. يعتمد على بروتوكول E1.31 بواسطة ESTA. يمكن العثور على نسخة هنا.
وهذا ليس التنفيذ الكامل بأي حال من الأحوال حتى الآن، ولكن قد يكون في المستقبل. إذا كنت تريد رؤية حزمة DMX كاملة، راجع مشروع OLA.
هناك أيضًا بعض الوثائق على godoc.org. يدعم هذا المشروع وحدات Go المقدمة في Go 1.11.
go get github.com/Hundemeier/go-sacn/sacn
إن أبسط طريقة لتلقي حزم sACN هي استخدام sacn.NewReceiverSocket
.
للحصول على أحدث المعلومات، قم بزيارة موقع godoc.org مع هذا الريبو.
يمكنك إيقاف استقبال الحزم على جهاز الاستقبال عبر receiver.Stop()
. يرجى ملاحظة أن الأمر قد يستغرق ما يصل إلى 2,5 ثانية لإيقاف الاستقبال وإغلاق جميع القنوات. إذا قمت بإيقاف جهاز الاستقبال مرة واحدة، فيمكنك إعادة تشغيله عبر receiver.Start()
.
لنقل بيانات DMX، يجب عليك تهيئة كائن Transmitter
. يعالج هذا جميع الإجراءات المحددة للبروتوكول (ليس كلها حاليًا). يمكنك تفعيل الأكوان إذا كنت ترغب في إرسال البيانات. ثم يمكنك استخدام قناة لمصفوفات 512 بايت لإرسالها عبر الشبكة.
هناك نوعان مختلفان من مخاطبة جهاز الاستقبال: البث الأحادي والبث المتعدد. عند استخدام البث المتعدد، لاحظ أنه يتعين عليك توفير عنوان ربط في بعض أنظمة التشغيل (مثل Windows). يمكنك استخدام كليهما في نفس الوقت وأي عدد من عناوين البث الأحادي. لتعيين ما إذا كان يجب استخدام البث المتعدد، اتصل بـ transmitter.SetMulticast(<universe>, <bool>)
. يمكنك تعيين وجهات بث أحادي متعددة كشريحة عبر transmitter.SetDestinations(<universe>, <[]string>)
. لاحظ أنه سيتم الكتابة فوق أي وجهات موجودة. إذا كنت تريد إلحاق وجهة، فيمكنك استخدام transmitter.Destination(<universe>)
الذي يُرجع نسخة عميقة من كائنات net.UDPAdr المستخدمة.
أمثلة 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 )
}
}