【问题标题】:How to create a BACnet client in C如何在 C 中创建 BACnet 客户端
【发布时间】:2015-08-14 21:00:26
【问题描述】:

我正在尝试用 C 语言创建一个与 BACnet 服务器通信的客户端。此 BACnet 服务器存储在工业设备 (CAN2GO) 上,我不确定如何与此设备通信。

我花了很多时间阅读 BACnet 的文档,但我从未找到 BACnet 客户端的清晰示例。我已经使用 TCP 和 UDP 做了一些服务器和客户端,但我不知道如何启动这个 BACnet 客户端,我必须说我非常绝望。

我找到了一个似乎与我想要的库相对应的库,称为 BACnet protocol stack,但是当我尝试 whois 示例时,没有找到任何设备(我希望找到 bacnet 服务器,但也许我不应该找到?)。

所以我的问题是:你能给我一个 C 或其他语言的例子,但 C 会更好,它可以与 BACnet 服务器通信(没什么复杂的,只是一个问题和分析响应)。这个例子可以使用我刚刚写的库,或者如果你更喜欢另一个库,我当然对所有内容都开放。 非常感谢您的时间和回答。

【问题讨论】:

标签: c network-programming protocols network-protocols bacnet


【解决方案1】:

我已经使用了那个堆栈,它是你能找到的最好的开源堆栈。如果使用该库中的 demo\whois\bacwi 示例看不到任何内容,则说明您的设置有问题。特别是,您使用 IP 吗?您的 BACnet 客户端和 BACnet 服务器是否在 不同 机器上(如果不进行一些认真的调整,它们就不能在同一台机器上)?两台机器是否在同一个IP子网上? (它们必须再次出现,除非您进行一些认真的调整(在这种情况下,设置 BBMD(BACnet 广播管理设备))。

您还需要尝试“读取属性”示例 (demo\readprop\bacrp.exe) 以实际从服务器读取值。

如果您仍然遇到问题,请在 Sourceforge 上的链接中发布您的详细问题,作者史蒂夫非常对问题做出了回应。

【讨论】:

  • 非常感谢您的回答并花时间帮助我。我已经尝试过使用 demo\whois\bacwi。该程序告诉我找到了 0 个设备。但是当我用 tcpdump 检查网络时,我看到有一条消息从我的计算机传来并发送到 BACnet 服务器。然后这个 BACnet 服务器向我的机器发送 8 条消息(用 UDP 封装)来回答(有 8 台设备链接到我的 BACnet 服务器),但程序 bacwi 似乎什么都不懂,因为它告诉我没有设备。我不明白问题的根源和原因。
【解决方案2】:

我目前正在使用堆栈 - 刚刚开始。起初我遇到了一些麻烦,不确定我的问题是否相同,但是.. 我基本上使用的是一些由施耐德电气 (UNC-500) 和旧的不受支持的平台 (Niagara R2) 制造的 BAC 组件。在我的笔记本电脑上,我创建了一个主机服务器并将其寻址到它与 UNC 之间的专用 LAN 网络。我的笔记本电脑也在使用 wifi,它使用的是 DHCP,所以我有两个单独的接口。这是我的问题。我无法阅读或收到来自 UNC 的“I-AM”回复。我一关掉WIFI,就收到了“I-AM”广播。确保您与您的设备在同一个网络上,并且没有其他接口处于活动状态。也许有一种方法可以分配要使用的接口,IDK。我刚开始使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多