exemples/python/python@py_ext/pyfile.xml
changeset 3843 832bcf1b5b60
parent 3814 ab0afe798428
--- a/exemples/python/python@py_ext/pyfile.xml	Mon Aug 07 18:17:12 2023 +0200
+++ b/exemples/python/python@py_ext/pyfile.xml	Thu Sep 28 17:56:03 2023 +0200
@@ -1,69 +1,79 @@
-<?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>
+<?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 MyPrintFunction(msg):
+    if sys.stdout:
+        sys.stdout.write(msg)
+        sys.stdout.flush()
+    else:
+        PLCObject.LogMessage(msg)
+
+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
+
+    if sys.stdout:
+        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>