def read2(self, how_much=128):  # FIXME: 128 might be too much ... what is largest?
		"""
		This toggles the RTS pin and reads in data. It also converts the buffer
		back into a list of bytes and searches through the list to find valid
		packets of info. If there is more than one packet, this returns an
		array of valid packets.
		"""
		ret = []
		self.setRTS(self.DD_READ)

		header = [0xFF, 0xFD, 0x00]
		ptr = 0
		while True:
			b = self.serial.read(1)
			if not b:
				return None
			b = ord(b)
			print('b', b)
			if b == header[ptr]:
				ptr += 1
				ret.append(b)
				if ptr == 3:  # found header
					print('found header')
					d = self.serial.read(1)  # ID
					ret.append(ord(d))
					l, h = self.serial.read(2)  # length
					l = ord(l)
					h = ord(h)
					ret.append(l)
					ret.append(h)
					length = (h << 8) + l
					print('length', length)
					how_many = length
					while how_many > 0:
						print('how_many', how_many)
						d = self.serial.read(how_many)
						d = self.decode(d)
						print('read:', len(d))
						how_many -= len(d)
						for i in d:
							ret.append(i)
					print('bye')
					return [ret]
			else:
				ret = []
				ptr = 0
		return ret