expyriment.io.ParallelPort

class expyriment.io.ParallelPort(address, reverse=False)

A class implementing a parallel port input and output.

Notes

CAUTION: On Windows, one of the following parallel port drivers needs to be installed: ‘inpout32’ (http://www.highrez.co.uk/Downloads/InpOut32/) or ‘dlportio’ (http://real.kiev.ua/2010/11/29/dlportio-and-32-bit-windows/). On Linux, the Python package ‘PyParallel’ (http://pyserial.sourceforge.net/pyparallel.html) has to be installed.

__init__(address, reverse=False)

Create a parallel port input and output.

Parameters:
addresshex or str

The address of the port to use.

reversebool

Whether the port should be in reverse mode (default=False). Reverse mode enables to read from the data pins.

Notes

On Windows, common port addresses are:

LPT1 = 0x0378 or 0x03BC
LPT2 = 0x0278 or 0x0378
LPT3 = 0x0278

On Linux, port addresses are in the following format:

/dev/parport0
property address

Getter for address.

clear()

Clear the parallel port.

Dummy method required for port interfaces (see e.g. ButtonBox)

static get_available_ports()

Return an array of strings representing available parallel ports.

Returns:
portslist

array of strings representing the available parallel ports

Notes

This method does only work on Linux.

static get_driver()

Return the driver used for interacting with parallel ports.

On Windows, one of the following parallel port drivers needs to be installed: ‘input32’ (http://www.highrez.co.uk/Downloads/InpOut32/) or ‘dlportio’ (http://real.kiev.ua/2010/11/29/dlportio-and-32-bit-windows/). On Linux, the Python package ‘PyParallel’ (http://pyserial.sourceforge.net/pyparallel.html) has to be installed.

property has_input_history

Returns always False, because ParallelPort has no input history.

property logging

Getter for logging.

property parallel

Getter for parallel.

poll()

Poll the parallel port.

This will read the status pins (11, 10, 12, 13, 15), the data pins (2-9), and control pins (1, 14, 16, 17).

The received data is encoded in 17 bits, corresponding to the 17 pins:

Pin:  17    16    14     1     9     8     7     6     5
       |     |     |     |     |     |     |     |     |
Bit: 65536 32768 16384 8192  4096  2048  1024   512   256

Pin:  4    3    2   11   10   12   13   15
      |    |    |    |    |    |    |    |
Bit: 128  64   32   16    8    4    2    1
Returns:
dataint (0-65535)

The value of all input pins.

read_control()

Read data from the control pins.

Reads control pins 1, 14, 16, 17.

The received data is encoded in 4 bits, corresponding to the 4 pins:

Pin: 17  16  14   1
      |   |   |   |
Bit:  8   4   2   1
Returns:
dataint (0-15)

The value of the control pins.

read_data()

Read the data pins.

Reads the data pins (2-9) on the parallel port.

The received data is encoded in 8 bits, corresponding to the 8 pins:

Pin:  9   7   6   5   4   3   2   1
      |   |   |   |   |   |   |   |
Bit: 128  64  32  16  8   4   2   1
Returns:
dataint

The value of the data pins.

read_pin(pin)

Determine whether an input pin is set high(True) or low(False).

Parameters:
pinint

The number of the input pin to read (2-13 and 15)

Returns:
setbool

Whether the pin is set high(True) or low(False)

read_status()

Read data from the status pins.

Reads all status pins (10, 11, 12, 13, 15).

The received data is encoded in 5 bits, corresponding to the 5 pins:

Pin: 11  10  12  13  15
      |   |   |   |   |
Bit: 16   8   4   2   1
Returns:
dataint (0-31)

The value of the status pins.

property reverse

Getter for reverse.

send(data)

Send data via all output pins.

Sets the data pins (2-9) and the control pins (1, 14, 16, 17) on the parallel port.

The data is encoded in 12 bits, corresponding to the 12 pins:

Pin:  17   16   14    1    9    8    7    6    5    4    3    2
       |    |    |    |    |    |    |    |    |    |    |    |
Bit: 2048 1024  512  256  128  64   32   16    8    4    2    1
Parameters:
dataint (0-2047)

The data to be send via the output pins.

set_control(data)

Send data via control pins.

Sets the control pins (1, 14, 16, 17) on the parallel port.

The data is encoded in 8 bits, corresponding to the 4 pins:

Pin: 17  16  14   1
      |   |   |   |
Bit:  8   4   2   1
Parameters:
dataint (0-15)

The data to be send via the control pins.

set_data(data)

Send data via data pins.

Sets the data pins (2-9) on the parallel port.

The data is encoded in 8 bits, corresponding to the 8 pins:

Pin:  9   7   6   5   4   3   2   1
      |   |   |   |   |   |   |   |
Bit: 128  64  32  16  8   4   2   1
Parameters:
dataint (0-255)

The data to be send via the data pins.

set_logging(onoff)

Set logging of this object on or off

Parameters:
onoffbool

set logging on (True) or off (False)

set_pin(pin, state)

Set a desired output pin to be high(True) or low(False).

Parameters:
pinint

The number of the output pin to set (2-9).

statebool

Whether the pin is to be set high(True) or low(False).