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. SN ReadResponse Returns All-null Values When Response Spans Multiple HDLC Frames

SN ReadResponse returns all-null values when response spans multiple HDLC frames

By L0uisc_iot , 8 September, 2026
Forums
Gurux.DLMS

Environment:

- Gurux.DLMS.NET 9.0.2605.2801 (latest release at time of writing), Gurux.Net 8.4.2604.201, .NET 8
- HDLC over TCP, SN (short-name) referencing (UseLogicalNameReferencing = false)
- Landis+Gyr E650, HDLC negotiated MaxInfoTX=128 / MaxInfoRX=62, window size 1

Symptom:
A single ReadList/Read-Request with a list of ~12 or more short names comes back with every value null — no per-item DataAccessResult error, no exception, TotalCount correct, just every entry in the returned object[] is null. The same call with a smaller list (e.g. 2–3 items) returns correct, real values every time.

Confirmed this is not a meter/network issue:
I captured the raw HDLC bytes for a failing 30-item read and decoded them independently in GXDLMSDirector's DLMS Translator. The meter's response is complete and correct — ReadResponse Qty="1E" with 30 valid Data elements (real Int32/UInt32/UInt8 values, no DataAccessError entries). So the meter is answering correctly; the client is misparsing a good reply.

I also reproduced this from a bare-metal script driving GXDLMSClient directly (no application code of ours in the loop) against the same meter, with the exact 30 short names from the capture — same result: correct request goes out, meter responds correctly (confirmed via the translator decode of the same session), client-side result comes back all-null.

Suspected root cause (reading through Gurux.DLMS.GXDLMS.HandleReadResponse in this version):

private static bool HandleReadResponse(GXDLMSSettings settings, GXReplyData reply, int index)
{
int num = reply.TotalCount;
bool flag = num == 0 || reply.CommandType == 2;
if (flag)
{
num = (reply.TotalCount = GXCommon.GetObjectCount(reply.Data));
}
...
if (num != 1)
{
if (reply.IsMoreData)
{
GetDataFromBlock(reply.Data, 0);
return false;
}
if (!flag)
{
reply.Data.Position = 0;
}
...
}
...
for (int i = 0; i != num; i++)
{
SingleReadResponse singleReadResponse;
if (flag)
{
singleReadResponse = (SingleReadResponse)reply.Data.GetUInt8(); // consumes per-item tag
reply.CommandType = (byte)singleReadResponse;
}
else
{
singleReadResponse = (SingleReadResponse)reply.CommandType; // does NOT consume it
}
...
}

When the response arrives in one HDLC frame, flag is true on the (only) call, TotalCount is parsed, and each item's SingleReadResponse tag byte is correctly consumed per-iteration.

When the response is segmented across multiple frames, HandleReadResponse is invoked once per frame. On the first call (IsMoreData == true), it only extracts TotalCount and returns early — no items are parsed yet. On the final call (IsMoreData == false), flag is now false (since TotalCount is already nonzero from the earlier call), which means:

reply.Data.Position = 0 resets the cursor to the start of the entire accumulated buffer (including the already-consumed count-prefix byte from the first call), and
the per-item loop takes the else branch for every iteration, which never consumes the per-item tag byte — it just reuses whatever reply.CommandType was cached from the very first call.

The net effect looks like a stream misalignment: the loop ends up reading GetValueFromData at the wrong offsets for the whole pass, and every item decodes as null/garbage rather than the correct value. This matches what I'm seeing exactly: batches small enough to arrive in one HDLC frame always work; batches that force segmentation always come back all-null, regardless of the actual values on the wire.

This looks structurally related to the HandleGetResponseWithList bug fixed in commit 918b84a (a segmented list response misparsing null values due to a position-tracking issue) — but that fix only touches HandleGetResponseWithList, the LN Get-Request-With-List path. HandleReadResponse, the SN Read-Request path, doesn't appear to have received an equivalent fix and still shows this behavior in the current 9.0.2605.2801 release.

Repro conditions, if useful for a test case:

SN referencing, any meter/simulator that supports multi-item Read-Request
A list of short names large enough that the reply requires more than one HDLC frame (in my case, a small negotiated MaxInfoRX of 62 bytes made this easy to hit at ~12 items with 6-byte-per-item Int32 responses)
Compare a request that fits in one frame vs. one that doesn't — the former always works, the latter always returns nulls

Happy to share the exact capture bytes and my trace if that helps track it down

L0uisc_iot

2 days 14 hours ago

I'm looking into…

I'm looking into implementing a fix. Will send PR if I get it working.

L0uisc_iot

2 days 13 hours ago

PR created: https://github…

PR created: https://github.com/Gurux/Gurux.DLMS.Net/pull/13

L0uisc_iot

1 day 14 hours ago

What is the status of this…

What is the status of this PR? Do you accept PRs? Do I need to fix the format? What can I do to get this fix merged sooner?

Profile picture for user Kurumi

Kurumi

12 min 48 sec ago

Hi, This is now been tested…

Hi,

This is now been tested with the Landis+Gyr E650 and it worked without problems. Can you add the communication hex trace so this can be verified?

Regards,
Mikko

L0uisc_iot

4 min 29 sec ago

Sure, here they are2026-09…

Sure, here they are

2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media state changed to Open for device LGE650-Test1
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Sending SNRM request
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.192  Sent   7E A0 07 03 21 93 0F 01 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.208  Received7E A0 1E 21 03 73 C3 7A 81 80 12 05 01 80 06 01 3E 07 04 00 00 00 01 08 04 00 00 00 01 07 22 7E
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Parsing UA response
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Parsing UA response succeeded
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Sending AARQ request 1.
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.208  Sent   7E A0 2B 03 21 10 FB AF E6 E6 00 60 1D A1 09 06 07 60 85 74 05 08 01 02 BE 10 04 0E 01 00 00 00 06 5F 1F 04 00 1C 03 20 FF FF 80 AB 7E
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Modules.Scheduler.Downlink.Services.ReconService[0] [ReconService] No commands to process. Delaying next recon for 10000 ms.
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.248  Received7E A0 37 21 03 30 6C 7C E6 E7 00 61 28 A1 09 06 07 60 85 74 05 08 01 02 A2 03 02 01 00 A3 05 A1 03 02 01 00 BE 0F 04 0D 08 00 06 5F 1F 04 00 18 02 20 09 60 FA 00 0A A8 7E
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Parsing AARE response.
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Parsing AARE response succeeded.
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.252  Sent   7E A0 11 03 21 32 B7 3D E6 E6 00 05 01 02 FD 08 10 D3 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.277  Received7E A0 21 21 03 52 43 B4 E6 E7 00 0C 01 00 09 10 4C 47 5A 35 31 32 32 39 33 36 37 00 00 00 00 00 17 8E 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.277  Sent   7E A0 11 03 21 54 87 3B E6 E6 00 05 01 02 FF 08 A0 E0 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.300  Received7E A0 14 21 03 74 D2 D2 E6 E7 00 0C 01 00 0A 03 42 33 32 82 EC 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.300  Sent   7E A0 11 03 21 76 97 39 E6 E6 00 05 01 02 2B C8 F7 1E 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.327  Received7E A0 1D 21 03 96 AD EF E6 E7 00 0C 01 00 09 0C 07 EA 09 0B 05 0A 1B 13 FF 80 00 00 06 D0 7E
2026-09-11 10:27:17 dbug: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Device LGE650-Test1 clock: offset 02:00:00 from UTC, drift 00:00:01.6859137, status Ok.
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.327  Sent   7E A0 11 03 21 98 E7 37 E6 E6 00 05 01 02 2B D0 3E 82 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.349  Received7E A0 12 21 03 B8 28 95 E6 E7 00 0C 01 00 10 FF 88 0E B2 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.350  Sent   7E A8 47 03 21 BA 5B F1 E6 E6 00 05 23 02 FF 08 02 08 30 02 87 F0 02 2B C8 02 24 E8 02 25 90 02 94 58 02 94 F0 02 95 88 02 96 20 02 96 B8 02 97 50 02 9E 70 02 9F 08 02 9F A0 02 9D D8 02 98 80 02 99 18 02 B5 98 BD 0B 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.383  Received7E A0 07 21 03 D1 19 C6 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.384  Sent   7E A0 39 03 21 BC 4A 3A 02 B6 30 02 B6 C8 02 B7 60 02 B7 F8 02 B8 90 02 99 B0 02 9A 48 02 9A E0 02 9B 78 02 9C 10 02 9C A8 02 9D 40 02 89 F8 02 8A 60 02 8A C8 02 8B 30 87 88 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.515  Received7E A8 4C 21 03 FA 4A D5 E6 E7 00 0C 23 00 0A 03 42 33 32 00 11 3F 00 06 00 41 57 37 00 09 0C 07 EA 09 0B 05 0A 1B 13 FF 80 00 00 00 14 00 00 00 00 07 8B 61 41 00 14 00 00 00 00 08 6F 55 F1 00 05 00 00 59 AA 00 05 00 00 59 A8 EF A9 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.516  Sent   7E A0 07 03 21 D1 19 60 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.676  Received7E A8 4B 21 03 FC 5D E7 00 05 00 00 59 AE 00 05 00 00 00 0A 00 05 00 00 00 0A 00 05 00 00 00 09 00 05 00 00 00 64 00 05 00 00 00 64 00 05 00 00 00 64 00 05 00 00 00 64 00 05 00 00 13 88 00 05 00 00 00 2C 00 05 00 00 00 0F E0 7E 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.676  Sent   7E A0 07 03 21 F1 1B 41 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.829  Received7E A8 4B 21 03 FE 4F C4 00 05 00 00 00 0E 00 05 00 00 00 0D 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 77 88 00 05 00 00 79 18 C9 57 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.829  Sent   7E A0 07 03 21 11 15 A6 7E
2026-09-11 10:27:17 trce: IoTnxt.Platform.Drivers.Protocol.Dlms.Client.DlmsClient[0] Media Trace: 10:27:17.904  Received7E A0 27 21 03 F0 C1 79 00 05 00 00 79 18 00 06 00 00 01 22 00 06 00 00 00 FB 00 06 00 00 00 FC 00 06 00 00 01 25 10 81 7E

The decoded messages (using GXDLMSDirector's DLMS Translator tool):

13: 7E A8 47 03 21 BA 5B F1 E6 E6 00 05 23 02 FF 08 02 08 30 02 87 F0 02 2B C8 02 24 E8 02 25 90 02 94 58 02 94 F0 02 95 88 02 96 20 02 96 B8 02 97 50 02 9E 70 02 9F 08 02 9F A0 02 9D D8 02 98 80 02 99 18 02 B5 98 BD 0B 7E
<HDLC len="46" >
<TargetAddress Value="1" />
<SourceAddress Value="10" />
<FrameType Value="BA" />
<NextFrame Value="052302FF080208300287F0022BC80224E80225900294580294F00295880296200296B8029750029E70029F08029FA0029DD802988002991802B598" />
</HDLC>
14: 7E A0 07 21 03 D1 19 C6 7E
<HDLC len="9" >
<TargetAddress Value="10" />
<SourceAddress Value="1" />
<!-- S frame. -->
<FrameType Value="D1" />
<Command Value="NextFrame" />
</HDLC>
15: 7E A0 39 03 21 BC 4A 3A 02 B6 30 02 B6 C8 02 B7 60 02 B7 F8 02 B8 90 02 99 B0 02 9A 48 02 9A E0 02 9B 78 02 9C 10 02 9C A8 02 9D 40 02 89 F8 02 8A 60 02 8A C8 02 8B 30 87 88 7E
<HDLC len="38" >
<TargetAddress Value="1" />
<SourceAddress Value="10" />
<FrameType Value="BC" />
<NextFrame Value="02B63002B6C802B76002B7F802B8900299B0029A48029AE0029B78029C10029CA8029D400289F8028A60028AC8028B30" />
</HDLC>
16: 7E A8 4C 21 03 FA 4A D5 E6 E7 00 0C 23 00 0A 03 42 33 32 00 11 3F 00 06 00 41 57 37 00 09 0C 07 EA 09 0B 05 0A 1B 13 FF 80 00 00 00 14 00 00 00 00 07 8B 61 41 00 14 00 00 00 00 08 6F 55 F1 00 05 00 00 59 AA 00 05 00 00 59 A8 EF A9 7E
<HDLC len="4B" >
<TargetAddress Value="10" />
<SourceAddress Value="1" />
<FrameType Value="FA" />
<NextFrame Value="0C23000A0342333200113F00060041573700090C07EA090B050A1B13FF800000001400000000078B6141001400000000086F55F10005000059AA0005000059A8" />
</HDLC>
17: 7E A0 07 03 21 D1 19 60 7E
<HDLC len="9" >
<TargetAddress Value="1" />
<SourceAddress Value="10" />
<!-- S frame. -->
<FrameType Value="D1" />
<Command Value="NextFrame" />
</HDLC>
18: 7E A8 4B 21 03 FC 5D E7 00 05 00 00 59 AE 00 05 00 00 00 0A 00 05 00 00 00 0A 00 05 00 00 00 09 00 05 00 00 00 64 00 05 00 00 00 64 00 05 00 00 00 64 00 05 00 00 00 64 00 05 00 00 13 88 00 05 00 00 00 2C 00 05 00 00 00 0F E0 7E 7E
<HDLC len="4A" >
<TargetAddress Value="10" />
<SourceAddress Value="1" />
<FrameType Value="FC" />
<NextFrame Value="0005000059AE00050000000A00050000000A00050000000900050000006400050000006400050000006400050000006400050000138800050000002C00050000000F" />
</HDLC>
19: 7E A0 07 03 21 F1 1B 41 7E
<HDLC len="9" >
<TargetAddress Value="1" />
<SourceAddress Value="10" />
<!-- S frame. -->
<FrameType Value="F1" />
<Command Value="NextFrame" />
</HDLC>
20: 7E A8 4B 21 03 FE 4F C4 00 05 00 00 00 0E 00 05 00 00 00 0D 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 00 00 00 05 00 00 77 88 00 05 00 00 79 18 C9 57 7E
<HDLC len="4A" >
<TargetAddress Value="10" />
<SourceAddress Value="1" />
<FrameType Value="FE" />
<NextFrame Value="00050000000E00050000000D000500000000000500000000000500000000000500000000000500000000000500000000000500000000000500007788000500007918" />
</HDLC>
21: 7E A0 07 03 21 11 15 A6 7E
<HDLC len="9" >
<TargetAddress Value="1" />
<SourceAddress Value="10" />
<!-- S frame. -->
<FrameType Value="11" />
<Command Value="NextFrame" />
</HDLC>
22: 7E A0 27 21 03 F0 C1 79 00 05 00 00 79 18 00 06 00 00 01 22 00 06 00 00 00 FB 00 06 00 00 00 FC 00 06 00 00 01 25 10 81 7E
<HDLC len="26" >
<TargetAddress Value="10" />
<SourceAddress Value="1" />
<FrameType Value="F0" />
<NextFrame Value="0005000079180006000001220006000000FB0006000000FC000600000125" />
</HDLC>

The decoded multiple register read request (assembled from message 13 and 15):

<ReadRequest Qty="23" >
  <VariableName Value="FF08" />
  <VariableName Value="0830" />
  <VariableName Value="87F0" />
  <VariableName Value="2BC8" />
  <VariableName Value="24E8" />
  <VariableName Value="2590" />
  <VariableName Value="9458" />
  <VariableName Value="94F0" />
  <VariableName Value="9588" />
  <VariableName Value="9620" />
  <VariableName Value="96B8" />
  <VariableName Value="9750" />
  <VariableName Value="9E70" />
  <VariableName Value="9F08" />
  <VariableName Value="9FA0" />
  <VariableName Value="9DD8" />
  <VariableName Value="9880" />
  <VariableName Value="9918" />
  <VariableName Value="B598" />
  <VariableName Value="B630" />
  <VariableName Value="B6C8" />
  <VariableName Value="B760" />
  <VariableName Value="B7F8" />
  <VariableName Value="B890" />
  <VariableName Value="99B0" />
  <VariableName Value="9A48" />
  <VariableName Value="9AE0" />
  <VariableName Value="9B78" />
  <VariableName Value="9C10" />
  <VariableName Value="9CA8" />
  <VariableName Value="9D40" />
  <VariableName Value="89F8" />
  <VariableName Value="8A60" />
  <VariableName Value="8AC8" />
  <VariableName Value="8B30" />
</ReadRequest>

The decoded response (assembled from messages 16, 18, 20 and 22):

<ReadResponse Qty="23" >
  <Data>
    <String Value="B32" />
  </Data>
  <Data>
    <UInt8 Value="3F" />
  </Data>
  <Data>
    <UInt32 Value="00415737" />
  </Data>
  <Data>
    <!-- 2026/09/11 10:27:19 -->
    <OctetString Value="07EA090B050A1B13FF800000" />
  </Data>
  <Data>
    <Int64 Value="00000000078B6141" />
  </Data>
  <Data>
    <Int64 Value="00000000086F55F1" />
  </Data>
  <Data>
    <Int32 Value="000059AA" />
  </Data>
  <Data>
    <Int32 Value="000059A8" />
  </Data>
  <Data>
    <Int32 Value="000059AE" />
  </Data>
  <Data>
    <Int32 Value="0000000A" />
  </Data>
  <Data>
    <Int32 Value="0000000A" />
  </Data>
  <Data>
    <Int32 Value="00000009" />
  </Data>
  <Data>
    <Int32 Value="00000064" />
  </Data>
  <Data>
    <Int32 Value="00000064" />
  </Data>
  <Data>
    <Int32 Value="00000064" />
  </Data>
  <Data>
    <Int32 Value="00000064" />
  </Data>
  <Data>
    <Int32 Value="00001388" />
  </Data>
  <Data>
    <Int32 Value="0000002C" />
  </Data>
  <Data>
    <Int32 Value="0000000F" />
  </Data>
  <Data>
    <Int32 Value="0000000E" />
  </Data>
  <Data>
    <Int32 Value="0000000D" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00000000" />
  </Data>
  <Data>
    <Int32 Value="00007788" />
  </Data>
  <Data>
    <Int32 Value="00007918" />
  </Data>
  <Data>
    <Int32 Value="00007918" />
  </Data>
  <Data>
    <UInt32 Value="00000122" />
  </Data>
  <Data>
    <UInt32 Value="000000FB" />
  </Data>
  <Data>
    <UInt32 Value="000000FC" />
  </Data>
  <Data>
    <UInt32 Value="00000125" />
  </Data>
</ReadResponse>

Let me know if you need more information.

  • Log in or register to post comments
  • 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

  • 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)
  • Reading PushSetupObject attr 10 error
More
RSS feed
Privacy FAQ GXDN Issues Contact
Follow Gurux on Twitter Follow Gurux on Linkedin