Skip to main content
Home
for DLMS smart meters
Open source solutions for DLMS smart metering

Main navigation

  • Home
  • Products
  • About us
  • Open Source
  • Community
  • Forum
  • Downloads
User account menu
  • Log in

Breadcrumb

  1. Home
  2. Reading Block Profile With Compact Array

Reading block profile with Compact array

By Jayaraj , 18 July, 2026
Forums
General discussion

Hi, am trying to read meter that supports compact array for load profile reading. I have following observation with Compact array.

- Whenever I read few entries that fit in single window, all works fine.
- Whenever I try reading more entries that triggers block transfer, director throws exception

"System.OutOfMemoryException: Insufficient memory to continue the execution of the program.
at GXDLMSDirector.GXDLMSCommunicator.Read(Object sender, GXDLMSObject obj, Boolean forceRead)
at GXDLMSDirector.MainForm.Read(Object sender, GXAsyncWork work, Object[] parameters)"

I tried to dig further to understand if its meter issue or GXDLMS. Following is the data that comes out of meter.

: compact array
13

: Array description
02 0F 091717171717171717171717171717

: Array Length (3243)
820CAB

: Array contents
0C07EA0911FF001E00FF8000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0C07EA0911FF010000FF8000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0C07EA0911FF011E00FF8000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0C07EA0911FF020000FF8000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0C07EA0911FF021E00FF8000FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

As mentioned above, meter is gonna send data in multiple blocks and in first block, 5 entries are sent out. But in total expected number of bytes are 3243.

In function 'internal static object GetCompactArray(GXDLMSSettings settings, GXByteBuffer buff, GXDataInfo info, bool onlyDataTypes)', i came across this line

while (buff.Position - start < len)
{

}

i see htat buff.Length = ~350, is having data only for 1st block, but len here is 3243. And subsequently throw error because buff do not have enough data.

Can you pls confirm, is my understanding, right? what should be the solution for this?

  • Log in or register to post comments
  • Create new account
  • Reset your password

Hire Us!

Latest Releases

  • Thu, 07/09/2026 - 14:34
    Gurux.DLMS.Python 1.0.201
  • Fri, 06/26/2026 - 16:32
    Gurux.Service 3.0.2606.2601
  • Wed, 06/24/2026 - 08:36
    Gurux.DLMS.Python 1.0.200
  • Mon, 06/15/2026 - 08:52
    gurux.dlms.c 9.0.2606.1501
  • Tue, 06/09/2026 - 11:16
    gurux.dlms.java 4.0.95

New forum topics

  • Reading block profile with Compact array
  • DLMS server - serving multiple similar datasets gathered from multiple meters across distinct logical addresses
  • CGXDLMSProfileGeneric::SetValue for attribute 3. Possible memory leak
  • Clou
  • DLMS Server how to set server logical address, and attach object to different association
More
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin