Pustaka tumpukan C protokol sumber terbuka BACnet untuk sistem tertanam, Linux, MacOS, BSD, dan Windows http://bacnet.sourceforge.net/
Selamat datang di dunia BACnet yang menakjubkan dan interoperabilitas perangkat yang sesungguhnya!
Pustaka ini menggunakan layanan integrasi berkelanjutan otomatis untuk membantu kompilasi otomatis, validasi, linting, pemindaian keamanan, dan pengujian unit untuk menghasilkan kode C dan fungsionalitas BACnet yang tangguh.
Alur Kerja GitHub: CMembuat perpustakaan dan aplikasi demo di Ubuntu, Windows dan MacOS
Alur Kerja GitHub: Pustaka build Ubuntu Makefile GCC, aplikasi demo BACnet/IP dengan dan tanpa BBMD, BACnet/IPv6, BACnet Ethernet, dan aplikasi demo BACnet MSTP, gateway, router, router-ipv6, router-mstp, port ARM (STM, Atmel), port AVR, dan aplikasi demo BACnet/IP yang dikompilasi dengan MinGW32.
Alur Kerja GitHub: scan-build (LLVM Clang Tools), cppcheck, codespell, pengujian unit, dan cakupan kode.
Analisis CodeQL Alur Kerja GitHub
Pustaka tumpukan protokol BACnet ini menyediakan layanan komunikasi lapisan aplikasi BACnet, lapisan jaringan, dan lapisan akses media (MAC). Ini adalah perpustakaan sumber terbuka dan bebas royalti untuk sistem tertanam RTOS atau bare metal, atau OS lengkap seperti Windows, Linux, MacOS, atau BSD.
BACnet - Protokol Komunikasi Data untuk Membangun Jaringan Otomasi dan Kontrol - lihat bacnet.org. BACnet adalah protokol komunikasi data standar untuk Membangun Jaringan Otomasi dan Kontrol. BACnet adalah protokol terbuka, yang berarti siapa pun dapat berkontribusi pada standar ini, dan siapa pun dapat menggunakannya. Satu-satunya peringatan adalah bahwa dokumen standar BACnet itu sendiri dilindungi hak cipta oleh ASHRAE, dan mereka menjual dokumen tersebut untuk membantu membiayai biaya pengembangan dan pemeliharaan standar (mirip dengan IEEE atau ANSI atau ISO).
Untuk pengembang perangkat lunak, protokol BACnet adalah cara standar untuk mengirim dan menerima pesan berisi data yang dipahami oleh perangkat lain yang mendukung BACnet. Standar BACnet mendefinisikan cara standar untuk berkomunikasi melalui berbagai kabel atau radio, yang dikenal sebagai Data Link/Lapisan Fisik: Ethernet, EIA-485, EIA-232, ARCNET, dan LonTalk. Standar BACnet juga mendefinisikan cara standar untuk berkomunikasi menggunakan UDP, IP, HTTP (Layanan Web), dan Websockets.
Implementasi tumpukan protokol BACnet ini dirancang khusus untuk peralatan BACnet yang tertanam, menggunakan lisensi GPL dengan pengecualian (seperti eCos), yang berarti bahwa setiap perubahan pada kode inti yang didistribusikan akan dibagikan, namun perpustakaan BACnet dapat dihubungkan ke kode kepemilikan tanpa kode kepemilikan menjadi GPL. Teks pengecualian GPL yang disertakan dalam setiap file sumber adalah sebagai berikut:
* SPDX-License-Identifier: GPL-2.0-or-later WITH GCC-exception-2.0
Perhatikan bahwa beberapa file sumber dirancang sebagai file kerangka atau contoh atau templat, dan tidak memiliki hak cipta sebagai GPL. Teks lisensi untuk file-file ini ditetapkan di setiap file sumber sebagai berikut:
* SPDX-License-Identifier: MIT
* SPDX-License-Identifier: Apache-2.0
Bill-of-material perangkat lunak dapat dibuat menggunakan grep:
$ grep -nrw SPDX --include=*.[c,h]
Kode ini ditulis dalam C untuk portabilitas, dan mencakup pengujian unit (pengujian unit berbasis PC). Karena kode ini dirancang agar portabel, kode ini dikompilasi dengan GCC serta kompiler lain, seperti Clang atau IAR.
Protokol BACnet adalah standar ASHRAE/ANSI/ISO, sehingga perpustakaan ini mematuhi standar tersebut. BACnet tidak memiliki royalti atau batasan lisensi, dan pendaftaran ID vendor BACnet gratis.
Untuk ikhtisar arsitektur perpustakaan ini dan cara menggunakannya, lihat https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
Tumpukan ini mencakup pengujian unit yang dapat dijalankan menggunakan Makefile di direktori root proyek "make test". Pengujian unit juga dapat dijalankan menggunakan pemanggilan make individual. Pengujian unit menjalankan PC dan terus melakukannya dengan setiap penerapan dalam lingkungan Integrasi Berkelanjutan.
Tumpukan BACnet diuji secara fungsional menggunakan berbagai alat serta berbagai pengontrol dan stasiun kerja. Ini telah disertakan dalam banyak produk yang berhasil menyelesaikan pengujian BTL.
Menggunakan Makefile di direktori root proyek, selusin contoh aplikasi dibuat yang berjalan di Windows atau Linux. Mereka menggunakan lapisan datalink BACnet/IPv4 untuk komunikasi secara default, tetapi dapat dikompilasi untuk menggunakan BACnet IPv6, Ethernet, ARCNET, atau MS/TP.
Linux/Unix/Cygwin
$ make clean all
Pesta Windows MinGW
$ make win32
Baris Perintah Windows
c:> build.bat
Tumpukan BACnet dapat dikompilasi oleh berbagai kompiler. Kompiler gratis yang paling umum adalah GCC (atau MinGW di Windows). Makefile menggunakan GCC secara default.
Library ini juga diinstrumentasi menggunakan CMake yang dapat menghasilkan sebuah proyek atau Makefiles untuk berbagai IDE atau compiler. Misalnya, untuk menghasilkan proyek Code::Blocks:
$ mkdir build
$ cd build/
$ cmake .. -G"CodeBlocks - Unix Makefiles"
c:> mkdir build
c:> cd build/
c:> cmake .. -G"CodeBlocks - MinGW Makefiles"
Pengujian unit juga menggunakan CMake dan dapat dijalankan dengan urutan perintah:
$ make test
Kerangka pengujian unit menggunakan ztest yang sedikit dimodifikasi, dan pengujian terletak di folder test/. Pembuat pengujian unit menggunakan CMake, dan cakupan pengujian menggunakan LCOV. Hasil HTML cakupan pengujian unit tersedia mulai dari file test/build/lcoverage/index.html.
Aplikasi demo adalah semua aplikasi klien yang menyediakan satu layanan BACnet utama, kecuali satu aplikasi server dan satu aplikasi gateway, beberapa aplikasi router, dan beberapa aplikasi spesifik MS/TP. Setiap aplikasi akan menerima parameter baris perintah, dan mencetak output ke stdout atau stderr. Aplikasi klien berbasis baris perintah dan dapat digunakan dalam skrip atau untuk pemecahan masalah. Aplikasi demo menggunakan variabel lingkungan untuk mengatur opsi jaringan. Lihat demo masing-masing untuk mengetahui opsinya.
Ada juga proyek di direktori port/ untuk ARM7, AVR, RTOS-32, PIC, dan lainnya. Masing-masing proyek tersebut memiliki aplikasi demo untuk perangkat keras tertentu. Dalam kasus ARM7 dan AVR, makefile mereka bekerja dengan kompiler GCC dan ada file proyek untuk IAR Embedded Workbench dan Rowley Crossworks untuk ARM.
Dokumentasi proyek ada di direktori doc/. Dokumen serupa ada di situs proyek di http://bacnet.sourceforge.net/.
Jika Anda ingin berkontribusi pada proyek ini dan memiliki keterampilan pengkodean C, bergabunglah dengan kami melalui https://github.com/bacnet-stack/bacnet-stack/ atau melalui https://sourceforge.net/p/bacnet/src/ dan membuat fork atau cabang, dan akhirnya permintaan tarik agar kode Anda dipertimbangkan untuk dimasukkan.
Jika Anda menemukan bug dalam proyek ini, beri tahu kami di https://sourceforge.net/p/bacnet/bugs/ atau https://github.com/bacnet-stack/bacnet-stack/issues
Jika Anda memiliki permintaan dukungan, Anda dapat mempostingnya di https://sourceforge.net/p/bacnet/support-requests/
Jika Anda memiliki permintaan fitur, Anda dapat mempostingnya di https://sourceforge.net/p/bacnet/feature-requests/
Jika Anda mengalami masalah dalam membuat perpustakaan ini berfungsi pada perangkat Anda, atau memiliki pertanyaan BACnet, bergabunglah dengan milis pengembang di: http://lists.sourceforge.net/mailman/listinfo/bacnet-developers atau kirim pertanyaan ke Buka Forum Diskusi, Pengembang, atau Bantuan di https://sourceforge.net/p/bacnet/discussion/
Saya harap Perangkat BACnet Anda berfungsi!
Steve Karg, Birmingham, Alabama AS [email protected]
ASHRAE® dan BACnet® adalah merek dagang terdaftar dari American Society of Heating, Refrigerating and Air-Conditioning Engineers, Inc. 180 Technology Parkway NW, Peachtree Corners, Georgia 30092 US.