expyriment.io.ParallelPort

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

A class implementing a parallel port input and output.

Notes

CAUTION: 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.

Methods

__init__(address, reverse=False)[source]

Create a parallel port input and output.

Parameters:

address : hex or str

The address of the port to use.

reverse : bool

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
address

Getter for address.

clear()[source]

Clear the parallel port.

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

static get_available_ports()[source]

Return an array of strings representing available parallel ports.

Returns:

ports : list

array of strings representing the available parallel ports

Notes

This method does only work on Linux.

has_input_history

Returns always False, because ParallelPort has no input history.

logging

Getter for logging.

parallel

Getter for parallel

poll()[source]

Poll the parallel port.

This will read the status pins (11, 10, 12, 13, 15), the data pins (2-9), and status 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:

data : int (0-65535)

The value of all input pins.

read_control()[source]

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:

data : int (0-15)

The value of the control pins.

read_data()[source]

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

read_pin(pin)[source]

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

Parameters:

pin : int

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

Returns:

set : bool

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

read_status()[source]

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:

data : int (0-31)

The value of the status pins.

reverse

Getter for reverse.

send(data)[source]

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:

data : int (0-2047)

The data to be send via the output pins.

set_control(data)[source]

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:

data : int (0-15)

The data to be send via the control pins.

set_data(data)[source]

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:

data : int (0-255)

The data to be send via the data pins.

set_logging(onoff)

Set logging of this object on or off

Parameters:

onoff : bool

set logging on (True) or off (False)

Notes

See also design.experiment.set_log_level fur further information about event logging.

set_pin(pin, state)[source]

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

Parameters:

pin : int

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

state : bool

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