From cdb3a84f86e55b4cd5674c8d19cf94c95bfcdf96 Mon Sep 17 00:00:00 2001 From: Ian Abbott Date: Mon, 20 Dec 2010 15:49:59 +0000 Subject: [PATCH] Updated procedures for building with Python's distutils. Also reduced line-lengths for 80-character wide terminals. Most of the updated text supplied by W. Trevor King. Ian Abbott added a note that it only applies when building the wrappers separately from Comedilib without 'make'. --- swig/python/README.txt | 84 +++++++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/swig/python/README.txt b/swig/python/README.txt index 72896c7..84654a4 100644 --- a/swig/python/README.txt +++ b/swig/python/README.txt @@ -1,40 +1,48 @@ ** 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 (section obsolete -Frank Hess) - 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 (section obsolete -Frank Hess) - 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. - - +0) Installing required tools + The wrapper are made with SWIG. Any of the swig-1.3.x series should + work. Run + $ swig -version + to check the version you have installed, and upgrade if necessary. + +1) Building the wrappers + Note: the following applies when building wrappers separately from + the comedilib library, using Python's distutils procedures instead + of Comedilib's `make`. In this case, Comedilib should be configured + with the `--disable-python-binding` option to prevent it building + and installing its own copy of the wrappers. + + After building the main comedilib library (running `make` in the + base directory), just follow standard distutils procedures + $ python setup.py build + $ python setup.py install + +2) 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 (e.g. `comedi.cr_pack`). + + Look at the examples in demo/python to clarify the above. -- 2.26.2