py_ext/py_ext.py
author Edouard Tisserant
Fri, 26 Jul 2013 14:04:29 +0900
changeset 1279 0eb9f8af479f
parent 1132 28f96aa9c070
child 1511 91538d0c242c
permissions -rw-r--r--
Added 'dlopen_prefix' class attributes to targets, in order to handle dlopen of shared object passed to runtime as extra file, and then in PWD (was working with windows only)
import os
from POULibrary import POULibrary
from PythonFileCTNMixin import PythonFileCTNMixin

class PythonLibrary(POULibrary):
    def GetLibraryPath(self):
        return os.path.join(os.path.split(__file__)[0], "pous.xml") 

    def Generate_C(self, buildpath, varlist, IECCFLAGS):
        
        plc_python_filepath = os.path.join(
            os.path.split(__file__)[0], "plc_python.c")
        plc_python_file = open(plc_python_filepath, 'r')
        plc_python_code = plc_python_file.read()
        plc_python_file.close()
        python_eval_fb_list = []
        for v in varlist:
            if v["vartype"] == "FB" and v["type"] in ["PYTHON_EVAL",
                                                      "PYTHON_POLL"]:
                python_eval_fb_list.append(v)
        python_eval_fb_count = max(1, len(python_eval_fb_list))
        
        # prepare python code
        plc_python_code = plc_python_code % {
            "python_eval_fb_count": python_eval_fb_count }
        
        Gen_Pythonfile_path = os.path.join(buildpath, "py_ext.c")
        pythonfile = open(Gen_Pythonfile_path,'w')
        pythonfile.write(plc_python_code)
        pythonfile.close()
        
        return (["py_ext"], [(Gen_Pythonfile_path, IECCFLAGS)], True), ""

class PythonFile(PythonFileCTNMixin):
    
    def GetIconName(self):
        return "Pyfile"