def __init__(self, threadID, name, wifi, bt, arduino): threading.Thread.__init__(self) self.threadID = threadID self.name = name # set the command queue self.lock = threading.BoundedSemaphore(SEMAPHORE_BUF) self.commandQueue = Queue.Queue() # assign thread self.wifi = wifi self.bt = bt self.arduino = arduino # assign handler for command self.protocolHandler = protocolHandler(wifi, bt, arduino)
def TCP_Con(conn, addr): global devHndl conn_id = None m_id = None m_type = None m_data = None m_timeout = 0 m_error = 0 m_buffer = [] raws_list = [] protocol = protocolHandler() print "New connection from : ", addr conn.settimeout(TIMEOUT) #Clear m_buffer del m_buffer[:] #Clear raws_data raws_data = "" #Clear raws_list del raws_list[:] print "Waiting for sensor infomation : ", addr m_timeout = 0 m_error = 0 while True: try: raws_data = conn.recv(BUFFER_SIZE) #socket.recv will return None if connection is closed. if (not raws_data): print "Client is closed : ", addr conn.close() print "Close connection from : ", addr return #Reset m_timeout m_timeout = 0 #Convert char list to int list raws_list = list(raws_data) for i in range(0, len(raws_list)): m_buffer.append(ord(raws_list[i])) #Process income Data rslt = 0 for i in range(0, len(m_buffer)): rslt = protocol.processData(m_buffer[i]) if (rslt != 0): break if (rslt > 0): m_error = 0 m_id = protocol.getID() conn_id = m_id m_type = protocol.getType() m_data = protocol.getData() print "Reegister new device id " + str(m_id) + " : ", addr devHndl_sem.acquire() devHndl.addDevice(m_id, m_type, m_data) devHndl_sem.release() break elif (rslt < 0): m_error = m_error + 1 print "Process protocol error #" + str(m_error) + " : ", addr if (m_error >= MAX_ERROR): print "Too many error : ", addr conn.close() print "Close connection from : ", addr return except socket.timeout, e: m_timeout = m_timeout + 1 print "Receive Timeout #" + str(m_timeout) + " : ", addr if (m_timeout >= MAX_TIMEOUT): print "Too many timeout : ", addr conn.close() print "Close connection from : ", addr return except socket.error, e: print "Error [" + e.args[0] + "] : ", addr return
def TCP_Con(conn, addr) : global devHndl conn_id = None m_id = None m_type = None m_data = None m_timeout = 0 m_error = 0 m_buffer = [] raws_list = [] protocol = protocolHandler() print "New connection from : " , addr conn.settimeout(TIMEOUT) #Clear m_buffer del m_buffer[:] #Clear raws_data raws_data = "" #Clear raws_list del raws_list[:] print "Waiting for sensor infomation : " , addr m_timeout = 0 m_error = 0 while True: try: raws_data = conn.recv(BUFFER_SIZE) #socket.recv will return None if connection is closed. if (not raws_data) : print "Client is closed : ", addr conn.close() print "Close connection from : " , addr return #Reset m_timeout m_timeout = 0 #Convert char list to int list raws_list = list(raws_data) for i in range(0, len(raws_list)) : m_buffer.append(ord(raws_list[i])) #Process income Data rslt = 0 for i in range(0, len(m_buffer)) : rslt = protocol.processData(m_buffer[i]) if (rslt != 0) : break; if (rslt > 0) : m_error = 0 m_id = protocol.getID() conn_id = m_id m_type = protocol.getType() m_data = protocol.getData() print "Reegister new device id " + str(m_id) + " : ", addr devHndl_sem.acquire() devHndl.addDevice(m_id, m_type, m_data) devHndl_sem.release() break elif (rslt < 0) : m_error = m_error + 1 print "Process protocol error #" + str(m_error) + " : ", addr if (m_error >= MAX_ERROR) : print "Too many error : ", addr conn.close() print "Close connection from : " , addr return except socket.timeout, e: m_timeout = m_timeout + 1 print "Receive Timeout #" + str(m_timeout) + " : ", addr if (m_timeout >= MAX_TIMEOUT) : print "Too many timeout : ", addr conn.close() print "Close connection from : " , addr return except socket.error, e: print "Error [" + e.args[0] + "] : ", addr return