beremiz

492e2cd6157e
fix problem when Beremiz is running without matiec installed

set matiec settings only once on first use of ProjectController class and give
user-friendly message on compilation about missing matiec
installation.


Traceback (most recent call last):
File "Beremiz.py", line 197, in
beremiz.Start()
File "Beremiz.py", line 192, in Start
self.CreateApplication()
File "Beremiz.py", line 130, in CreateApplication
self.BackgroundInitialization()
File "Beremiz.py", line 137, in BackgroundInitialization
self.ImportModules()
File "Beremiz.py", line 176, in ImportModules
import BeremizIDE
File
"BeremizIDE.py", line 76, in
from ProjectController import ProjectController, GetAddMenuItems,
MATIEC_ERROR_MODEL, ITEM_CONFNODE
File
"ProjectController.py", line 177, in
iec2c_cfg = Iec2CSettings()
File
"ProjectController.py", line 101, in __init__
self.ieclib_c_path = self.findLibCPath()
File
"ProjectController.py", line 135, in findLibCPath
os.path.join(self.ieclib_path, "C"),
File "/usr/lib/python2.7/posixpath.py", line 70, in join
elif path == '' or path.endswith('/'):
AttributeError: 'NoneType' object has no attribute 'endswith'
<?xml version='1.0' encoding='utf-8'?>
<PyFile xmlns:xhtml="http://www.w3.org/1999/xhtml">
<variables>
<variable name="Test_Python_Var" type="INT" initial="4"/>
<variable name="Second_Python_Var" type="INT" initial="5"/>
</variables>
<globals>
<xhtml:p><![CDATA[
import time,sys,ctypes
Python_to_C_Call = PLCBinary.Python_to_C_Call
Python_to_C_Call.restype = ctypes.c_int
Python_to_C_Call.argtypes = [ctypes.c_int, ctypes.POINTER(ctypes.c_int)]
def MyPythonFunc(arg):
i = ctypes.c_int()
if(Python_to_C_Call(arg, i)):
res = i.value
print "toC:", arg, "from C:", res, "FBID:", FBID
else:
print "Failed Python_to_C_Call failed"
res = None
print "Python read PLC global :",PLCGlobals.Test_Python_Var
PLCGlobals.Second_Python_Var = 789
sys.stdout.flush()
return res
async_error_test_code = """
def badaboom():
tuple()[0]
import wx
def badaboomwx():
wx.CallAfter(badaboom)
from threading import Timer
a = Timer(3, badaboom)
a.start()
b = Timer(6, badaboomwx)
b.start()
"""
]]></xhtml:p>
</globals>
<init>
<xhtml:p><![CDATA[
global x, y
x = 2
y = 5
print "py_runtime init:", x, ",", y
]]></xhtml:p>
</init>
<cleanup>
<xhtml:p><![CDATA[
print "py_runtime cleanup"
]]></xhtml:p>
</cleanup>
<start>
<xhtml:p><![CDATA[
global x, y
print "py_runtime start", x * x + y * y
]]></xhtml:p>
</start>
<stop>
<xhtml:p><![CDATA[
print "py_runtime stop"
]]></xhtml:p>
</stop>
</PyFile>