Hello ,
I try to read encodable value in a array with
ReadPropertyRequest(ObjectIdentifier objectIdentifier, PropertyIdentifier propertyIdentifier,
UnsignedInteger propertyArrayIndex)
For an ack requred in notification class i get
[list]
com.serotonin.bacnet4j.exception.ErrorAPDUException: ErrorAPDU(choice=12, errorClass=Property, errorCode=Property is not an array)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:434)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:415)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:408)
at com.sauter_controls.jbacnet.Test.read(Test.java:432)
at com.sauter_controls.jbacnet.Test.startTest(Test.java:312)
at com.sauter_controls.jbacnet.Test.<init>(Test.java:94)
at com.sauter_controls.jbacnet.Test.main(Test.java:75)
Exception in thread "main" java.lang.NullPointerException
at com.sauter_controls.jbacnet.Test.read(Test.java:445)
at com.sauter_controls.jbacnet.Test.startTest(Test.java:312)
at com.sauter_controls.jbacnet.Test.<init>(Test.java:94)
at com.sauter_controls.jbacnet.Test.main(Test.java:75)
[/list]
For an priority array in Analog output i get
[list]
com.serotonin.bacnet4j.exception.BACnetErrorException: Property: Property is not a list
at com.serotonin.bacnet4j.type.Encodable.readEncodable(Encodable.java:307)
at com.serotonin.bacnet4j.service.acknowledgement.ReadPropertyAck.<init>(ReadPropertyAck.java:88)
at com.serotonin.bacnet4j.service.acknowledgement.AcknowledgementService.createAcknowledgementService(AcknowledgementService.java:46)
at com.serotonin.bacnet4j.apdu.ComplexACK.parseServiceData(ComplexACK.java:191)
at com.serotonin.bacnet4j.npdu.ip.IpMessageControl.waitForAck(IpMessageControl.java:681)
at com.serotonin.bacnet4j.npdu.ip.IpMessageControl.send(IpMessageControl.java:300)
at com.serotonin.bacnet4j.npdu.ip.IpMessageControl.send(IpMessageControl.java:280)
at com.serotonin.bacnet4j.npdu.ip.IpMessageControl.send(IpMessageControl.java:237)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:425)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:415)
at com.serotonin.bacnet4j.LocalDevice.send(LocalDevice.java:408)
at com.sauter_controls.jbacnet.Test.read(Test.java:432)
at com.sauter_controls.jbacnet.Test.startTest(Test.java:312)
at com.sauter_controls.jbacnet.Test.<init>(Test.java:94)
at com.sauter_controls.jbacnet.Test.main(Test.java:75)
[/list]
In the class encodable is that ok ?
if (propertyArrayIndex != null && !def.isSequence())
//return readWrapped(queue, def.getClazz(), contextId);
throw new BACnetErrorException(ErrorClass.property, ErrorCode.propertyIsNotAList);
My code :
int deviceID = dataForTestAliases.getDev().getInstanceNumber();
int objectID = dataForTestAliases.getRo().getObjectIdentifier().getInstanceNumber();
int property = dataForTestAliases.getProperty();
String index = dataForTestAliases.getIndex();
PropertyIdentifier pid = new PropertyIdentifier(property);
Encodable value ;
ReadPropertyAck readAck = null;
try {
if (!index.equals("NONE")){
readAck = (ReadPropertyAck) bnet.getLocalDevice().send(dataForTestAliases.getDev(),
new ReadPropertyRequest(dataForTestAliases.getRo().getObjectIdentifier(), pid,
new UnsignedInteger(Integer.parseInt(dataForTestAliases.getIndex()))));
}
else {
readAck = (ReadPropertyAck) bnet.getLocalDevice().send(dataForTestAliases.getDev(),
new ReadPropertyRequest(dataForTestAliases.getRo().getObjectIdentifier(), pid));
}
} catch (BACnetException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
value = readAck.getValue();
Thanks for your help