'Read data on the channel based on timing delays.
Attempt to read channel max_loops number of times. If no data this will cause a 15 second
delay.
Once data is encountered read channel for another two seconds (2 * delay_factor) to make
sure reading of channel is complete.'

def _read_channel_timing(self, delay_factor=1, max_loops=150):

    delay_factor = self.select_delay_factor(delay_factor)
    channel_data = u''
    i = 0
    while (i <= max_loops):
        time.sleep((0.1 * delay_factor))
        new_data = self.read_channel()
        if new_data:
            channel_data += new_data
        else:
            time.sleep((2 * delay_factor))
            new_data = self.read_channel()
            if (not new_data):
                break
            else:
                channel_data += new_data
        i += 1
    return channel_data
