The only difference is in the content. GXDLMSDirector sets hundreds to 0xFF. That means ignore. Kalki sets them to zero. You told earlier in this topic that you can write: *-*-* 00:00:00, so I don't believe that is the issue here.
Now you write with GXDLMSDirector:
*-*-* *:15:00, *-*-* *:30:00 and *-*-* *:45:00
With Kalki tool you write:
*-*-* *:00:00, *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00, *-*-* 0:00:00 and *-*-* 0:00:00.
Try to write the same values.
You can also try to write the *-*-* 00:00:00 as the first value with GXDLMSDirector.
I have set values and read the same using Director. Please check ( Last entry in structure) the following parsing from Director.
Can you please provide suggestion?
The only difference now is that you write five entries with the Kalki tool you write six entries. Try to add extra *-*-* 0:00:00.
Then the entries are the same.
When I am trying to write *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00 into meter from GXDLMSDirector,
It is successfully written, but when read the same, got *-*-* 00:00:00 for all 3 entries.
If I write *-*-* 00:00:00, then it is successfully written.
GXDateTime dt = new GXDateTime("*-*-* *:15:00");
gXDateTime.Skip &= ~DateTimeSkips.Ms;
Modifying the date-time parser will take a long time. Testing all different localizations will take so much time, that it's easier if you can use the source code above.
Hi Bhaumik,
Hi Bhaumik,
Can you add 15 min hex trace from Kalki and GXDLMSDirector so I can compare them?
BR,
Mikko
Hi Mikko,
Hi Mikko,
Please find the data from the Kalki tool.
C1 01 C1 00 16 00 00 0F 00 04 FF 04 00 01 06 02 02 09 04 FF 00 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 0F 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 00 09 05 FF FF FF FF FF 02 02 09 04 00 00 00 00 09 05 00 00 00 00 00 02 02 09 04 00 00 00 00 09 05 00 00 00 00 00
<SetRequest>
<SetRequestNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<AttributeDescriptor>
# ActionSchedule
<ClassId Value="0016" />
# 0.0.15.0.4.255
<InstanceId Value="00000F0004FF" />
# Execution Time
<AttributeId Value="04" />
</AttributeDescriptor>
<Value>
<Array Qty="06" >
<Structure Qty="02" >
# *:00:00
<OctetString Value="FF000000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# 00:00:00
<OctetString Value="00000000" />
# *-*-*
<OctetString Value="0000000000" />
</Structure>
<Structure Qty="02" >
# 00:00:00
<OctetString Value="00000000" />
# *-*-*
<OctetString Value="0000000000" />
</Structure>
</Array>
</Value>
</SetRequestNormal>
</SetRequest>
------------------------------------------------
Following are the data from GXDLMSDirector
<!-- Decrypt data: C1 01 C1 00 16 00 00 0F 00 04 FF 04 00 01 03 02 02 09 04 FF 0F 00 FF 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 FF 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 FF 09 05 FF FF FF FF FF
<SetRequest>
<SetRequestNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<AttributeDescriptor>
# ActionSchedule
<ClassId Value="0016" />
# 0.0.15.0.4.255
<InstanceId Value="00000F0004FF" />
# Execution Time
<AttributeId Value="04" />
</AttributeDescriptor>
<Value>
<Array Qty="03" >
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F00FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E00FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D00FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
</Array>
</Value>
</SetRequestNormal>
</SetRequest>
Regards
Bhaumik
Hi Bhaumik,
Hi Bhaumik,
The only difference is in the content. GXDLMSDirector sets hundreds to 0xFF. That means ignore. Kalki sets them to zero. You told earlier in this topic that you can write: *-*-* 00:00:00, so I don't believe that is the issue here.
Now you write with GXDLMSDirector:
*-*-* *:15:00, *-*-* *:30:00 and *-*-* *:45:00
With Kalki tool you write:
*-*-* *:00:00, *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00, *-*-* 0:00:00 and *-*-* 0:00:00.
Try to write the same values.
You can also try to write the *-*-* 00:00:00 as the first value with GXDLMSDirector.
BR,
Mikko
Hi Mikko,
Hi Mikko,
I have set values and read the same using Director. Please check ( Last entry in structure) the following parsing from Director.
Can you please provide suggestion?
===========Set
14:55:20
<HDLC len="78" >
<TargetAddress Value="1" />
<SourceAddress Value="30" />
<FrameType Value="DC" />
<PDU>
<!-- Invocation Counter: 1500084457 -->
<!-- Decrypt data: C1 01 C1 00 16 00 00 0F 00 04 FF 04 00 01 05 02 02 09 04 FF 00 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 0F 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 32 00 FF 09 05 FF FF FF FF FF
<SetRequest>
<SetRequestNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<AttributeDescriptor>
# ActionSchedule
<ClassId Value="0016" />
# 0.0.15.0.4.255
<InstanceId Value="00000F0004FF" />
# Execution Time
<AttributeId Value="04" />
</AttributeDescriptor>
<Value>
<Array Qty="05" >
<Structure Qty="02" >
# *:00:00
<OctetString Value="FF000000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:50:00
<OctetString Value="FF3200FF" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
</Array>
</Value>
</SetRequestNormal>
</SetRequest>
-->
</PDU>
</HDLC>
===============Read
14:55:20
<HDLC len="6F" >
<TargetAddress Value="30" />
<SourceAddress Value="1" />
<FrameType Value="1E" />
<PDU>
<!-- Invocation Counter: 177 -->
<!-- Decrypt data: C4 01 C1 00 01 05 02 02 09 04 FF 00 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 0F 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 1E 00 00 09 05 FF FF FF FF FF 02 02 09 04 FF 2D 00 00 09 05 FF FF FF FF FF 02 02 09 04 00 00 00 00 09 05 00 00 00 00 00
<GetResponse>
<GetResponseNormal>
# Priority: High, ServiceClass: Confirmed, Invoke ID: 1
<InvokeIdAndPriority Value="C1" />
<Result>
<Data>
<Array Qty="05" >
<Structure Qty="02" >
# *:00:00
<OctetString Value="FF000000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:15:00
<OctetString Value="FF0F0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:30:00
<OctetString Value="FF1E0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# *:45:00
<OctetString Value="FF2D0000" />
# *-*-*
<OctetString Value="FFFFFFFFFF" />
</Structure>
<Structure Qty="02" >
# 00:00:00
<OctetString Value="00000000" />
# *-*-*
<OctetString Value="0000000000" />
</Structure>
</Array>
</Data>
</Result>
</GetResponseNormal>
</GetResponse>
-->
</PDU>
</HDLC>
Hi Mikko,
Hi Mikko,
Is there any way to convert FF into 00?
Regards
Bhaumik
Hi Bhaumik,
Hi Bhaumik,
The only difference now is that you write five entries with the Kalki tool you write six entries. Try to add extra *-*-* 0:00:00.
Then the entries are the same.
*-*-* *:00:00, *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00, *-*-* 0:00:00 and *-*-* 0:00:00.
You can convert FF to 00 if you replace asterisks with zero.
BR,
Mikko
Hi Mikko,
Hi Mikko,
When I am trying to write *-*-* *:15:00, *-*-* *:30:00, *-*-* *:45:00 into meter from GXDLMSDirector,
It is successfully written, but when read the same, got *-*-* 00:00:00 for all 3 entries.
If I write *-*-* 00:00:00, then it is successfully written.
Hi,
Hi,
You need to ask if there is a firmware update available for the meter. I hope it will solve your problem.
BR,
Mikko
Hi Mikko,
Hi Mikko,
As per your comments, there should be no issue with the FF value.
One meter manufacturer works well with GXDLMSDirector as well as Kalki, whereas another manufacturer
works only with Kalki.
Can you make a change in the library to sets hundreds to either 0xFF or 0x00?
So we can have support for both formats in Gurux Library.
Or is there any way to set that 0x00?
Thanks
Bhaumik
Hi Bhaumik,
Hi Bhaumik,
You can do it like this:
GXDateTime dt = new GXDateTime("*-*-* *:15:00");
gXDateTime.Skip &= ~DateTimeSkips.Ms;
Modifying the date-time parser will take a long time. Testing all different localizations will take so much time, that it's easier if you can use the source code above.
BR,
Mikko