Fix things so that they actually work
authorDavid Schleef <ds@schleef.org>
Mon, 28 May 2001 03:57:32 +0000 (03:57 +0000)
committerDavid Schleef <ds@schleef.org>
Mon, 28 May 2001 03:57:32 +0000 (03:57 +0000)
python/Makefile.pre.in
python/Setup.in
python/compy.c
python/sample.py

index 6d9190d76f4dcf964b969d90a0fe1691eea1853c..a9a7fc0641a5f058ac6c33d46623a352a06e5087 100644 (file)
@@ -170,7 +170,7 @@ CONFIGC=    $(LIBPL)/config.c
 CONFIGCIN=     $(LIBPL)/config.c.in
 SETUP=         $(LIBPL)/Setup.thread $(LIBPL)/Setup.local $(LIBPL)/Setup
 
-SYSLIBS=       $(LIBM) $(LIBC)
+SYSLIBS=       $(LIBM) $(LIBC) -lcomedi
 
 ADDOBJS=       $(LIBPL)/python.o config.o
 
index 1f08c79619d6a6567bc50c2f45d10ca0965fc6d4..c6ae49e6772c88f50b1149fba758dcc984b83d41 100644 (file)
@@ -1 +1,2 @@
-comedi compy.c
+*shared*
+comedi compy.c -lcomedi
index 7c54e2a2a2bf6d545ac439aa1e649f0d13e5bf6a..354bd6b37cc838fd992625d34d86b91fb129c4ce 100644 (file)
@@ -25,6 +25,7 @@ static comedi_t *compy_it[maxcards];
 static comedi_trig trig;
 static int trigchan[2];
 static printstats=1;
+static int debug = 1;
 
 /*******************************/
 static PyObject *
@@ -45,18 +46,34 @@ compy_open(self, args)
 
        compy_it[card]=comedi_open(filen);
 
-       trig.data=&trigdata;
-       trig.mode=0;
-       trig.flags=0;
-       trig.n_chan=1;
-       trig.chanlist=trigchan;
-       trig.n=1;
-       trig.trigsrc=TRIG_NOW;
-       trig.data_len=1;
+       if(debug)
+               printf("open returned %p\n",compy_it[card]);
 
        return Py_BuildValue("i", 1);
 }
 
+static PyObject *
+compy_read_data(PyObject *self, PyObject *args)
+{
+       int subd, chan;
+       int card;
+       lsampl_t data;
+
+       if (!PyArg_ParseTuple(args, "(iii)", &card, &subd, &chan))
+               return NULL;
+       if ((card < 0) || (card >= maxcards))
+               return NULL;
+       if(debug)
+               printf("compy trig dev %d subd %d chan %d\n",card,subd,chan);
+
+       comedi_data_read(compy_it[card],subd,chan,0,0,&data);
+
+       if(debug)
+               printf("comedi_data_read value %d\n",data);
+
+       return Py_BuildValue("i", data);
+}
+
 static PyObject *
 compy_trig(self, args)
        PyObject *self;
@@ -115,9 +132,10 @@ compy_version(self, args)
 
 /* List of functions defined in the module */
 
-static PyMethodDef compy_methods[] = {
+static PyMethodDef comedi_methods[] = {
         {"open",       compy_open,     METH_VARARGS},
         {"trig",       compy_trig,     METH_VARARGS},
+        {"data_read",  compy_data_read,        METH_VARARGS},
         {"close",      compy_close,    METH_VARARGS},
         {"__version__",        compy_version,  METH_VARARGS},
         {NULL,         NULL}           /* sentinel */
@@ -126,10 +144,10 @@ static PyMethodDef compy_methods[] = {
 /* Initialization function for the module (*must* be called initxx) */
 
 DL_EXPORT(void)
-initcompy()
+initcomedi()
 {
         /* Create the module and add the functions */
-        (void) Py_InitModule("compy", compy_methods);
+        (void) Py_InitModule("comedi", comedi_methods);
 }
 
 
index a95c5b248aceb09dbee6e5f274b94a17a5ad7ddf..c645efa8aef13efcbac4b00ad8760265c1cc7a3f 100755 (executable)
 import os
 import stat
 import time
-import compy                   # important if you want to use compy
+import comedi                  # important if you want to use compy
 from string import *
 
-#  this project uses 3 advantech PCM-3730's
-#  8 isolated outputs on dev 0
-#  8 isolated inputs on dev 3
-#  8 ttl outputs each on dev 1 & 2 not used
-#  8 ttl inputs each on dev 4 & 5 not used
+comedi.open(0,"/dev/comedi0",1)
 
-compypath0 = "/dev/comedi0"    # a little abstraction
-compypath1 = "/dev/comedi1"
-compypath2 = "/dev/comedi2"
+val = comedi.read_data((0,0,0));
+print val
 
-# ************ I/O definitions
-SolderSOV      = (0,0,1)
-Work0SOV       = (0,0,2)       # input card 0, dev 0, channel 2
-Work1SOV       = (0,0,3)
-Move1SOV       = (0,0,4)
-BlowSOV                = (0,0,5)
-SolderDn       = (0,3,2)
-SolderUp       = (0,3,3)
-Work0In                = (0,3,4)
-Work0Out       = (0,3,5)
-SolderPresent0 = (0,3,6)
-Work1In                = (1,3,0)
-Work1Out       = (1,3,1)
-SolderPresent1 = (1,3,2)
-MoveAt1                = (1,3,3)
-MoveAt0                = (1,3,4)
-PalmL          = (2,3,0)
-PalmR          = (2,3,1)       # input card 2, dev 3, channel 1
-PartPres0      = (2,3,2)
-PartPres1      = (2,3,3)
-
-compyif = compy.trig           # got rid of old work around of compy v2
-                               # all new code should use compy.trig directly!!!
-
-# *********************************************
-def inout(SOV, Sin, Sout, Ppres, Head ):
-    "A task to manage one arm of a 'ping-pong' machine"
-    global SolderNow
-    compyif(SOV,0)     # reset
-    SolderNow[Head] = 0
-    while 1:
-        while not compyif(Sout,0):     # wait until out and ready
-            time.sleep(.001)
-        while compyif(Ppres,0):                # Wait for part to be removed
-            time.sleep(.001)
-        while not compyif(Ppres,0):    # Wait for part to be replaced
-            time.sleep(.001)
-        while compyif(PalmL,0) or compyif(PalmR,0):    # palms must not be blocked
-            time.sleep(.001)
-        while (not compyif(PalmL,0)) or (not compyif(PalmR,0)):        # wait for palms
-            time.sleep(.001)
-        SolderNow[Head] = 1            # signal that this side will be ready soon
-        compyif(SOV,1)                 # go in
-        while not compyif(Sin,0):      # wait for in
-            time.sleep(.001)
-        SolderNow[Head] = 2
-        while SolderNow[Head]:         # wait for process
-            time.sleep(.001)
-            # Of course this won't exit, you don't have the other tasks that run
-            # the machine!!!!
-        compyif(SOV,0)                 # go out
-
-
-# ************ comedi setup
-compy.open(0,compypath0,0)
-compy.open(1,compypath1,0)
-compy.open(2,compypath2,0)
-
-compyif(SolderSOV,0)   # solder up
-
-inout(Work0SOV,Work0In,Work0Out,PartPres0,0)
-
-compy.close(0)
-compy.close(1)
-compy.close(2)
+comedi.close(0)