diff --git a/Code/Arduino/HanReader/HanReader.vcxitems.filters b/Code/Arduino/HanReader/HanReader.vcxitems.filters
index 16a3ef5a..53bf2bff 100644
--- a/Code/Arduino/HanReader/HanReader.vcxitems.filters
+++ b/Code/Arduino/HanReader/HanReader.vcxitems.filters
@@ -11,13 +11,13 @@
-
+
Source Files
-
+
Source Files
-
+
Source Files
@@ -27,19 +27,19 @@
-
+
Header Files
-
+
Header Files
-
+
Header Files
-
+
Header Files
-
+
Header Files
diff --git a/Code/Arduino/HanReader/src/HanReader.cpp b/Code/Arduino/HanReader/src/HanReader.cpp
index 02993f11..298f984f 100644
--- a/Code/Arduino/HanReader/src/HanReader.cpp
+++ b/Code/Arduino/HanReader/src/HanReader.cpp
@@ -35,11 +35,56 @@ bool HanReader::read(byte data)
if (reader.Read(data))
{
bytesRead = reader.GetRawData(buffer, 0, 512);
- listSize = getInt(1, buffer, 0, bytesRead);
+ if (debug)
+ {
+ debug->print("Got valid DLMS data (");
+ debug->print(bytesRead);
+ debug->println(" bytes):");
+ debugPrint(buffer, 0, bytesRead);
+ }
+
+ /*
+ Data should start with E6 E7 00 0F
+ and continue with four bytes for the InvokeId
+ */
+ if (bytesRead < 9)
+ {
+ if (debug) debug->println("Invalid HAN data: Less than 9 bytes received");
+ return false;
+ }
+ else if (
+ buffer[0] != 0xE6 ||
+ buffer[1] != 0xE7 ||
+ buffer[2] != 0x00 ||
+ buffer[3] != 0x0F
+ )
+ {
+ if (debug) debug->println("Invalid HAN data: Start should be E6 E7 00 0F");
+ return false;
+ }
+
+ if (debug) debug->println("HAN data is valid");
+ listSize = getInt(0, buffer, 0, bytesRead);
return true;
}
}
+void HanReader::debugPrint(byte *buffer, int start, int length)
+{
+ for (int i = start; i < start + length; i++)
+ {
+ if (buffer[i] < 0x10)
+ debug->print("0");
+ debug->print(buffer[i], HEX);
+ debug->print(" ");
+ if ((i - start + 1) % 16 == 0)
+ debug->println("");
+ else if ((i - start + 1) % 4 == 0)
+ debug->print(" ");
+ }
+ debug->println("");
+}
+
bool HanReader::read()
{
if (han->available())
@@ -57,7 +102,10 @@ int HanReader::getListSize()
time_t HanReader::getPackageTime()
{
- return getTime(0);
+ int packageTimePosition = dataHeader
+ + (compensateFor09HeaderBug ? 1 : 0);
+
+ return getTime(buffer, packageTimePosition, bytesRead);
}
time_t HanReader::getTime(int objectId)
@@ -78,7 +126,12 @@ String HanReader::getString(int objectId)
int HanReader::findValuePosition(int dataPosition, byte *buffer, int start, int length)
{
- for (int i = start + dataHeader; iLevel3
Disabled
true
- $(ProjectDir)..\KamstrupTest;$(ProjectDir)..\HanReader\src;$(ProjectDir)..\..\..\..\..\..\..\..\..\Program Files (x86)\Arduino\libraries;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries;$(ProjectDir)..\..\..\..\..\..\..\Google Drive\Private\Elektronikk\Arduino\libraries;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\libb64;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\spiffs;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\umm_malloc;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\variants\generic;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\lwip\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\xtensa-lx106-elf;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\lib\gcc\xtensa-lx106-elf\4.8.2\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\include;%(AdditionalIncludeDirectories)
+ $(ProjectDir)..\KamstrupTest;$(ProjectDir)..\HanReader\src;$(ProjectDir)..\..\..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\53ggn0bh.0i3\Micro Platforms\visualmicro\ide\libraries;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries;$(ProjectDir)..\..\..\..\..\Arduino\libraries;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\libb64;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\spiffs;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266\umm_malloc;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\variants\generic;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\lwip\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\xtensa-lx106-elf;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\lib\gcc\xtensa-lx106-elf\4.8.2\include;$(ProjectDir)..\..\..\..\..\..\..\AppData\Local\arduino15\packages\esp8266\hardware\esp8266\2.3.0\tools\sdk\include;%(AdditionalIncludeDirectories)
$(ProjectDir)__vm\.KamstrupTest.vsarduino.h;%(ForcedIncludeFiles)
false
- __ESP8266_ESp8266__;__ESP8266_ESP8266__;__ets__;ICACHE_FLASH;F_CPU=80000000L;LWIP_OPEN_SRC;ARDUINO=106012;ARDUINO_ESP8266_ESP01;ARDUINO_ARCH_ESP8266;ESP8266;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions)
+ __ESP8266_ESp8266__;__ESP8266_ESP8266__;_VMDEBUG=1;__ets__;ICACHE_FLASH;F_CPU=80000000L;LWIP_OPEN_SRC;ARDUINO=10801;ARDUINO_ESP8266_ESP01;ARDUINO_ARCH_ESP8266;ESP8266;__cplusplus=201103L;_VMICRO_INTELLISENSE;%(PreprocessorDefinitions)
true