def _sendData(self): self._cmd = None self._startTime = time.time() while self._alive: try: cmd = None data = "" if len(self._ctrlCmdList) > 0: data = self._ctrlCmdList.pop(0) print "指令队列添加 :", data else: cmd = self._cycleList.pop(0) # print "_sendData", self._cycleList data = cmd["cmd"] self._cmd = cmd # print data, " XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX _sendData" if data != "": self._com.write(data.decode("hex")) self._sendTime = time.time() self._recvGR.switch() else: self._NoSendData(cmd) except Exception as e: print "_sendData got an error : %s" % e, self._name, self._port self.closeSerial() # 通道连接断开 # import test # self.putResultQueue(test.hanldeSessionState, {'session_name' : self._name, 'session_state' : False}) com_handlers.doSessionState(self, 0) self.start()
def _receiveData(self): data = '' readFlag = False self._read_interval = 0.1 while self._alive : # print "Start FFFFFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX _receiveData" try : if readFlag is False: time.sleep(self._read_interval) n = self._com.inWaiting() if n : self._recvTime = time.time() data = self._com.read(n) # print "_receiveData : ", ord(data[0]), "----------------", data self._dataProcess(data) # print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX _receiveData" self._sendGR.switch() else : if readFlag is False : time.sleep(self._interval-self._read_interval) readFlag = True else : readFlag = False self._DisConnectProcess() self._sendGR.switch() except Exception as e: print '_receiveData got an error : %s' % e, self._name, self._port self.closeSerial() #通道连接断开 # import test # self.putResultQueue(test.hanldeSessionState, {'session_name' : self._name, 'session_state' : False}) com_handlers.doSessionState(self, 0) self.start()
def start(self): if not self.isOpen(): self.openSerial() if self.isOpen(): self._alive = True # 通道连接建立 # import test # self.putResultQueue(test.hanldeSessionState, {'session_name' : self._name, 'session_state' : True}) th = threading.Thread(target=self._doTask) th.start() com_handlers.doSessionState(self, 1) self._sendGR = greenlet(self._sendData) self._recvGR = greenlet(self._receiveData) self._sendGR.switch()
def _receiveData(self): data = "" # readFlag = False self._read_interval = 0.01 total = int(self._interval / self._read_interval) while self._alive: try: flag = True data = "" count = 0 while flag: time.sleep(self._read_interval) count = count + 1 n = self._com.inWaiting() flag1 = False if n > 0: if flag1 is True: flag1 = False else: flag1 = True subdata = self._com.read(n) # print "SUB : ", subdata.encode("hex") data = data + subdata if flag1 is True: continue else: flag1 = False if (cmp(data, "") != 0 and n == 0) or count == total: flag = False if count == total: self._DisConnectProcess() else: self._dataProcess(data) self._sendGR.switch() # print "Start FFFFFXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX _receiveData" # try : # if readFlag is False: # time.sleep(self._read_interval) # n = self._com.inWaiting() # if n : # self._recvTime = time.time() # data = self._com.read(n) # # print "_receiveData : ", ord(data[0]), "----------------", data # self._dataProcess(data) # # print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX _receiveData" # self._sendGR.switch() # else : # if readFlag is False : # time.sleep(self._interval-self._read_interval) # readFlag = True # else : # readFlag = False # self._DisConnectProcess() # self._sendGR.switch() except Exception as e: print "_receiveData got an error : %s" % e, self._name, self._port self.closeSerial() # 通道连接断开 # import test # self.putResultQueue(test.hanldeSessionState, {'session_name' : self._name, 'session_state' : False}) com_handlers.doSessionState(self, 0) self.start()
def stop(self): import os print os.getpid(), self._name, "has stopped" self._alive = False com_handlers.doSessionState(self, 0)