Beispiel #1
0
    def _createByteChangeSerialEvent(self, logged_time, read_time,
                                     prev_byte, new_byte):
        self._event_count += 1
        confidence_interval = read_time - self._last_poll_time

        prev_byte = ord(prev_byte)
        new_byte = ord(new_byte)

        try:
            if new_byte != 0:  # Button was pressed
                button = N.where(self._button_bytes == new_byte)[0][0]
                button_event = 'press'
            else:  # Button was released
                button = N.where(self._button_bytes == prev_byte)[0][0]
                button_event = 'release'
        except:
            # Handles when data rx does not match either N.where within the try
            return
        events = [
            0, 0, 0, Computer._getNextEventID(),
            EventConstants.PSTBOX_BUTTON,
            read_time,
            logged_time,
            read_time,
            confidence_interval,
            0.0,
            0,
            self.port,
            button,
            button_event
        ]
        self._addNativeEventToBuffer(events)
Beispiel #2
0
    def _createByteChangeSerialEvent(self, logged_time, read_time, prev_byte,
                                     new_byte):
        self._event_count += 1
        confidence_interval = read_time - self._last_poll_time

        prev_byte = ord(prev_byte)
        new_byte = ord(new_byte)

        try:
            if new_byte != 0:  # Button was pressed
                button = N.where(self._button_bytes == new_byte)[0][0]
                button_event = 'press'
            else:  # Button was released
                button = N.where(self._button_bytes == prev_byte)[0][0]
                button_event = 'release'
        except:
            # Handles when data rx does not match either N.where within the try
            return
        events = [
            0, 0, 0,
            Computer._getNextEventID(), EventConstants.PSTBOX_BUTTON,
            read_time, logged_time, read_time, confidence_interval, 0.0, 0,
            self.port, button, button_event
        ]
        self._addNativeEventToBuffer(events)
Beispiel #3
0
 def _createMultiByteSerialEvent(self, logged_time, read_time):
     self._event_count += 1
     confidence_interval = read_time - self._last_poll_time
     elist = [
         0, 0, 0,
         Computer._getNextEventID(), EventConstants.SERIAL_INPUT, read_time,
         logged_time, read_time, confidence_interval, 0.0, 0, self.port,
         self._parser_state['parsed_event']
     ]
     self._addNativeEventToBuffer(elist)
     self._resetParserState()
Beispiel #4
0
 def _createByteChangeSerialEvent(self, logged_time, read_time, prev_byte,
                                  new_byte):
     self._event_count += 1
     confidence_interval = read_time - self._last_poll_time
     elist = [
         0, 0, 0,
         Computer._getNextEventID(), EventConstants.SERIAL_BYTE_CHANGE,
         read_time, logged_time, read_time, confidence_interval, 0.0, 0,
         self.port,
         ord(prev_byte),
         ord(new_byte)
     ]
     self._addNativeEventToBuffer(elist)
Beispiel #5
0
 def _createByteChangeSerialEvent(self, logged_time, read_time, prev_byte, new_byte):
     self._event_count += 1
     confidence_interval = read_time - self._last_poll_time
     elist=[0, 0, 0, Computer._getNextEventID(),
            EventConstants.SERIAL_BYTE_CHANGE,
            read_time,
            logged_time,
            read_time,
            confidence_interval,
            0.0,
            0,
            self.port,
            ord(prev_byte),
            ord(new_byte)
         ]
     self._addNativeEventToBuffer(elist)
Beispiel #6
0
 def _createMultiByteSerialEvent(self, logged_time, read_time):
     self._event_count += 1
     confidence_interval = read_time - self._last_poll_time
     elist=[0, 0, 0, Computer._getNextEventID(),
            EventConstants.SERIAL_INPUT,
            read_time,
            logged_time,
            read_time,
            confidence_interval,
            0.0,
            0,
            self.port,
            self._parser_state['parsed_event']
         ]
     self._addNativeEventToBuffer(elist)
     self._resetParserState()
Beispiel #7
0
    def _poll(self):
        try:
            logged_time = getTime()

            if self.isConnected():
                self._mcu.getSerialRx()
                if logged_time - self._last_sync_time >= self.time_sync_interval:
                    self._mcu._runTimeSync()
                    self._last_sync_time = logged_time

            if not self.isReportingEvents():
                return False

            confidence_interval = logged_time - self._last_callback_time

            events = self._mcu.getRxEvents()
            for event in events:
                current_MCU_time = event.device_time  #self.getSecTime()
                device_time = event.device_time
                if event.local_time is None:
                    event.local_time = logged_time
                delay = logged_time - event.local_time  #current_MCU_time-device_time
                # local_time is in iohub time space already, so delay does not
                # need to be used to adjust iohub time
                iohub_time = event.local_time
                elist = None
                if event.getTypeInt() == T3Event.ANALOG_INPUT_EVENT:
                    elist = [
                        EventConstants.UNDEFINED,
                    ] * 19
                    elist[4] = AnalogInputEvent.EVENT_TYPE_ID
                    for i, v in enumerate(event.ain_channels):
                        elist[(i + 11)] = v
                elif event.getTypeInt() == T3Event.DIGITAL_INPUT_EVENT:
                    elist = [
                        EventConstants.UNDEFINED,
                    ] * 12
                    elist[4] = DigitalInputEvent.EVENT_TYPE_ID
                    elist[-1] = event.getDigitalInputByte()
                elif event.getTypeInt() == T3Event.THRESHOLD_EVENT:
                    elist = [
                        EventConstants.UNDEFINED,
                    ] * 19
                    elist[4] = ThresholdEvent.EVENT_TYPE_ID
                    for i, v in enumerate(event.threshold_state_changed):
                        elist[(i + 11)] = v

                if elist:
                    elist[0] = 0
                    elist[1] = 0
                    elist[2] = 0
                    elist[3] = Computer._getNextEventID()
                    elist[5] = device_time
                    elist[6] = logged_time
                    elist[7] = iohub_time
                    elist[8] = confidence_interval
                    elist[9] = delay
                    elist[10] = 0

                    self._addNativeEventToBuffer(elist)

            replies = self._mcu.getRequestReplies(True)
            for reply in replies:
                rid = reply.getID()
                if rid in self._request_dict:
                    self._response_dict[rid] = reply
                    del self._request_dict[rid]

            self._last_callback_time = logged_time
            return True
        except Exception as e:
            print2err("--------------------------------")
            print2err("ERROR in MCU._poll: ", e)
            printExceptionDetailsToStdErr()
            print2err("---------------------")
Beispiel #8
0
    def _poll(self):
        try:
            logged_time=getTime()

            if self.isConnected():            
                self._mcu.getSerialRx()
                if logged_time-self._last_sync_time>=self.time_sync_interval:
                    self._mcu._runTimeSync()
                    MCU._last_sync_time=logged_time

            if not self.isReportingEvents():
                return False

            confidence_interval=logged_time-self._last_callback_time
    
            events=self._mcu.getRxEvents()
            for event in events:             
                current_MCU_time=event.device_time#self.getSecTime()
                device_time=event.device_time
                if event.local_time is None:
                    event.local_time=logged_time
                delay=logged_time-event.local_time#current_MCU_time-device_time
                # local_time is in iohub time space already, so delay does not
                # need to be used to adjust iohub time
                iohub_time=event.local_time
                elist=None
                if event.getTypeInt()==T3Event.DIGITAL_INPUT_EVENT:
                    elist= [EventConstants.UNDEFINED,]*12
                    elist[4]=DigitalInputEvent.EVENT_TYPE_ID
                    elist[-1]=event.getDigitalInputByte()
                elif event.getTypeInt()==T3Event.ANALOG_INPUT_EVENT:
                    elist= [EventConstants.UNDEFINED,]*19
                    elist[4]=AnalogInputEvent.EVENT_TYPE_ID
                    for i,v in enumerate(event.ain_channels):
                        elist[(i+11)]=v            
                if elist:
                    elist[0]=0
                    elist[1]=0
                    elist[2]=0
                    elist[3]=Computer._getNextEventID()
                    elist[5]=device_time
                    elist[6]=logged_time
                    elist[7]=iohub_time
                    elist[8]=confidence_interval
                    elist[9]=delay
                    elist[10]=0
                   
                    self._addNativeEventToBuffer(elist)
                
            replies = self._mcu.getRequestReplies(True)
            for reply in replies:
                rid=reply.getID()
                if rid in self._request_dict.keys():
                    self._response_dict[rid]=reply
                    del self._request_dict[rid]
            
            self._last_callback_time=logged_time
            return True
        except Exception, e:
            print2err("--------------------------------")
            print2err("ERROR in MCU._poll: ",e)
            printExceptionDetailsToStdErr()
            print2err("---------------------")