svghmi/svghmi_server.py
branchsvghmi
changeset 2819 3b99c908f43b
parent 2799 f5da343b9b63
child 2822 9101a72a1da0
--- a/svghmi/svghmi_server.py	Tue Dec 03 09:46:12 2019 +0100
+++ b/svghmi/svghmi_server.py	Mon Dec 09 10:43:54 2019 +0100
@@ -95,18 +95,23 @@
 svghmi_send_thread = None
 
 def SendThreadProc():
-   global svghmi_session
-   size = ctypes.c_uint32()
-   ptr = ctypes.c_void_p()
-   res = 0
-   while True:
-       res=svghmi_send_collect(ctypes.byref(size), ctypes.byref(ptr))
-       if res == 0:
-           # TODO multiclient : dispatch to sessions
-           if svghmi_session is not None:
-               svghmi_session.sendMessage(ctypes.string_at(ptr.value,size.value))
-       elif res not in [errno.EAGAIN, errno.ENODATA]:
-           break
+    global svghmi_session
+    size = ctypes.c_uint32()
+    ptr = ctypes.c_void_p()
+    res = 0
+    while True:
+        res=svghmi_send_collect(ctypes.byref(size), ctypes.byref(ptr))
+        if res == 0:
+            # TODO multiclient : dispatch to sessions
+            if svghmi_session is not None:
+                svghmi_session.sendMessage(ctypes.string_at(ptr.value,size.value))
+        elif res == errno.ENODATA:
+            # this happens when there is no data after wakeup
+            # because of hmi data refresh period longer than PLC common ticktime
+            pass 
+        else:
+            # this happens when finishing
+            break