121 tv_sec = ctypes.c_uint32() |
121 tv_sec = ctypes.c_uint32() |
122 tv_nsec = ctypes.c_uint32() |
122 tv_nsec = ctypes.c_uint32() |
123 if self._GetLogMessage is not None: |
123 if self._GetLogMessage is not None: |
124 maxsz = len(self._log_read_buffer)-1 |
124 maxsz = len(self._log_read_buffer)-1 |
125 sz = self._GetLogMessage(level, msgid, |
125 sz = self._GetLogMessage(level, msgid, |
126 self._log_read_buffer, maxsz, |
126 self._log_read_buffer, maxsz, |
127 ctypes.byref(tick), |
127 ctypes.byref(tick), |
128 ctypes.byref(tv_sec), |
128 ctypes.byref(tv_sec), |
129 ctypes.byref(tv_nsec)) |
129 ctypes.byref(tv_nsec)) |
130 if sz and sz <= maxsz: |
130 if sz and sz <= maxsz: |
131 self._log_read_buffer[sz] = '\x00' |
131 self._log_read_buffer[sz] = '\x00' |
132 return self._log_read_buffer.value, tick.value, tv_sec.value, tv_nsec.value |
132 return self._log_read_buffer.value, tick.value, tv_sec.value, tv_nsec.value |
133 elif self._loading_error is not None and level == 0: |
133 elif self._loading_error is not None and level == 0: |
134 return self._loading_error, 0, 0, 0 |
134 return self._loading_error, 0, 0, 0 |
347 AST = compile(cmd, '<plc>', 'eval') |
347 AST = compile(cmd, '<plc>', 'eval') |
348 compile_cache[FBID] = (cmd, AST) |
348 compile_cache[FBID] = (cmd, AST) |
349 result, exp = self.evaluator(eval, AST, self.python_runtime_vars) |
349 result, exp = self.evaluator(eval, AST, self.python_runtime_vars) |
350 if exp is not None: |
350 if exp is not None: |
351 res = "#EXCEPTION : "+str(exp[1]) |
351 res = "#EXCEPTION : "+str(exp[1]) |
352 self.LogMessage(1, ('PyEval@0x%x(Code="%s") Exception "%s"') % (FBID, cmd, |
352 self.LogMessage(1, ('PyEval@0x%x(Code="%s") Exception "%s"') % ( |
353 '\n'.join(traceback.format_exception(*exp)))) |
353 FBID, cmd, '\n'.join(traceback.format_exception(*exp)))) |
354 else: |
354 else: |
355 res = str(result) |
355 res = str(result) |
356 self.python_runtime_vars["FBID"] = None |
356 self.python_runtime_vars["FBID"] = None |
357 except Exception, e: |
357 except Exception, e: |
358 res = "#EXCEPTION : "+str(e) |
358 res = "#EXCEPTION : "+str(e) |