C# BACnet Query (CBQ)

Windows Managed Client/Server Software for BACnet Systems

If you're a developer trying to build multi-vendor BACnet client or server applications under Windows, chances are you're struggling to make your apps work properly and inter-operate across vendors. If you've looked at the BACnet standard, you know that even simple communications functions can present some daunting problems, and you probably don't have the time to become that much of a BACnet expert. You need fast and reliable tools to help you get right into communicating with BACnet devices and focus on solving your application problems. You need volume licensing that's flexible, and pricing that won't blow your budget. You need a managed Windows .NET assembly to handle BACnet communications easily. You need CBQ™.


CBQ is the industry's first easy-to-use .NET BACnet Client and Server Software for Windows developers. CBQ runs under Windows 7/8/10 and Server 2012, and provides a robust set of client/server features tailored to the needs of application designers with OEM distribution in mind.


CBQ is implemented as a managed .NET 64 bit DLL. The DLL works with BACnet/IPv4 and BACnet/IPv6 over Ethernet, and you can even use MS/TP through USB or any standard serial COM port, with an external EIA-485 converter. Our famous MS/TP for Windows technology is unequalled and provides fast, reliable operation with direct connection to EIA-485 networks.


The DLL can be configured to operate in a "windowed status" mode that provides a dynamic view of the DLL communications and configuration through its own window and system tray icon. Alternately you can configure CBQ to operate in a "windowless mode" for use within a Windows service.


After initialization, the DLL maintains several separate Windows threads that continuously process requests from client application programs, and receive and handle responses from BACnet peer devices. Only one application program process can use the DLL at a time. The DLL uses an asynchronous method for initiating a request, and the caller must periodically poll for the completion of the request. This approach leaves the control of polling frequency in the hands of the application designer, and makes it simple to interface with the DLL from C#, managed C++ or VB.net.


CBQ will automatically locate and identify peer BACnet devices for you, even on multiple network segments. You can also configure the peer list statically in a file for faster startup, when you need to communicate with MS/TP slaves, or when using BACnet/IP without BACnet Broadcast Management Devices. The DLL has a flexible policy for peer management allowing both dynamic peer discovery and static peer configuration.


The basic operations of Reading and Writing properties of BACnet objects support all BACnet standard objects and properties with primitive data types. Proprietary objects and properties that return primitive data type values are also supported. CBQ also provides a rich XML based API for handling special and proprietary data types.


The DLL asynchronously receives confirmed and unconfirmed Event Notifications and maintains its own "alarm and event list" that may be examined independently by the application program whenever needed. Individual notifications requiring acknowledgment may also be acknowledged by the application program.


The DLL provides asynchronous file transfer support, which allows calling programs to request the uploading or downloading of files or portions of files from and to peer BACnet devices completely under the DLL's control.


Ancillary functions for DeviceCommunicationControl and ReinitializeDevice are also provided.


Developer features:

  • Works with Windows 7/8/10 and Server 2012 in x32 and x64 versions
  • Includes complete API documentation
  • Includes an extensive tutorial of sample programs in C#
  • Supports BACnet revision 14
  • Fully Asynchronous operation for very high performance applications
  • Unicode support


The DLL provides explicit functions for managing each of these popular BACnet tasks:

  • Segmentation for transmitted and received messages with configurable sizing
  • Read/WriteProperty and Read/Write Multiple
  • Alarm/EventNotification receiving
    Asynchronous reception of Confirmed and UnconfirmedEventNotifications
    Independent control over explicit AcknowledgeAlarm initiation
  • Pseudo Alarm “subscription”
  • AtomicRead/Write Files
  • Automatic Peer Device discovery and management
  • Static Device Binding
  • Dynamic Device Binding including Who-Is initiation and I-Am execution
    Both Automatic and explicit Who-Is (with ranging) are supported
    Fully asynchronous management of peer device list
    Application program access to peer list
  • Dynamic Object Binding through explicit Who-Has initiation and fully asynchronous I-Have reception
  • Subscription and management for COV notifications
  • Windowed and Windowless modes
    windowed mode provides status and diagnostic tools
  • ReadRange for Trend Logs
  • Time master TimeSynchronization including UTC
  • DeviceCommunicationControl initiation
  • ReinitializeDevice initiation



Operating System:
Microsoft Windows 7/8/10, Server 2012 (x32 and x64)

Network Interface:
any NDIS-compliant Ethernet NIC, standard serial COM port or USB and EIA-485 converter

BACnet/IPv4, BACnet/IPv6, MS/TP

Developer Binary Executable
Multi-Site and OEM Licensing also available licensed in blocks of 5,10,25,50,100,200 etc.