6024E Invalid Argument

I'm trying to do a simple program that opens and reads from the digital 
I/O of the DAQCard 6024E.  However, I'm getting the following strace when 
I run the program

old_mmap(NULL, 60344, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40015000
close(3)                                = 0
open("/usr/local/lib/libcomedi.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\33"..., 1024) 
= 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=253067, ...}) = 0
old_mmap(NULL, 39816, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0x40024000
mprotect(0x4002d000, 2952, PROT_NONE)   = 0
old_mmap(0x4002d000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 3, 
0x8000) = 0x4002d000
close(3)                                = 0
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0p\\\1\000"..., 
1024) = 1024
fstat64(3, {st_mode=S_IFREG|0755, st_size=1435624, ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x4002e000
old_mmap(NULL, 1256740, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 
0x4002f000
mprotect(0x40159000, 36132, PROT_NONE)  = 0
old_mmap(0x40159000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 
3, 0x12a000) = 0x40159000
old_mmap(0x4015e000, 15652, PROT_READ|PROT_WRITE, 
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x4015e000
close(3)                                = 0
munmap(0x40015000, 60344)               = 0
brk(0)                                  = 0x80499e4
brk(0x804a9e4)                          = 0x804a9e4
brk(0x804b000)                          = 0x804b000
open("/dev/comedi0", O_RDWR)            = 3
ioctl(3, DECODER_GET_CAPABILITIES, 0x8049a0c) = 0
ioctl(3, DECODER_GET_STATUS, 0x8049ad0) = 0
ioctl(3, 0x8008640b, 0xbffff718)        = 1
ioctl(3, 0x8020640c, 0xbffff720)        = 2
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, 0x8008640b, 0xbffff708)        = 1
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, 0x8008640b, 0xbffff708)        = -1 EINVAL (Invalid argument)
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, DEVFSDIOC_RELEASE_EVENT_QUEUE, 0xbffff780) = 0
ioctl(3, 0x80086408, 0xbffff730)        = 0
ioctl(3, 0x8008640b, 0xbffff708)        = 1
ioctl(3, DECODER_SET_OUTPUT, 0x2)       = 0
ioctl(3, 0x8020640c, 0xbffff7a0)        = 1
fstat64(1, {st_mode=S_IFCHR|0720, st_rdev=makedev(136, 0), ...}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 
0) = 0x40015000
write(1, "Invalid argument\n", 17Invalid argument
)      = 17
write(1, "Error setting device 2, channel "..., 62Error setting device 2, 
channel 0 to input.  Program bailout.
) = 62
munmap(0x40015000, 4096)                = 0
semget(IPC_PRIVATE, 4096, IPC_CREAT|0x4015a140|0400) = -1 ENOSYS (Function 
not implemented)
_exit(0)                       


Basically its not liking what I give to comedi_dio_config.  The line I'm 
refering to in my code looks like this
nError = comedi_dio_config(card, subdev, chanStart, COMEDI_INPUT);
where subdev is 2 and chanStart is 0.  any help would be much appreciated.

thanks,
Chuck Haines

Received on 2003-06-16Z16:39:49