GitHunt
GA

gaudenz/sireader

Python module to communicate with SportIdent main stations

SportIdent Reader

Sireader is a python module to communicate with a SportIdent main station to
read out SportIdent cards. SportIdent is an electronic punching system mainly
used for orienteering events.

Sireader supports two major operation modes. It can be used for complete card
readout or in control station mode to send punches from a control. The first mode
is typically used for card readout after the finish line to read the card data
into an event software. The second mode is used to get live result from an
intermediate control.

Website: http://bosco.durcheinandertal.ch/

GIT Repository: https://github.com/gaudenz/sireader/

Usage

There are 3 classes in the sireader module. SIReader is the base class
containing common functions. It's imported to have easy access to it's
constants. SIReaderReadout implements classical card readout.
SIReaderControl implements a station configured as control which
continuously sends punches.

First import the relevant classes::

from sireader import SIReader, SIReaderReadout, SIReaderControl

SIReader only supports the so called "Extended Protocol" mode. If your
base station is not in this mode you have to change the protocol mode
first::

change to extended protocol mode

si.set_extended_protocol()

To use a SportIdent base station for card readout::

from time import sleep

connect to base station, the station is automatically detected,

if this does not work, give the path to the port as an argument

see the pyserial documentation for further information.

si = SIReaderReadout()

wait for a card to be inserted into the reader

while not si.poll_sicard():
sleep(1)

some properties are now set

card_number = si.sicard
card_type = si.cardtype

read out card data

card_data = si.read_sicard()

beep

si.ack_sicard()

To use a base station as a control sending punches::

configure station

si.set_operating_mode(SIReader.M_CONTROL)
si.set_station_code(99)
si.set_autosend()

connect to station

si = SIReaderControl()

poll for new punches

punches = si.poll_punch()

reset station configuration

si.set_operating_mode(SIReader.M_READOUT)
si.set_autosend(False)

Finally set the station back to basic protocol::

change back to basic protocl

si.set_extended_protocol(False)

API Documentation

Complete documentation is contained in the module source code and can
be read online at:

http://bosco.durcheinandertal.ch/epydoc-sireader/

This documentation is autogenerated from the source code and
represents the version in the GIT repository.