svghmi/svghmi_server.py
branchsvghmi
changeset 2774 9857b4b0d979
parent 2773 6e5e752372c8
child 2775 3b93409ba22c
equal deleted inserted replaced
2773:6e5e752372c8 2774:9857b4b0d979
    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