Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
    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()
Exemplo n.º 3
0
 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()
Exemplo n.º 4
0
 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()
Exemplo n.º 5
0
    def stop(self):
        import os

        print os.getpid(), self._name, "has stopped"
        self._alive = False
        com_handlers.doSessionState(self, 0)