ไลบรารีสแต็ก C โปรโตคอลโอเพ่นซอร์ส BACnet สำหรับระบบฝังตัว, Linux, MacOS, BSD และ Windows http://bacnet.sourceforge.net/
ยินดีต้อนรับสู่โลกมหัศจรรย์ของ BACnet และการทำงานร่วมกันของอุปกรณ์อย่างแท้จริง!
ไลบรารีนี้ใช้บริการบูรณาการอย่างต่อเนื่องแบบอัตโนมัติเพื่อช่วยในการรวบรวมอัตโนมัติ การตรวจสอบความถูกต้อง การ Linting การสแกนความปลอดภัย และการทดสอบหน่วยเพื่อสร้างโค้ด C และฟังก์ชัน BACnet ที่มีประสิทธิภาพ
เวิร์กโฟลว์ GitHub: CMake สร้างไลบรารีและแอปสาธิตบน Ubuntu, Windows และ MacOS
เวิร์กโฟลว์ GitHub: โครงสร้างไลบรารี Ubuntu Makefile GCC, แอปสาธิต BACnet/IP ที่มีและไม่มี BBMD, BACnet/IPv6, แอปสาธิต BACnet Ethernet และ BACnet MSTP, เกตเวย์, เราเตอร์, เราเตอร์-ipv6, เราเตอร์-mstp, พอร์ต ARM (STM, Atmel), พอร์ต AVR และแอปสาธิต BACnet/IP ที่คอมไพล์ด้วย MinGW32
เวิร์กโฟลว์ GitHub: การสแกนสร้าง (LLVM Clang Tools), cppcheck, codespell, การทดสอบหน่วย และการครอบคลุมโค้ด
การวิเคราะห์ CodeQL เวิร์กโฟลว์ GitHub
ไลบรารีสแต็กโปรโตคอล BACnet นี้ให้บริการการสื่อสารเลเยอร์แอปพลิเคชัน BACnet เลเยอร์เครือข่าย และเลเยอร์การเข้าถึงสื่อ (MAC) เป็นไลบรารีโอเพ่นซอร์สที่ไม่มีค่าลิขสิทธิ์สำหรับ RTOS หรือระบบฝังตัว Bare Metal หรือระบบปฏิบัติการเต็มรูปแบบ เช่น 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 เพื่อการพกพา และรวมถึงการทดสอบหน่วย (การทดสอบหน่วยบนพีซี) เนื่องจากโค้ดได้รับการออกแบบมาให้พกพาได้ จึงคอมไพล์ด้วย GCC เช่นเดียวกับคอมไพเลอร์อื่นๆ เช่น Clang หรือ IAR
โปรโตคอล BACnet เป็นมาตรฐาน ASHRAE/ANSI/ISO ดังนั้นไลบรารีนี้จึงเป็นไปตามมาตรฐานนั้น BACnet ไม่มีข้อจำกัดด้านค่าลิขสิทธิ์หรือใบอนุญาต และการลงทะเบียนสำหรับ ID ผู้ขาย BACnet นั้นฟรี
สำหรับภาพรวมของสถาปัตยกรรมไลบรารีนี้และวิธีการใช้งาน โปรดดู https://sourceforge.net/p/bacnet/src/ci/master/tree/doc/README.developer
สแต็กนี้รวมการทดสอบหน่วยที่สามารถรันได้โดยใช้ Makefile ในไดเร็กทอรีรากของโปรเจ็กต์ "make test" การทดสอบหน่วยยังสามารถดำเนินการได้โดยใช้การร้องขอ make แต่ละรายการ หน่วยทดสอบจะรันพีซีและดำเนินการต่อไปกับทุกคอมมิตภายในสภาพแวดล้อมการผสานรวมแบบต่อเนื่อง
BACnet Stack ได้รับการทดสอบเชิงฟังก์ชันโดยใช้เครื่องมือที่หลากหลาย รวมถึงตัวควบคุมและเวิร์กสเตชันต่างๆ ได้ถูกรวมอยู่ในผลิตภัณฑ์จำนวนมากที่ผ่านการทดสอบ BTL สำเร็จแล้ว
การใช้ Makefile ในไดเร็กทอรีรากของโปรเจ็กต์ จะมีการสร้างแอปพลิเคชันตัวอย่างจำนวนมากที่ทำงานภายใต้ Windows หรือ Linux พวกเขาใช้เลเยอร์ดาต้าลิงก์ BACnet/IPv4 สำหรับการสื่อสารตามค่าเริ่มต้น แต่สามารถคอมไพล์เพื่อใช้ BACnet IPv6, อีเทอร์เน็ต, ARCNET หรือ MS/TP ได้
Linux/Unix/Cygwin
$ make clean all
Windows MinGW ทุบตี
$ make win32
บรรทัดคำสั่งของ Windows
c:> build.bat
คอมไพเลอร์หลายตัวสามารถคอมไพล์ BACnet stack ได้ คอมไพเลอร์ฟรีที่พบบ่อยที่สุดคือ GCC (หรือ MinGW สำหรับ Windows) makefiles ใช้ GCC เป็นค่าเริ่มต้น
ไลบรารียังมีเครื่องมือเพื่อใช้ 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 ที่ปรับเปลี่ยนเล็กน้อย และการทดสอบจะอยู่ในโฟลเดอร์ test/ ตัวสร้างการทดสอบหน่วยใช้ CMake และความครอบคลุมของการทดสอบใช้ LCOV ผลลัพธ์ HTML ของความครอบคลุมการทดสอบหน่วยมีให้เริ่มต้นในไฟล์ test/build/lcoverage/index.html
แอปพลิเคชันสาธิตคือแอปพลิเคชันไคลเอ็นต์ทั้งหมดที่ให้บริการ BACnet หลักเพียงรายการเดียว ยกเว้นแอปพลิเคชันเซิร์ฟเวอร์หนึ่งรายการและแอปพลิเคชันเกตเวย์หนึ่งรายการ แอปพลิเคชันเราเตอร์สองสามรายการ และแอปพลิเคชันเฉพาะ MS/TP สองแอปพลิเคชัน แต่ละแอปพลิเคชันจะยอมรับพารามิเตอร์บรรทัดคำสั่ง และพิมพ์เอาต์พุตไปที่ stdout หรือ stderr แอปพลิเคชันไคลเอ็นต์เป็นแบบบรรทัดคำสั่งและสามารถใช้ได้ในสคริปต์หรือเพื่อการแก้ไขปัญหา แอปพลิเคชันสาธิตใช้ตัวแปรสภาพแวดล้อมเพื่อตั้งค่าตัวเลือกเครือข่าย ดูการสาธิตแต่ละรายการสำหรับตัวเลือกต่างๆ
นอกจากนี้ยังมีโปรเจ็กต์ในไดเรกทอรี ports/ สำหรับ ARM7, AVR, RTOS-32, PIC และอื่นๆ แต่ละโปรเจ็กต์เหล่านั้นมีแอปพลิเคชันสาธิตสำหรับฮาร์ดแวร์เฉพาะ ในกรณีของ ARM7 และ AVR makefile จะทำงานร่วมกับคอมไพเลอร์ GCC และมีไฟล์โปรเจ็กต์สำหรับ 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