BACdoor OEM Client/Server (BACDOC)

Windows 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 BACDOC™.


BACDOC is the industry's first easy-to-use BACnet Client and Server Software for Windows developers. BACDOC 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.


BACDOC is implemented as a Win32 DLL. The DLL works with BACnet/IP over Ethernet, and you can even use MS/TP through USB or any standard serial COM port, with an external EIA-485 converter. For legacy applications, you can use Ethernet 8802-3 with NDIS-compliant drivers, or PTP through any standard serial COM port.


Our famous fifth generation 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 BACDOC 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", Visual Basic and other popular Windows development languages.


BACDOC 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. A special "RAW DATA MODE" is also provided 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 sample programs in C, C++, VB6, C# and
  • Includes XML-oriented BACDoor Service for multi-process API
  • 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 and multi-mode alarm handling/logging
    Asynchronous reception of Confirmed and UnconfirmedEventNotifications
    Independent control over explicit AcknowledgeAlarm initiation
  • GetAlarmSummary and GetEventInformation 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
  • LifeSafetyOperation
  • ReadRange for Trend Logs
  • Time master TimeSynchronization including UTC
  • Server support for DE, AV, BV, MV objects
    with asynchronous and callback coordination with application
    binary database file
    virtual device routing
    dynamic object creation
  • DeviceCommunicationControl initiation
  • ReinitializeDevice initiation
  • UnconfirmedPrivateTransfer initiation and execution
  • Modem and Half-router support
  • BACdoor Service provides asynchronous multi-process API with XML features



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/IP, MS/TP, Ethernet 8802-3, PTP

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