Optimzed tracing of STRING type variables value. Now, only used size is transfered in debug buffer.
--- a/runtime/PLCObject.py Fri Apr 26 23:08:41 2013 +0900
+++ b/runtime/PLCObject.py Sun Apr 28 17:26:22 2013 +0900
@@ -471,7 +471,7 @@
res.append(unpack_func(
ctypes.cast(cursor,
ctypes.POINTER(c_type)).contents))
- offset += ctypes.sizeof(c_type)
+ offset += ctypes.sizeof(c_type) if iectype != "STRING" else len(res[-1])+1
else:
if c_type is None:
PLCprint("Debug error - " + iectype +
--- a/targets/plc_debug.c Fri Apr 26 23:08:41 2013 +0900
+++ b/targets/plc_debug.c Sun Apr 28 17:26:22 2013 +0900
@@ -152,6 +152,10 @@
/* compute next cursor positon.
No need to check overflow, as BUFFER_SIZE
is computed large enough */
+ if(vartype == STRING_ENUM){
+ /* optimization for strings */
+ size = ((STRING*)visible_value_p)->len + 1;
+ }
char* next_cursor = buffer_cursor + size;
/* copy data to the buffer */
memcpy(buffer_cursor, visible_value_p, size);