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. Node
  3. Wrong Result On Second Call Bb_compare()

Wrong result on second call bb_compare()

Profile picture for user Dmitry
By Dmitry , 7 November, 2024
Forums
Gurux.DLMS

Hi, Mikko!

I try compare two buffers twice.

unsigned char vnd[] = "VND";
gxData vndr; // here byteArr "VND"

unsigned char c = bb_compare(vndr.value.byteArr, vnd, 3); //OK, c==1
c = bb_compare(vndr.value.byteArr, vnd, 3); //Fail, c == 0

This is because if the buffers are equal, position of vndr.byteArr changes to length of comparing.

How to compare buffers multiple times?

Thanks!

Profile picture for user Kurumi

Kurumi

1 year 10 months ago

Hi, If compare succeeds, the…

Hi,

If compare succeeds, the bb_compare increases the byte array position with the length of compared str;

Try this:

unsigned char c = bb_compare(vndr.value.byteArr, vnd, 3); //OK, c==1
if (c)
{
vndr.value.byteArr-position -= 3;
}
c = bb_compare(vndr.value.byteArr, vnd, 3);

BR,
Mikko

Profile picture for user Dmitry

Dmitry

1 year 10 months ago

Thanks for you reply. It's…

Thanks for you reply.

It's work.

But i think comparing should not change internal state of buffers.

Also i try this:
if(vndr.value.vt == DLMS_DATA_TYPE_OCTET_STRING)
{
bool res = (memcmp(vndr.value.byteArr->data, vnd, sizeof(vnd)-1) == 0);
}

Profile picture for user Kurumi

Kurumi

1 year 10 months ago

Hi, It's designed this way…

Hi,

It's designed this way and used in many projects, so it can't be changed.

BR,
Mikko

  • Create new account
  • Reset your password

Hire Us!

Latest Releases

  • Wed, 08/26/2026 - 09:04
    Gurux.DLMS.Python 1.0.203
  • Mon, 08/17/2026 - 11:28
    Gurux.DLMS.Python 1.0.202
  • Mon, 08/17/2026 - 09:47
    gurux.dlms.cpp 9.0.2608.1701
  • Mon, 08/17/2026 - 09:25
    gurux.dlms.c 9.0.2608.1701
  • Mon, 07/27/2026 - 12:37
    gurux.dlms.cpp 9.0.2607.2701

New forum topics

  • Security vulnerability report — request for a private contact (GuruxDLMS.c / ANSI C)
  • Topic: Insufficient Memory Error When Reading Class 7 Profile Generic Objects
  • SN ReadResponse returns all-null values when response spans multiple HDLC frames
  • Gurux.Serial.Android 3.0.6 – CH340 (HL-340) USB-Serial Adapter Not Working,
  • Trying to talk to a L&G E360 meter (Using Python Gurux)
More
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin