You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用bacnet4j通过Java连接BACnet设备时设备列表为空求助

问题分析与解决方案

你的代码无法获取远程设备的核心原因是BACnet的WhoIs请求是异步交互,发送请求后立刻查询设备列表,此时远程设备还没来得及响应,所以列表为空。此外还有几个潜在配置问题需要修正,具体如下:

1. 必须等待设备响应时间

WhoIs请求发送后,不能立刻调用getRemoteDevices(),得给远程设备留足响应时间,两种实现方式:

方法一:添加延迟(适合调试)

String hostAddress="192.168.1.9";
IpNetwork network = new IpNetworkBuilder().withPort(47808).withSubnet(hostAddress, 24).build();
Transport transport = new DefaultTransport(network);
LocalDevice localDevice = new LocalDevice(3227671, transport);
localDevice.initialize();
localDevice.sendGlobalBroadcast(new WhoIsRequest());

// 等待3秒让设备返回响应
try {
    Thread.sleep(3000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

List<RemoteDevice> remoteDevices = localDevice.getRemoteDevices();

方法二:用设备发现监听器(适合生产环境)

通过注册监听器实时接收设备响应事件,不用被动等待:

localDevice.addRemoteDeviceListener(new RemoteDeviceListener() {
    @Override
    public void deviceAdded(RemoteDevice remoteDevice) {
        System.out.println("发现设备:" + remoteDevice.getDeviceId());
        // 在这里处理设备逻辑
    }

    @Override
    public void deviceUpdated(RemoteDevice remoteDevice) {}

    @Override
    public void deviceRemoved(RemoteDevice remoteDevice) {}
});

localDevice.sendGlobalBroadcast(new WhoIsRequest());

2. 修正子网配置(关键)

你当前用设备地址192.168.1.9作为子网地址,会导致本地设备无法正确发送广播或接收响应,建议改成两种方式:

自动检测子网(推荐)

让库自动识别本地网卡的子网信息:

IpNetwork network = new IpNetworkBuilder().withPort(47808).build();

指定本地网卡IP

如果知道本地电脑的局域网IP(比如192.168.1.100),直接指定:

IpNetwork network = new IpNetworkBuilder().withPort(47808).withSubnet("192.168.1.100", 24).build();

3. 明确WhoIs请求的设备ID范围

既然知道目标设备ID是123,可以发送指定范围的WhoIs请求,缩小广播范围,提升响应效率:

// 只查询设备ID为123的设备
localDevice.sendGlobalBroadcast(new WhoIsRequest(123, 123));

4. 确保本地设备初始化完成

初始化本地设备后,最好等待初始化完成再发送请求:

localDevice.initialize();
localDevice.waitForInitialization(); // 阻塞直到初始化完成
localDevice.sendGlobalBroadcast(new WhoIsRequest());

额外排查点

  • 确认本地设备和YABE模拟器在同一局域网,无防火墙阻挡UDP 47808端口
  • 检查YABE模拟器的BACnet设置,确保开启了WhoIs响应功能

内容的提问来源于stack exchange,提问作者st lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 10:43:19