مكتبة BACnet مفتوحة المصدر لبروتوكول C للأنظمة المدمجة، Linux، MacOS، BSD، وWindows http://bacnet.sourceforge.net/
مرحبًا بكم في عالم BACnet الرائع وقابلية التشغيل البيني الحقيقية للأجهزة!
تستخدم هذه المكتبة خدمات التكامل المستمر الآلية للمساعدة في التجميع الآلي، والتحقق من الصحة، والفحص، والمسح الأمني، واختبار الوحدة لإنتاج كود C قوي ووظيفة BACnet.
سير عمل GitHub: إنشاء CMake للمكتبة والتطبيقات التجريبية على Ubuntu وWindows وMacOS
سير عمل GitHub: بناء مكتبة Ubuntu Makefile مجلس التعاون الخليجي، وتطبيقات BACnet/IP التجريبية مع وبدون BBMD، وBACnet/IPv6، وBACnet Ethernet، وتطبيقات BACnet MSTP التجريبية، والبوابة، وجهاز التوجيه، وrouter-ipv6، وrouter-mstp، ومنافذ ARM (STM، Atmel)، ومنافذ AVR، وتطبيقات BACnet/IP التجريبية المجمعة مع MinGW32.
سير عمل GitHub: إنشاء المسح الضوئي (أدوات LLVM Clang)، وcppcheck، والتهجئة البرمجية، واختبارات الوحدة، وتغطية التعليمات البرمجية.
تحليل كود سير عمل GitHub
توفر مكتبة مكدس بروتوكول BACnet خدمات اتصالات طبقة تطبيقات BACnet وطبقة الشبكة وطبقة الوصول إلى الوسائط (MAC). إنها مكتبة مفتوحة المصدر وخالية من حقوق الملكية لنظام RTOS أو نظام مضمن معدني، أو نظام تشغيل كامل مثل Windows أو Linux أو MacOS أو BSD.
BACnet - بروتوكول اتصالات البيانات لبناء شبكات الأتمتة والتحكم - راجع bacnet.org. BACnet هو بروتوكول اتصالات بيانات قياسي لشبكات أتمتة المباني والتحكم. BACnet هو بروتوكول مفتوح، مما يعني أنه يمكن لأي شخص المساهمة في المعيار، ويمكن لأي شخص استخدامه. التحذير الوحيد هو أن وثيقة معيار BACnet نفسها محمية بحقوق الطبع والنشر من قبل ASHRAE، وأنهم يبيعون الوثيقة للمساعدة في تحمل تكاليف تطوير المعيار والحفاظ عليه (على غرار IEEE أو ANSI أو ISO).
بالنسبة لمطوري البرامج، يعد بروتوكول BACnet طريقة قياسية لإرسال واستقبال الرسائل التي تحتوي على بيانات تفهمها الأجهزة الأخرى المتوافقة مع BACnet. يحدد معيار BACnet طريقة قياسية للاتصال عبر أسلاك أو أجهزة راديو مختلفة، تُعرف باسم Data Link/Physical Layers: Ethernet وEIA-485 وEIA-232 وARCNET وLonTalk. يحدد معيار BACnet أيضًا طريقة قياسية للاتصال باستخدام UDP وIP وHTTP (خدمات الويب) وWebsockets.
تم تصميم تطبيق مكدس بروتوكول BACnet هذا خصيصًا لجهاز BACnet المضمن، باستخدام GPL مع ترخيص استثنائي (مثل eCos)، مما يعني أن أي تغييرات على الكود الأساسي الذي يتم توزيعه تتم مشاركتها، ولكن يمكن ربط مكتبة BACnet بكود الملكية دون أن يصبح رمز الملكية GPL. نص استثناء GPL الموجود في كل ملف مصدر هو كما يلي:
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
لاحظ أن بعض الملفات المصدرية مصممة كملفات هيكلية أو أمثلة أو قوالب، وليست محمية بحقوق الطبع والنشر مثل GPL. نص الترخيص لهذه الملفات محدد في كل ملف مصدر كما يلي:
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
يمكن إنشاء قائمة مواد البرنامج باستخدام grep:
$ grep -nrw SPDX --include=*.[c,h]
تمت كتابة الكود بلغة C لسهولة النقل، ويتضمن اختبارات الوحدة (اختبارات الوحدة القائمة على الكمبيوتر الشخصي). وبما أن الكود مصمم ليكون محمولاً، فإنه يتم تجميعه مع دول مجلس التعاون الخليجي بالإضافة إلى المترجمين الآخرين، مثل Clang أو IAR.
يعد بروتوكول BACnet أحد معايير ASHRAE/ANSI/ISO، لذا تلتزم هذه المكتبة بهذا المعيار. ليس لدى BACnet أي إتاوات أو قيود على الترخيص، والتسجيل للحصول على معرف بائع BACnet مجاني.
للحصول على نظرة عامة على بنية المكتبة وكيفية استخدامها، راجع https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
تتضمن هذه المكدس اختبارات الوحدة التي يمكن تشغيلها باستخدام ملف Makefile في الدليل الجذر للمشروع "إجراء الاختبار". يمكن أيضًا تشغيل اختبارات الوحدة باستخدام استدعاءات فردية. تقوم اختبارات الوحدة بتشغيل جهاز كمبيوتر وتستمر في القيام بذلك مع كل التزام داخل بيئة التكامل المستمر.
تم اختبار مكدس BACnet وظيفيًا باستخدام مجموعة متنوعة من الأدوات بالإضافة إلى وحدات التحكم ومحطات العمل المختلفة. لقد تم تضمينه في العديد من المنتجات التي أكملت اختبار BTL بنجاح.
باستخدام Makefile في الدليل الجذر للمشروع، يتم إنشاء عشرات التطبيقات النموذجية التي تعمل تحت نظام التشغيل Windows أو Linux. وهي تستخدم طبقة وصلة بيانات BACnet/IPv4 للاتصال بشكل افتراضي، ولكن يمكن تجميعها لاستخدام BACnet IPv6 أو Ethernet أو ARCNET أو MS/TP.
لينكس/يونكس/سيجوين
$ make clean all
ويندوز MinGW باش
$ make win32
سطر أوامر ويندوز
c:> build.bat
يمكن تجميع مكدس BACnet بواسطة مجموعة متنوعة من المترجمين. المترجم المجاني الأكثر شيوعا هو دول مجلس التعاون الخليجي (أو MinGW تحت نظام التشغيل Windows). تستخدم ملفات makefiles مجلس التعاون الخليجي بشكل افتراضي.
تم تجهيز المكتبة أيضًا لاستخدام CMake الذي يمكنه إنشاء مشروع أو ملفات Makefiles لمجموعة متنوعة من IDE أو المترجم. على سبيل المثال، لإنشاء مشروع Code::Blocks:
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
تستخدم اختبارات الوحدة أيضًا CMake ويمكن تشغيلها بتسلسل الأوامر:
$ make test
يستخدم إطار اختبار الوحدة ztest معدّلًا قليلاً، وتقع الاختبارات في مجلد الاختبار/. يستخدم منشئ اختبار الوحدة CMake، وتستخدم تغطية الاختبار LCOV. تتوفر نتائج HTML لتغطية اختبار الوحدة بدءًا من الملف test/build/lcoverage/index.html.
التطبيقات التجريبية هي جميع تطبيقات العميل التي توفر خدمة BACnet رئيسية واحدة، باستثناء تطبيق خادم واحد وتطبيق بوابة واحد وتطبيقين لجهاز التوجيه واثنين من التطبيقات المحددة لـ MS/TP. سيقبل كل تطبيق معلمات سطر الأوامر، ويطبع الإخراج إلى stdout أو stderr. تعتمد تطبيقات العميل على سطر الأوامر ويمكن استخدامها في البرامج النصية أو لاستكشاف الأخطاء وإصلاحها. تستخدم التطبيقات التجريبية متغيرات البيئة لإعداد خيارات الشبكة. راجع كل عرض توضيحي فردي للتعرف على الخيارات.
هناك أيضًا مشاريع في دليل المنافذ/ لـ ARM7 وAVR وRTOS-32 وPIC وغيرها. يحتوي كل مشروع من هذه المشاريع على تطبيق تجريبي لأجهزة معينة. في حالة ARM7 وAVR، يعمل الملف التعريفي الخاص بهما مع المترجمين الخليجيين وهناك ملفات مشروع لـ IAR Embedded Workbench وRowley Crossworks لـ ARM.
وثائق المشروع موجودة في الدليل doc/. توجد وثائق مماثلة على موقع المشروع على http://bacnet.sourceforge.net/.
إذا كنت ترغب في المساهمة في هذا المشروع والحصول على بعض مهارات البرمجة بلغة C، انضم إلينا عبر https://github.com/bacnet-stack/bacnet-stack/ أو عبر https://sourceforge.net/p/bacnet/src/ وإنشاء شوكة أو فرع، وفي النهاية طلب سحب للنظر في إدراج الكود الخاص بك.
إذا وجدت خطأً في هذا المشروع، فيرجى إخبارنا به على https://sourceforge.net/p/bacnet/bugs/ أو https://github.com/bacnet-stack/bacnet-stack/issues
إذا كان لديك طلب دعم، يمكنك نشره على https://sourceforge.net/p/bacnet/support-requests/
إذا كان لديك طلب ميزة، يمكنك نشره على https://sourceforge.net/p/bacnet/feature-requests/
إذا كانت لديك مشكلة في تشغيل هذه المكتبة على جهازك، أو كان لديك سؤال حول BACnet، انضم إلى القائمة البريدية للمطورين على: http://lists.sourceforge.net/mailman/listinfo/bacnet-developers أو انشر السؤال على افتح منتديات المناقشة أو المطورين أو المساعدة على https://sourceforge.net/p/bacnet/discussion/
أتمنى أن تتمكن من تشغيل جهاز BACnet الخاص بك!
ستيف كارج، برمنغهام، ألاباما، الولايات المتحدة الأمريكية [email protected]
ASHRAE® وBACnet® هما علامتان تجاريتان مسجلتان لشركة American Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 US.