BACnetStack_SendReadPropertyWithLength
bool BACnetStack_SendReadPropertyWithLength( uint8_t * sentInvokeId, const uint8_t serviceType, const uint8_t * connectionString, const uint8_t connectionStringLength, const uint32_t networkPortInstance, const uint16_t destinationNetwork, const uint8_t * destinationAddress, const uint8_t destinationAddressLength, const uint32_t propertyArraysCount, const void * propertyArrays, const uint32_t propertyArraysLength);Sends a ReadProperty or ReadPropertyMultiple request, like BACnetStack_SendReadProperty(), with the request buffer’s length checked.
BACnetStack_SendReadProperty() has an identical signature; both functions exist side by side.
Same packed-element shape as BACnetStack_SendReadProperty() (see the diagram and worked example above - the byte layout is identical, with propertyArraysLength = 15 for that single-element example). The trailing propertyArraysLength parameter is the total byte length of propertyArrays (all elements concatenated) and IS enforced: a propertyArraysCount implying more bytes than propertyArraysLength actually provides is rejected and the call returns false without reading past the buffer.
See also: Client response hooks
BACnet reference: ANSI/ASHRAE 135-2024 clause 15.5 (ReadProperty Service); clause 15.7 (ReadPropertyMultiple Service).
Parameters
Section titled “Parameters”| Parameter | Direction | Description |
|---|---|---|
sentInvokeId |
out | The invoke-id of the sent request, valid only if this function returns true. |
serviceType |
in | 12 = ReadProperty, 14 = ReadPropertyMultiple; selects which service is sent. |
connectionString, connectionStringLength |
in | The datalink address to send TO (the destination) - not the local address to send from. For IPv4 this is 6 bytes: 4 octets of IPv4 address followed by 2 octets of port, big-endian (e.g. 0xC0,0xA8,0x01,0x05,0xBA,0xC0 = 192.168.1.5:47808; see BACnetStack_SendRegisterForeignDevice() for a worked example); on BACnet/IPv4 the stack refuses to send to a connection string of any other length, except that a broadcast from a device registered as a foreign device goes to its BBMD and does not use the connection string. MS/TP and BACnet/SC use a different connection-string shape; see their respective Set/Send exports. |
networkPortInstance |
in | The Network Port object instance to send the message on, or BACNET_NETWORK_PORT_DEFAULT (4194303) for the default/single port. |
destinationNetwork, destinationAddress, destinationAddressLength |
in | The destination to send the request to. |
propertyArraysCount, propertyArrays |
in | The packed property-reference array described above. |
propertyArraysLength |
in | The total byte length of propertyArrays (all elements concatenated). Enforced: rejects a propertyArraysCount that would read past this length. |
Returns
Section titled “Returns”True if the request was sent, otherwise false.
Topic: Client requests. Declared in CASBACnetStackDLL.h.