tests/python/python@py_ext/pyfile.xml
author Edouard Tisserant <edouard.tisserant@gmail.com>
Thu, 10 Dec 2020 11:37:27 +0100
changeset 2697 93333d206198
parent 2680 6bfed6757495
permissions -rw-r--r--
Python Safe Globals now have more reliable triggering of OnChange call. Added "Onchange" object to accessible runtime variables that let user python code see count of changes and first and last values.
<?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
    print "Python read PLC global Grumpf :",PLCGlobals.Grumpf
    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>