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

  • Mon, 07/27/2026 - 12:37
    gurux.dlms.cpp 9.0.2607.2701
  • Thu, 07/23/2026 - 16:19
    gurux.dlms.java 4.0.96
  • 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

New forum topics

  • Service not known error on gprs communication
  • Help Needed: Interfacing Saral 100 Energy Meter with Microcontroller via RS232
  • Connecting Meter to Agent via serial
  • Reading block profile with Compact array
  • DLMS server - serving multiple similar datasets gathered from multiple meters across distinct logical addresses
More
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin