PyICe.lab_interfaces

Physical Communication Interfaces Hierarchy Manager

Required for multithreaded communication.

Classes

communication_node() The purpose of this is to map a network of communication resources to each channel
gpib_adapter()
gpib_adapter_rl1009_dll()
gpib_adapter_rl1009_serial(serialPort)
gpib_adapter_visa()
interface(name) base class all lab instruments should in some way talk to, all have a timeout whether or not it does anything
interface_factory() the goal of the interface factory is both to create interfaces
interface_ftdi_d2xx() write this if you want it
interface_libusb(idVendor, idProduct, timeout) Bulk transfer through LibUSB/WinUSB.
interface_raw_serial(serial_port_name, ...)
interface_spi(name)
interface_spi_cfgpro(visa_interface, CPOL, CPHA)
interface_spi_dc590(interface_stream[, ss_ctrl])
interface_spi_dummy([delay])
interface_stream(name) Generic parent class of all stream-type interfaces.
interface_stream_serial(interface_raw_serial) PySerial based stream wrapper.
interface_twi(name)
interface_twi_buspirate(interface_serial, ...)
interface_twi_dc590_serial(interface_serial, ...)
interface_twi_dc590listread_serial(...)
interface_twi_dummy(delay)
interface_twi_kernel(bus_number)
interface_twi_scpi(interface_serial, timeout)
interface_twi_scpi_sp(interface_serial, ...)
interface_twi_scpi_testhook(...)
interface_visa(name)
interface_visa_direct(visa_address_string, ...)
interface_visa_keithley_kxci(host_address, port)
interface_visa_rl1009_dll(GPIBAddress, timeout)
interface_visa_rl1009_serial(GPIBAddress, ...)
interface_visa_serial(...)
interface_visa_tcp_ip(host_address, port, ...)
interface_visa_telnet(host_address, port, ...)
interface_visa_vxi11(address, timeout)
class PyICe.lab_interfaces.communication_node[source]

Bases: object

The purpose of this is to map a network of communication resources to each channel

class PyICe.lab_interfaces.interface(name)[source]

Bases: PyICe.lab_interfaces.communication_node

base class all lab instruments should in some way talk to, all have a timeout whether or not it does anything

class PyICe.lab_interfaces.interface_factory[source]

Bases: PyICe.lab_interfaces.communication_node

the goal of the interface factory is both to create interfaces it also creates the instruments with communication_node, that they pass on to channels

The purpose of this class is to be smart about the interfaces and to simplify their creation. It’s purpose is also to encourage portable code, and to remove some low level responsibilities from the instruments.

This also forces you to talk to gpib instruments in a way that works with both visa library and non-visa adapters.

class PyICe.lab_interfaces.interface_ftdi_d2xx[source]

Bases: PyICe.lab_interfaces.interface_stream

write this if you want it https://pypi.python.org/pypi/pylibftdi

close()

close the underlying interface if necessary

read(byte_count)

Read and return tuple (byte_count bytes, byte_count remaining_bytes) from subclass-specific communication interface. If fewer than byte_count bytes are available, return all available.

write(byte_list)

Send byte_list across subclass-specific communication interface.

class PyICe.lab_interfaces.interface_libusb(idVendor, idProduct, timeout)[source]

Bases: PyICe.lab_interfaces.interface

Bulk transfer through LibUSB/WinUSB. Implementation may be overly specific to George B’s Direct590 protocol and may need additional options or subclassing later. Transfers must be in multiples of this 64 byte payload size or will result in a babble error in the underlying library. Requires PyUSB: https://github.com/walac/pyusb

write(byte_list)[source]

Send byte_list across subclass-specific communication interface.

class PyICe.lab_interfaces.interface_stream(name)[source]

Bases: PyICe.lab_interfaces.interface

Generic parent class of all stream-type interfaces. Developed for DC590 board variants, but probably has more generic utility if moved into lab_interfaces Maybe consider change to inherit from https://docs.python.org/2/library/io.html

close()[source]

close the underlying interface if necessary

read(byte_count)[source]

Read and return tuple (byte_count bytes, byte_count remaining_bytes) from subclass-specific communication interface. If fewer than byte_count bytes are available, return all available.

write(byte_list)[source]

Send byte_list across subclass-specific communication interface.

class PyICe.lab_interfaces.interface_stream_serial(interface_raw_serial)[source]

Bases: PyICe.lab_interfaces.interface_stream

PySerial based stream wrapper.

close()[source]

close the underlying interface

read(byte_count)[source]

Read and return tuple (byte_count bytes, byte_count remaining_bytes) from subclass-specific communication interface. If fewer than byte_count bytes are available, return all available. If byte_count is None, return all available.

write(byte_list)[source]

Send byte_list across subclass-specific communication interface.