1、环境准备
- #maven环境
- <repositories>
- <repository>
- <id>ias-releases</id>
- <url>https://maven.mangoautomation.net/repository/ias-release/</url>
- </repository>
- </repositories>
- <dependencies>
- <dependency>
- <groupId>com.infiniteautomation</groupId>
- <artifactId>bacnet4j</artifactId>
- <version>6.0.0</version>
- </dependency>
- </dependencies>
复制代码 2、实现
- IpNetwork ipNetwork = new IpNetworkBuilder()
- .withLocalBindAddress("0.0.0.0")
- .withSubnet("255.255.252.0", 22)
- .withPort(port) // <== 修改为你设备的端口
- .build();
- ipNetwork.enableBBMD(); //跨网段必须开启BBMD
- //创建虚拟的本地设备,deviceNumber随意 初始化本地设备
- localDevice = new LocalDevice(123456, new DefaultTransport(ipNetwork)).withClock(new WarpClock()).initialize();
- ipNetwork.registerAsForeignDevice(new InetSocketAddress("ba设备所在地址ip", "ba设备所在地址的端口"), 10000000);
- //搜寻网段内远程设备
- localDevice.startRemoteDeviceDiscovery();
- //获取远程设备,instanceNumber是远程设备ID
- RemoteDevice remoteDevice = localDevice.getRemoteDeviceBlocking(reqVO.getDeviceId());
- //获取远程设备的标识符对象
- List<ObjectIdentifier> objectList = RequestUtils.getObjectList(localDevice, remoteDevice).getValues();
- List<ObjectIdentifier> biList = new ArrayList<>();
- List<ObjectIdentifier> aiList = new ArrayList<>();
- System.out.println("<===================对象标识符的对象类型,实例数(下标)===================>");
- //Object所有标识符 binaryInput
- for (ObjectIdentifier oi : objectList) {
- // System.out.println(oi.getObjectType().toString() + "," + oi.getInstanceNumber());
- //binary-input
- if (oi.getObjectType().equals(ObjectType.binaryInput)) {
- biList.add(new ObjectIdentifier(ObjectType.binaryInput, oi.getInstanceNumber()));
- }
- //analog-input
- if (oi.getObjectType().equals(ObjectType.analogInput)) {
- aiList.add(new ObjectIdentifier(ObjectType.analogInput, oi.getInstanceNumber()));
- }
- }
- System.out.println("<==================================================================>");
- System.out.println("取值开始!!!================>");
- final PropertyReferences refs = new PropertyReferences();
- if (biList != null && biList.size() > 0) {
- for (final ObjectIdentifier oid : biList) {
- if (reqVO.getInstNums() != null && !reqVO.getInstNums().contains(oid.getInstanceNumber())) continue;
- refs.add(oid, PropertyIdentifier.objectName);
- refs.add(oid, PropertyIdentifier.presentValue);
- // refs.add(oid, PropertyIdentifier.description);
- }
- PropertyValues pvAll = RequestUtils.readProperties(localDevice, remoteDevice, refs, false, null);
- for (ObjectIdentifier oi : biList) {
- System.out.println("instanceNumber:" + oi.getInstanceNumber());
- System.out.println(oi.getObjectType() + " " + oi.getInstanceNumber() + " Name: " + pvAll.get(oi, PropertyIdentifier.objectName));
- System.out.println(oi.getObjectType() + " " + oi.getInstanceNumber() + " PresentValue: " + pvAll.get(oi, PropertyIdentifier.presentValue));
- }
- } else if (aiList != null && aiList.size() > 0) {
- for (final ObjectIdentifier oid : aiList) {
- if (reqVO.getInstNums() != null && !reqVO.getInstNums().contains(oid.getInstanceNumber())) continue;
- refs.add(oid, PropertyIdentifier.objectName);
- refs.add(oid, PropertyIdentifier.presentValue);
- // refs.add(oid, PropertyIdentifier.description);
- }
- PropertyValues pvAll = RequestUtils.readProperties(localDevice, remoteDevice, refs, false, null);
- for (ObjectIdentifier oi : aiList) {
- System.out.println("instanceNumber:" + oi.getInstanceNumber());
- System.out.println(oi.getObjectType() + " " + oi.getInstanceNumber() + " Name: " + pvAll.get(oi, PropertyIdentifier.objectName));
- System.out.println(oi.getObjectType() + " " + oi.getInstanceNumber() + " PresentValue: " + pvAll.get(oi, PropertyIdentifier.presentValue));
- }
- }
- System.out.println("================>取值结束!!!");
复制代码 3、可以是用可视化工具Bacnet Scane可视化工具
bacnet scane可视化下载地址
图中含义:搜刮ip地址为172.16.33.250下的47809端口的ba装备。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
|