diff -r 65f32c94d7ec -r 3b99c908f43b svghmi/svghmi_server.py --- 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