equal
deleted
inserted
replaced
32 from _ctypes import FreeLibrary as dlclose |
32 from _ctypes import FreeLibrary as dlclose |
33 elif os.name == "posix": |
33 elif os.name == "posix": |
34 from _ctypes import dlopen, dlclose |
34 from _ctypes import dlopen, dlclose |
35 |
35 |
36 import traceback |
36 import traceback |
|
37 def get_last_traceback(tb): |
|
38 while tb.tb_next: |
|
39 tb = tb.tb_next |
|
40 return tb |
37 |
41 |
38 lib_ext ={ |
42 lib_ext ={ |
39 "linux2":".so", |
43 "linux2":".so", |
40 "win32":".dll", |
44 "win32":".dll", |
41 }.get(sys.platform, "") |
45 }.get(sys.platform, "") |
387 return self.PLCStatus, tick.value, res |
391 return self.PLCStatus, tick.value, res |
388 #elif size.value: |
392 #elif size.value: |
389 #PLCprint("Debug error - wrong buffer unpack ! %d != %d"%(offset, size.value)) |
393 #PLCprint("Debug error - wrong buffer unpack ! %d != %d"%(offset, size.value)) |
390 return self.PLCStatus, None, [] |
394 return self.PLCStatus, None, [] |
391 |
395 |
|
396 def RemoteExec(self, script, **kwargs): |
|
397 try: |
|
398 exec script in kwargs |
|
399 except: |
|
400 e_type, e_value, e_traceback = sys.exc_info() |
|
401 line_no = traceback.tb_lineno(get_last_traceback(e_traceback)) |
|
402 return (-1, "RemoteExec script failed!\n\nLine %d: %s\n\t%s" % |
|
403 (line_no, e_value, script.splitlines()[line_no - 1])) |
|
404 return (0, kwargs.get("returnVal", None)) |
|
405 |
|
406 |