We are following these sequences to write multiple properties of a given object of a specific( SCADA Engine Simulator) BACnet device using bacnet4j api
1.PropertyValue (PropertyIdentifier propertyIdentifier,Encodable encodeValue).Repeated for each property to be WRitten
If the simulator does not return any information about a write failure, then the answer is no. BACnet4J will itself return an error response, but only at the moment of the failure, i.e. not transactional. Still, this is likely better than not returning an error at all.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
We are facing the issues as if the we are unable to write at least 1 property out of 3 given in a write multiple properties API of BACnet4j ,It simply throw ErrorAPDUException even if the rest 2(say)are written successfully.
The request will stop when first exception arrives(if the 1st properties is not writable)and won't go further(2 and 3) for other properties.
Is that not supported by the Simulator or the BACnet4j API?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
To my knowledge the BACnet spec makes no mention of transactional multiple writes. If you need this you can implement it yourself by using individual write requests.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
We are following these sequences to write multiple properties of a given object of a specific( SCADA Engine Simulator) BACnet device using bacnet4j api
1.PropertyValue (PropertyIdentifier propertyIdentifier,Encodable encodeValue).Repeated for each property to be WRitten
2.WriteAccessSpecification write=new WriteAccessSpecification ( ObjectIdentifier objectIdentifier SequenceOf < PropertyValue > (pvs))
3.create SequenceOf<WriteAccessSpecification >writeSpecs
4.WritePropertyMultipleRequest wmpr= WritePropertyMultipleRequest ( SequenceOf< WriteAccessSpecification > (writeSpecs)))
5.Recieve AcknowledgementService by invoking send(RemoteDevice remoteDevice, WritePropertyMultipleRequest wmpr)
At the end of the procedure,if we recieve AcknowledgementService as null the we are saying Write is Successfull.
This also happens if we provide 3(say)properties at a time and only 1(say)is successfully written to the simulator and the rest 2(say) are not.
Is there any way to obtain the information which property is successfully written to the simulator or which are not with reason(of not being written)?
If the simulator does not return any information about a write failure, then the answer is no. BACnet4J will itself return an error response, but only at the moment of the failure, i.e. not transactional. Still, this is likely better than not returning an error at all.
Thanks mlohbihler.
We are facing the issues as if the we are unable to write at least 1 property out of 3 given in a write multiple properties API of BACnet4j ,It simply throw ErrorAPDUException even if the rest 2(say)are written successfully.
The request will stop when first exception arrives(if the 1st properties is not writable)and won't go further(2 and 3) for other properties.
Is that not supported by the Simulator or the BACnet4j API?
To my knowledge the BACnet spec makes no mention of transactional multiple writes. If you need this you can implement it yourself by using individual write requests.