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. 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 7 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 7 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 7 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

  • Tue, 06/09/2026 - 11:16
    gurux.dlms.java 4.0.95
  • Tue, 06/09/2026 - 10:03
    Gurux.DLMS.Python 1.0.199
  • Mon, 06/08/2026 - 13:39
    gurux.dlms.cpp 9.0.2606.0801
  • Mon, 06/01/2026 - 10:15
    gurux.dlms.cpp 9.0.2606.0101
  • Thu, 05/28/2026 - 16:06
    gurux.dlms.java 4.0.94

New forum topics

  • Error reading L&G Meter
  • Pass a TCP Client to GXNet
  • Australian EDMI Mk10D (Essential Energy area)
  • Strange mix of data notificiation vs get response
  • DLMS Connection
More
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin