Yes I resolved my problem,
When you receive your AVL paquet with "Data Array", you should send "Data Array ACK" (which contains the number of received data).
To find the number of data it depends on your device model and Firmware version (to know which codec to use Codec8 or Codec12...).
For example I bought FMB001 (it uses Codec8) I upgraded my Firmware version to use Codec12). But be careful :
Even if you upgrade your device you will continue to receive AVL packets with your device native, Codec Exemple :
I upgraded my FMB001 Firmware to use Codec12 (but I continue to receive AVL paquets in Codec8 every x time).
Only when I send commands with Codec12 I receive answers with Codec12 but recurrent packets still in Codec8.
I suppose your AVL is Codec8 format (like me) : https://wiki.teltonika.lt/view/Codec_8
AVL data packet structure :
You can check your Codec in 9th (Codec ID) : 0x08 (Codec8) or 0x0C (Codec 12).
And you can find your number of received data in "Number of Data 1" field.
Keep in mind your server must report to device the number of received data (Hexa Value).
So you can easly extract number of data from this field, depends on your programming language :
My Windev Programming Language example :
sHexaMsg is string = GetHexa(_bufMsg) // First I convert received message to Hexa value, each Byte 2 positions (0x01 = one Byte).
sHexaMsg = sHexaMsg[[19 TO 20]] // Extract Number of Data from 10th Byte in 19th and 20th positions (One Byte in Hexa Value).
iNumberOfData is int = Val(sHexaMsg,"x") // Integer Value. Ex : 0x11 (Hexa) = 17 (Integer).
sResult is string = NumToString(iNumberOfData, "08X") // Convert 17 (Integer) to 4 bytes (8 positions) 00 00 00 11.
bufReplay is buffer = HexaToBuffer(sResult) // I put Hexa value the buffer (maybe no, depends on your language).
SocketWrite(sDeviceChannel,bufReplay) // I send answer to device.
I hope my answer will help you :)