Exemple #1
0
    def _read_spectrum_data(self):
        usb_speed = self._usb_speed
        # Only query the value if there is no cached value
        if usb_speed is None:
            usb_speed = self.usb_speed

        n_packets, packet_length = (8, 512) if usb_speed == 'high' else (64,
                                                                         64)
        # Assign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x82)

        data = ''
        for i in range(n_packets):
            data += vpp43.read(self._vi, packet_length)

        # Read sync packet to check if properly synchronized
        sync_byte = vpp43.read(self._vi, 1)
        if sync_byte != '\x69' or len(data) != 4096:
            raise visa.VisaIOError(OO_ERROR_SYNC)

        # Reassign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x81)

        spectrum = N.fromstring(data, N.dtype('<u2'))

        # Query and cache the saturation level if it is not cached
        if self._saturation_level is None:
            vpp43.write(self._vi, '\x05\x11')
            autonull_info = vpp43.read(self._vi, 17)
            self._saturation_level = (
                65536.0 / struct.unpack('<H', autonull_info[6:8])[0])
            # Hmmm, it seems that this is an OceanOptics trick to sell
            # spectrometers with much less dynamic range than advertised!

        return spectrum * self._saturation_level
Exemple #2
0
    def _read_spectrum_data(self):

        # Assign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x82)

        data = ''
        for i in range(32):
            lsbs = vpp43.read(self._vi, 64)
            msbs = vpp43.read(self._vi, 64)

            # Mask MSB high bits - instrument has 12-bit A/D
            msbs = ''.join([chr(ord(byte) & 0x0F) for byte in msbs])

            bs = bytearray(128)
            bs[::2] = lsbs
            bs[1::2] = msbs
            data += str(bs)

        # Read sync packet to check if properly synchronized
        sync_byte = vpp43.read(self._vi, 1)
        if sync_byte != '\x69' or len(data) != 4096:
            raise visa.VisaIOError(OO_ERROR_SYNC)

        # Reassign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x87)

        return N.fromstring(data, N.int16)
    def _read_spectrum_data(self):
        usb_speed = self._usb_speed
        # Only query the value if there is no cached value
        if usb_speed is None:
            usb_speed = self.usb_speed

        n_packets, packet_length = (8, 512) if usb_speed == 'high' else (64, 64)
        # Assign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x82)

        data = ''
        for i in range(n_packets):
            data += vpp43.read(self._vi, packet_length)

        # Read sync packet to check if properly synchronized
        sync_byte = vpp43.read(self._vi, 1)
        if sync_byte != '\x69' or len(data) != 4096:
            raise visa.VisaIOError(OO_ERROR_SYNC)

        # Reassign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x81)

        spectrum = N.fromstring(data, N.dtype('<u2'))

        # Query and cache the saturation level if it is not cached
        if self._saturation_level is None:
            vpp43.write(self._vi, '\x05\x11')
            autonull_info = vpp43.read(self._vi, 17)
            self._saturation_level = (65536.0
                / struct.unpack('<H', autonull_info[6:8])[0])
            # Hmmm, it seems that this is an OceanOptics trick to sell
            # spectrometers with much less dynamic range than advertised!

        return spectrum * self._saturation_level
    def _read_spectrum_data(self):

        # Assign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x82)

        data = ''
        for i in range(32):
            lsbs = vpp43.read(self._vi, 64)
            msbs = vpp43.read(self._vi, 64)

            # Mask MSB high bits - instrument has 12-bit A/D
            msbs = ''.join([chr(ord(byte) & 0x0F) for byte in msbs])

            bs = bytearray(128)
            bs[::2] = lsbs
            bs[1::2] = msbs
            data += str(bs)

        # Read sync packet to check if properly synchronized
        sync_byte = vpp43.read(self._vi, 1)
        if sync_byte != '\x69' or len(data) != 4096:
            raise visa.VisaIOError(OO_ERROR_SYNC)

        # Reassign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, 0x87)

        return N.fromstring(data, N.int16)
Exemple #5
0
 def _open_serial_connection(self):
     logging.debug(__name__ + ":Opening serial connection")
     self._session = vpp43.open_default_resource_manager()
     self._vi = vpp43.open(self._session, self._address)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_BAUD, 115200)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_DATA_BITS, 8)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_STOP_BITS, vpp43.VI_ASRL_STOP_ONE)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_PARITY, vpp43.VI_ASRL_PAR_ODD)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_END_IN, vpp43.VI_ASRL_END_NONE)
 def _open_serial_connection(self):
     logging.debug(__name__ + ':Opening serial connection')
     self._session = vpp43.open_default_resource_manager()
     self._vi = vpp43.open(self._session, self._address)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_BAUD, 115200)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_DATA_BITS, 8)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_STOP_BITS,
                         vpp43.VI_ASRL_STOP_ONE)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_PARITY,
                         vpp43.VI_ASRL_PAR_ODD)
     vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_END_IN,
                         vpp43.VI_ASRL_END_NONE)
def initPSU():
    IPaddr = "192.168.6.6"
    defaultRm = vpp43.open_default_resource_manager()
    if defaultRm < VI_SUCCESS:
        print "status < VI_SUCCESS, quitting"
        quit()
    rsc = []
    rsc.extend([] * 256)
    rsc = "TCPIP::192.168.6.6::2268::SOCKET"
    accessMode = VI_NO_LOCK
    timeout = 0
    vi = vpp43.open(defaultRm, rsc, accessMode, timeout)
    vpp43.set_attribute(vi, VI_ATTR_TMO_VALUE, 10000)
    vpp43.set_attribute(vi, VI_ATTR_TERMCHAR_EN, VI_TRUE)
    setPSU(vi, 0, 0)
    return vi
    def _open_serial_connection(self):
        '''
        Opens the ASRL connection using vpp43
        baud=9600, databits=8, stop=one, parity=none, no end char for reads

        Input:
            None

        Output:
            None
        '''
        logging.debug(__name__ + ' : Opening serial connection')

        self._visa = visa.SerialInstrument(self._address,
                baud_rate=9600, data_bits=8, stop_bits=1,
                parity=visa.no_parity, term_chars="",
                send_end=False, chunk_size=8)
        vpp43.set_attribute(self._visa.vi, vpp43.VI_ATTR_ASRL_END_IN,
                vpp43.VI_ASRL_END_NONE)
Exemple #9
0
    def _open_serial_connection(self):
        '''
        Opens the ASRL connection using vpp43
        baud=115200, databits=8, stop=one, parity=odd, no end char for reads

        Input:
            None

        Output:
            None
        '''
        logging.debug(__name__ + ' : Opening serial connection')
        self._session = vpp43.open_default_resource_manager()
        self._vi = vpp43.open(self._session, self._address)

        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_BAUD, 115200)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_DATA_BITS, 8)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_STOP_BITS,
                            vpp43.VI_ASRL_STOP_ONE)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_PARITY,
                            vpp43.VI_ASRL_PAR_ODD)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_END_IN,
                            vpp43.VI_ASRL_END_NONE)
Exemple #10
0
    def _open_serial_connection(self):
        '''
        Opens the ASRL connection using vpp43
        baud=9600, databits=8, stop=one, parity=none, no end char for reads

        Input:
            None

        Output:
            None
        '''
        logging.debug(__name__ + ' : Opening serial connection')

        self._visa = visa.SerialInstrument(self._address,
                                           baud_rate=9600,
                                           data_bits=8,
                                           stop_bits=1,
                                           parity=visa.no_parity,
                                           term_chars="",
                                           send_end=False,
                                           chunk_size=8)
        vpp43.set_attribute(self._visa.vi, vpp43.VI_ATTR_ASRL_END_IN,
                            vpp43.VI_ASRL_END_NONE)
Exemple #11
0
    def _open_serial_connection(self):
        '''
        Opens the ASRL connection using vpp43
        baud=115200, databits=8, stop=one, parity=odd, no end char for reads

        Input:
            None

        Output:
            None
        '''
        logging.debug('Opening serial connection')
        self._session = vpp43.open_default_resource_manager()
        self._vi = vpp43.open(self._session, self._address)

        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_BAUD, 115200)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_DATA_BITS, 8)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_STOP_BITS,
            vpp43.VI_ASRL_STOP_ONE)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_PARITY,
            vpp43.VI_ASRL_PAR_ODD)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_ASRL_END_IN,
            vpp43.VI_ASRL_END_NONE)
    def open(self):
        # Open instrument
        self._vi = vpp43.open(visa.resource_manager.session,
            self._resource_name)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_TMO_VALUE, self._timeout)
        # Timeout value should always be higher than integration time

        # Assign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, self._in_pipe)
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_OUT_PIPE, self._out_pipe)

        # Initialize
        vpp43.write(self._vi, '\x01')  # Reset command
Exemple #13
0
    def open(self):
        # Open instrument
        self._vi = vpp43.open(visa.resource_manager.session,
                              self._resource_name)
        vpp43.set_attribute(self._vi, vpp43.VI_ATTR_TMO_VALUE, self._timeout)
        # Timeout value should always be higher than integration time

        # Assign endpoint
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_IN_PIPE, self._in_pipe)
        vpp43.set_attribute(self._vi, VI_ATTR_USB_BULK_OUT_PIPE,
                            self._out_pipe)

        # Initialize
        vpp43.write(self._vi, '\x01')  # Reset command