Exemple #1
0
 def _write(self, data):
     '''
         write data to serial
     '''
     frame = ZnpFrame(data).output()
     log.debug('TX: %s' % frame.encode('hex'))
     self.serial.write(frame)
Exemple #2
0
 def _write(self, data):
     """
         write data to serial
     """
     frame = ZnpFrame(data).output()
     log.debug("TX: %s" % frame.encode("hex"))
     self.serial.write(frame)
Exemple #3
0
 def _write(self, data):
     """
         write data to serial
     """
     frame = ZnpFrame(data).output()
     log.debug('TX: %s' % frame.encode('hex'))
     self.serial.write(frame)
Exemple #4
0
    def _wait_for_frame(self):
        """
            read from the serial port until a valid ZNP frame arrives. It will 
            then return the binary data contained within the frame
        """
        frame = ZnpFrame()

        while True:
            if self._callback and not self._thread_continue:
                raise ThreadQuitException

            if self.serial.inWaiting() == 0:
                time.sleep(0.005)  # 5ms polling
                continue

            byte = self.serial.read()

            if byte != ZnpFrame.SOF:
                continue

            # save all following bytes
            if len(byte) == 1:
                # print 'received: SOF'
                frame.fill(byte)

            # TODO: how to handle the rx timeout situation if not enough bytes
            while frame.remaining_bytes() > 0:
                byte = self.serial.read()

                if len(byte) == 1:
                    # print 'received: %s' % byte.encode('hex')
                    frame.fill(byte)

            try:
                log.debug("RX: %s" % frame.raw_data.encode("hex"))
                frame.parse()

                # ignore empty frames
                if len(frame.data) == 0:
                    log.debug("Empty frame received!")
                    frame = ZnpFrame()
                    continue

                return frame
            except ValueError:
                # bad frame, so restart
                log.debug("bad frame received!")
                frame = ZnpFrame()
Exemple #5
0
    def _wait_for_frame(self):
        '''
            read from the serial port until a valid ZNP frame arrives. It will 
            then return the binary data contained within the frame
        '''
        frame = ZnpFrame()

        while True:
            if self._callback and not self._thread_continue:
                raise ThreadQuitException

            if self.serial.inWaiting() == 0:
                time.sleep(0.005)  #5ms polling
                continue

            byte = self.serial.read()

            if byte != ZnpFrame.SOF:
                continue

            # save all following bytes
            if len(byte) == 1:
                #print 'received: SOF'
                frame.fill(byte)

            #TODO: how to handle the rx timeout situation if not enough bytes
            while frame.remaining_bytes() > 0:
                byte = self.serial.read()

                if len(byte) == 1:
                    #print 'received: %s' % byte.encode('hex')
                    frame.fill(byte)

            try:
                log.debug('RX: %s' % frame.raw_data.encode('hex'))
                frame.parse()

                #ignore empty frames
                if len(frame.data) == 0:
                    log.debug('Empty frame received!')
                    frame = ZnpFrame()
                    continue

                return frame
            except ValueError:
                #bad frame, so restart
                log.debug('bad frame received!')
                frame = ZnpFrame()