@@ -93,21 +93,32 @@ def update_md_from_point(md, point, trace=None):
9393 (value , scaler ) = md_value_and_scaler_for_point (point )
9494
9595 data = None
96+ trace_data_slicer = None
9697
9798 if type_ in _MD_UNSIGNED_TYPES :
9899 data = data_for_scaled_uint32 (md , value , scaler , dlms_unit )
100+ trace_data_slicer = lambda s : [s [:4 ], s [4 :5 ], s [5 :]]
99101 elif type_ in _MD_SIGNED_TYPES :
100102 data = data_for_scaled_int32 (md , value , scaler , dlms_unit )
103+ trace_data_slicer = lambda s : [s [:4 ], s [4 :5 ], s [5 :]]
101104 elif type_ == suns .SUNS_TYPE_STRING :
102105 data = data_for_string (md , value )
106+ trace_data_slicer = lambda s : [s [:4 ], s [4 :]]
103107 else :
104108 raise TypeError ('Unsupported point type \' {}\' .' .format (type_ ))
105109
106110 md .update (data )
107111
108112 if trace :
113+ # Render trace data separated by spaces to improve readability if
114+ # slicing has been provided.
115+ if trace_data_slicer :
116+ rendered = ' ' .join (map (lambda x : x .hex (), trace_data_slicer (data )))
117+ else :
118+ rendered = data .hex ()
119+
109120 trace ('{}:\n value: {}\n data: {}\n ' .format (point .point_type .id ,
110- fmt .format_point_value (point ), data . hex () ))
121+ fmt .format_point_value (point ), rendered ))
111122
112123
113124def data_for_scaled_int32 (md , value , scaler , unit ):
0 commit comments