53 def _ttime(): return (IEC_TIME, |
53 def _ttime(): return (IEC_TIME, |
54 lambda x:td(0, x.s, x.ns/1000), |
54 lambda x:td(0, x.s, x.ns/1000), |
55 lambda t,x:t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000)) |
55 lambda t,x:t(x.days * 24 * 3600 + x.seconds, x.microseconds*1000)) |
56 |
56 |
57 SameEndianessTypeTranslator = { |
57 SameEndianessTypeTranslator = { |
58 "BOOL" : _t(c_uint8, lambda x:x.value!=0), |
58 "BOOL": _t(c_uint8, lambda x:x.value!=0), |
59 "STEP" : _t(c_uint8), |
59 "STEP": _t(c_uint8), |
60 "TRANSITION" : _t(c_uint8), |
60 "TRANSITION": _t(c_uint8), |
61 "ACTION" : _t(c_uint8), |
61 "ACTION": _t(c_uint8), |
62 "SINT" : _t(c_int8), |
62 "SINT": _t(c_int8), |
63 "USINT" : _t(c_uint8), |
63 "USINT": _t(c_uint8), |
64 "BYTE" : _t(c_uint8), |
64 "BYTE": _t(c_uint8), |
65 "STRING" : (IEC_STRING, |
65 "STRING": (IEC_STRING, |
66 lambda x:x.body[:x.len], |
66 lambda x:x.body[:x.len], |
67 lambda t,x:t(len(x),x)), |
67 lambda t,x:t(len(x),x)), |
68 "INT" : _t(c_int16), |
68 "INT": _t(c_int16), |
69 "UINT" : _t(c_uint16), |
69 "UINT": _t(c_uint16), |
70 "WORD" : _t(c_uint16), |
70 "WORD": _t(c_uint16), |
71 "DINT" : _t(c_int32), |
71 "DINT": _t(c_int32), |
72 "UDINT" : _t(c_uint32), |
72 "UDINT": _t(c_uint32), |
73 "DWORD" : _t(c_uint32), |
73 "DWORD": _t(c_uint32), |
74 "LINT" : _t(c_int64), |
74 "LINT": _t(c_int64), |
75 "ULINT" : _t(c_uint64), |
75 "ULINT": _t(c_uint64), |
76 "LWORD" : _t(c_uint64), |
76 "LWORD": _t(c_uint64), |
77 "REAL" : _t(c_float), |
77 "REAL": _t(c_float), |
78 "LREAL" : _t(c_double), |
78 "LREAL": _t(c_double), |
79 "TIME" : _ttime(), |
79 "TIME": _ttime(), |
80 "TOD" : _ttime(), |
80 "TOD": _ttime(), |
81 "DATE" : _ttime(), |
81 "DATE": _ttime(), |
82 "DT" : _ttime(), |
82 "DT": _ttime(), |
83 } |
83 } |
84 |
84 |
85 SwapedEndianessTypeTranslator = { |
85 SwapedEndianessTypeTranslator = { |
86 # TODO |
86 # TODO |
87 } |
87 } |