上一篇博客中https://blog.csdn.net/dream_broken/article/details/106646604,代码和设备模拟器Yabe是同一台电脑上,现在试试代码和设备模拟器不在同一台电脑上,但是在同网段内,因为bacnet ip是通过udp在同网段内进行广播的。现在进行测试下。
Yabe运行在192.168.0.200上,代码在192.168.0.123上。测试环境window,开发工具eclipse.
注意:必须同网段,必须同网段,必须同网段。不明白为什么同网段要求的,自行百度了解UDP协议
代码
package com.fei;
import java.util.Arrays;
import java.util.List;
import com.serotonin.bacnet4j.LocalDevice;
import com.serotonin.bacnet4j.RemoteDevice;
import com.serotonin.bacnet4j.npdu.ip.IpNetwork;
import com.serotonin.bacnet4j.npdu.ip.IpNetworkBuilder;
import com.serotonin.bacnet4j.transport.DefaultTransport;
import com.serotonin.bacnet4j.type.Encodable;
import com.serotonin.bacnet4j.type.enumerated.ObjectType;
import com.serotonin.bacnet4j.type.enumerated.PropertyIdentifier;
import com.serotonin.bacnet4j.type.primitive.ObjectIdentifier;
import com.serotonin.bacnet4j.type.primitive.UnsignedInteger;
import com.serotonin.bacnet4j.util.PropertyValues;
import com.serotonin.bacnet4j.util.ReadListener;
import com.serotonin.bacnet4j.util.RequestUtils;
/**
* 启动Yabe的天气模拟
* @author Jfei
*
*/
public class ReadTest01 {
/**
* Yabe在本地电脑上启动
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
LocalDevice d = null;
try {
//创建网络对象
IpNetwork ipNetwork = new IpNetworkBuilder()
.withLocalBindAddress("192.168.0.123")//本机的ip
.withSubnet("255.255.255.0", 24)
.withPort(47808) //Yabe默认的UDP端口
.withReuseAddress(true)
.build();
//创建虚拟的本地设备,deviceNumber随意
d = new LocalDevice(123, new DefaultTransport(ipNetwork));
d.initialize();
d.startRemoteDeviceDiscovery();