Re: Calling Comedi functions in RTLinux

It looks as though you forgot to insert the kcomedilib module. A simple 
"modprobe kcomedilib" as root should solve this.
-Jonathan

On Tue, 24 Jun 2003 HanMic_at_aol.com wrote:

> Hello!
> 
> I am using Comedi-0.7.66 and comedilib-0.7.19.
> 
> I would very much like to call COMEDI functions in RTLinux. While reading the mailing list, I found out, that there should be real-time examples in comedilib/demo. But there are none :(
> 
> So I tried to figure out the usage of comedi functions amoung rtlinux by "trial and error". I know, that one cannot use comedi.h and comedilib.h in realtime code, as they are userspace files. Instead one mus call kcomedilib. I searched and found a file /comedi/include/linux/comedilib.h which seems to be the real-time library. Is that correct? 
> 
> What I did was to include this file in my realtime code and got an error message, that <linux/comedi.h> did not exist. Changing paths to an existing comedi.h worked for compilation but when I tried to insert my realtime/comedi module I got unresolved symbols comedi_open and comedi_writedata.
> 
> I would be very thankful, if one of you would be so kind to tell me, how I can actually use comedi fuctions in rtlinux. I would very muchg appreciate your help! Maybe you could tell me what I have to change in my rtlinux code and my makefile (attached to this mail).
> 
> Thanks a lot!
> 
> Michael
> 
> +++++++++++++++++++++++++++++++++++++++++++++++++
> RTLinux Code
> +++++++++++++++++++++++++++++++++++++++++++++++++
> 
> #include <rtl.h>
> #include <time.h>
> #include <rtl_sched.h>
> #include <rtl_fifo.h>
> #include <pthread.h>
> #include <rtl_time.h>
> 
> #include "/usr/src/comedi-0.7.66/include/linux/comedilib.h"
> 
> int subdev = 0;     
> int chan = 0;       
> int range = 0;      
> int aref = AREF_GROUND; 
> comedi_t *it;
> 
> pthread_t thread;
> 
> void * start_routine(void *arg)
> {
>   struct sched_param p;
>   
>   p.sched_priority = 1;
>   pthread_setschedparam (pthread_self(), SCHED_FIFO, &p);
> 
>   pthread_make_periodic_np (pthread_self(), gethrtime(), 100000000); 
> 
>   while (1)
>   {
>     lsampl_t data;  
>     it=comedi_open("/dev/comedi0"); 
>     comedi_data_read(it,subdev,chan,range,aref,&data);   
>     rtl_printf("%d\n",data);
>     pthread_wait_np();
>   }
>   return 0;
> }
> 
> int init_module(void)
> {  
>   return pthread_create (&thread, NULL, start_routine, 0);
> }
> 
> void cleanup_module(void)
> {
>   pthread_delete_np (thread);
> } 
> 
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> Makefile
> ++++++++++++++++++++++++++++++++++++++++++++++++++++
> 
> all: rt_module.o
> 
> include /usr/src/rtlinux/rtl.mk
> 
> 
> rt_module.o: rt_module.c
> 
>     $(CC) ${INCLUDE} ${CFLAGS} -I /usr/src/comedi-0.7.66/include/linux -c rt_module.c
> 
> clean:
>     -rm -f *.o *~
> 
> _______________________________________________
> comedi mailing list
> comedi_at_comedi.org
> https://cvs.comedi.org/cgi-bin/mailman/listinfo/comedi
> 

Received on 2003-06-24Z14:33:19