ich wollte mal wieder was Löten und habe mir ein Velleman K8055N USB-IO-Board gekauft. Funktioniert auch, im Linux-Kernel gibt es für das Board schon fertig einen comedi-Driver. Per Swig gibt es dafür auch eine Python-Schnittstelle (comedi.py). Leider ist das Ding völlig undokumentiert, was die ganze Sache ziemlich mühsam macht. Zudem wird nur ein Bruchteil der comedi-Funktionen von meinem Board unterstützt. Aus der Datei comedi.c werde ich nicht so richtig schlau, dafür reichen meine C-Kenntnisse nicht aus.
Die Digitalen und Analoge IO-Ports kann ich mit Python ansprechen, es werden Python-Listen oder -Integers zurückgegeben, funktioniert. Bei manchen Funktionen werden allerdings nur Pointer auf C-Objekte zurückgegeben. Das sieht dann so aus:
Code: Alles auswählen
import comedi as c
def main():
dev0 = c.comedi_open("/dev/comedi0")
print "Maxrange analog input: ", c.comedi_get_range(dev0,0,0,0)
c.comedi_close(dev0)
if __name__ == '__main__':
main()
Das C-Objekt hat folgende Struktur:Maxrange analog input: <comedi.comedi_range; proxy of <Swig Object of type 'comedi_range *' at 0x7f98f525f480> >
Code: Alles auswählen
comedi_range * comedi_get_range( comedi_t * device,
unsigned int subdevice,
unsigned int channel,
unsigned int range);
Vielen Dank.