Writes output buffer and settings to device

        :returns: numpy.ndarray -- if the first presentation of a novel stimulus, or None if a repeat stimulus

def start(self):
        """Writes output buffer and settings to device

        :returns: numpy.ndarray -- if the first presentation of a novel stimulus, or None if a repeat stimulus
        """

        # this shouldn't actually be possible still...
        if self.aitask is not None:
            self.stop()
            raise Exception("FIX ME : NESTED START OPERATIONS ALLOWED")

        self.daq_lock.acquire()

        self.ngenerated = 0
        self.nacquired = 0

        return self.reset()