comedilib/python/sample1.py
2002-03-09 00:20:20 +00:00

82 lines
2.8 KiB
Python
Executable file

#! /usr/bin/env python
#
# Sample1.py sample code to use python with comedi via the compy interface.
# Compy: COMedi PYthon interface
#
# Blaine Lee Copyright 11/2000 Licence GPL 2.0
#
# V1 reworkd sample.py to test a number of the new functions added to
# compy.c. Seems to work with the das16 driver. John Conner - 20020304
# V0 hacked out of working code for others to look at.
############# imports
import os
import stat
import time
import comedi # important if you want to use compy
from string import *
board = 0
sub_dev = 0
brd_dev = (board,sub_dev)
channel = 0
debug_level = 0
comedi.open(board,"/dev/comedi0",debug_level)
print 'The compy versions is ', comedi.__version__()
driver_name = comedi.get_driver_name(board)
board_name = comedi.get_board_name(board)
num_subdevices = comedi.get_n_subdevices(board)
print 'The board uses driver %s, is named %s and has %d subdevices'%(
driver_name,board_name,num_subdevices)
for subdevice in range(0,num_subdevices):
print '\tsubdevice %d is type %d'%(
subdevice,comedi.get_subdevice_type(board,subdevice))
print 'Subdevice %d has %d channels'%(
sub_dev,comedi.get_n_channels(board,sub_dev))
maxdata = comedi.get_maxdata(board,sub_dev,channel)
print 'The maximum input count for channel %d is %d'%(channel,maxdata)
num_ranges = comedi.get_n_ranges(board,sub_dev,channel)
print 'Channel %d has %d ranges'%(channel,num_ranges)
for rng in range(0,num_ranges):
(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
if unit == 0: unit = 'volts'
if unit == 1: unit = 'mAmps'
if unit == 2: unit = ''
print '\trange %d %8.3f -- %8.3f %s'%(rng,min,max,unit)
rng = 0
(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
val = comedi.data_read(brd_dev,channel,rng,0);
volt = comedi.to_phys(val,(min,max,unit),maxdata);
print 'range = %d input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
rng = 1
(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
val = comedi.data_read(brd_dev,channel,rng,0);
volt = comedi.to_phys(val,(min,max,unit),maxdata);
print 'range = %d input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
rng = 2
(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
val = comedi.data_read(brd_dev,channel,rng,0);
volt = comedi.to_phys(val,(min,max,unit),maxdata);
print 'range = %d input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
rng = 3
(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
val = comedi.data_read(brd_dev,channel,rng,0);
volt = comedi.to_phys(val,(min,max,unit),maxdata);
print 'range = %d input = %6d (%6d) or %8.4f volts'%(rng, val, val-32768, volt)
rng = 1
(min,max,unit) = comedi.get_range(board,sub_dev,channel,rng)
volt = 1.5
val = comedi.from_phys(volt,(min,max,unit),maxdata)
print 'range = %d an input of %8.4f volts should give %6d from A/D' % (rng, volt, val)
comedi.close(0)