runtime/PLCObject.py
changeset 699 6ff64cadb1ff
parent 690 ef60d7e188e6
child 717 1c23952dbde1
--- a/runtime/PLCObject.py	Mon Mar 05 12:02:20 2012 +0100
+++ b/runtime/PLCObject.py	Sun Mar 11 19:42:14 2012 +0100
@@ -34,6 +34,10 @@
     from _ctypes import dlopen, dlclose
 
 import traceback
+def get_last_traceback(tb):
+    while tb.tb_next:
+        tb = tb.tb_next
+    return tb
 
 lib_ext ={
      "linux2":".so",
@@ -389,3 +393,14 @@
                 #PLCprint("Debug error - wrong buffer unpack ! %d != %d"%(offset, size.value))
         return self.PLCStatus, None, []
 
+    def RemoteExec(self, script, **kwargs):
+        try:
+            exec script in kwargs
+        except:
+            e_type, e_value, e_traceback = sys.exc_info()
+            line_no = traceback.tb_lineno(get_last_traceback(e_traceback))
+            return (-1, "RemoteExec script failed!\n\nLine %d: %s\n\t%s" % 
+                        (line_no, e_value, script.splitlines()[line_no - 1]))
+        return (0, kwargs.get("returnVal", None))
+    
+