40 lines
No EOL
1.8 KiB
Text
40 lines
No EOL
1.8 KiB
Text
** General info on the swig-generated wrappers for Comedilib **
|
|
|
|
1) Regenerating the wrappers
|
|
The wrapper were made using swig-1.3.19. Any of the swig-1.3.x seris should work
|
|
N.B. the default swig on redhat systems is version 1.1. Upgrade to v-1.3.19. It's better!
|
|
|
|
run $> swig -python comedi.i
|
|
|
|
2) Building the module
|
|
i) edit the setup.py file so that the include and lib paths are correct for your system
|
|
ii) run $> python setup.py build
|
|
|
|
3) Installing the module
|
|
i) Manual installation I'm afraid. Copy comedi.py and _comedi.pyd files to somewhere in your PYTHONPATH
|
|
|
|
4) Using the module
|
|
All the comedilib functions are translated directly to python function. The various comedi structs
|
|
are now available as python classes (e.g. comedi_cmd_struct). The members of each struct are now
|
|
attributes of the class and can be set and retrieved in the usual way. Comedilib Functions which
|
|
take a pointer to a comedilib struct as an argument (in C) now, in python, accept the appropriate
|
|
struct python object.
|
|
|
|
For a multichannel acquisition, a C-array containing the channel list, gains and referencing is
|
|
required. This can be created using a swig-generated helper class: chanlist(n). This creates a C-array
|
|
of length n and type Unsigned Int. Individual members of the array can be accessed/set using
|
|
pythons indexing syntax:
|
|
mylist = chanlist(3) #creates a chanlist array of length 3
|
|
mylist[0] = 100 #set some values
|
|
mylist[1] = 200
|
|
mylist[2] = 300
|
|
|
|
The chanlist object can then be passed to a comedi_cmd_struct object, for example. N.B. The
|
|
chanlist object contains *no* length-checking or other error protection so use with care! Don't
|
|
try to get/set indexes outside the array bounds.
|
|
|
|
All the comedilib macros (e.g. CR_PACK) are now available as python functions.
|
|
|
|
check out the example test_comedi.py to clarify the above.
|
|
|
|
|