equal
deleted
inserted
replaced
18 # TODO multiclient : |
18 # TODO multiclient : |
19 # session list lock |
19 # session list lock |
20 # svghmi_sessions = [] |
20 # svghmi_sessions = [] |
21 |
21 |
22 svghmi_session = None |
22 svghmi_session = None |
|
23 |
|
24 svghmi_send_collect = PLCBinary.svghmi_send_collect |
|
25 svghmi_send_collect.restype = ctypes.c_int # error or 0 |
|
26 svghmi_send_collect.argtypes = [ |
|
27 ctypes.POINTER(ctypes.c_uint32), # size |
|
28 ctypes.POINTER(ctypes.c_void_p)] # data ptr |
|
29 # TODO multiclient : switch to arrays |
|
30 |
|
31 svghmi_recv_dispatch = PLCBinary.svghmi_recv_dispatch |
|
32 svghmi_recv_dispatch.restype = ctypes.c_int # error or 0 |
|
33 svghmi_recv_dispatch.argtypes = [ |
|
34 ctypes.POINTER(ctypes.c_uint32), # size |
|
35 ctypes.POINTER(ctypes.c_void_p)] # data ptr |
|
36 # TODO multiclient : switch to arrays |
|
37 |
|
38 def SendThreadProc(): |
|
39 assert(svghmi_session) |
|
40 size = ctypes.c_uint32() |
|
41 ptr = ctypes.c_void_p() |
|
42 while res == 0: |
|
43 res = svghmi_send_collect(ctypes.byref(size), ctypes.byref(ptr)) |
|
44 |
|
45 # TODO multiclient : dispatch to sessions |
|
46 svghmi_session.sendMessage(ctypes.string_at(ptr,size)) |
23 |
47 |
24 class HMISession(object): |
48 class HMISession(object): |
25 def __init__(self, protocol_instance): |
49 def __init__(self, protocol_instance): |
26 global svghmi_session |
50 global svghmi_session |
27 |
51 |
51 # - refresh rates / subsriptions |
75 # - refresh rates / subsriptions |
52 |
76 |
53 # TODO multiclient : pass client index as well |
77 # TODO multiclient : pass client index as well |
54 pass |
78 pass |
55 |
79 |
|
80 def sendMessage(self, msg): |
|
81 self.sendMessage(msg, True) |
56 |
82 |
57 class HMIProtocol(WebSocketServerProtocol): |
83 class HMIProtocol(WebSocketServerProtocol): |
58 |
84 |
59 def __init__(self, *args, **kwargs): |
85 def __init__(self, *args, **kwargs): |
60 self._hmi_session = None |
86 self._hmi_session = None |