On 9/13/07, Bachman Kharazmi <[EMAIL PROTECTED]> wrote:
> void myWriteTask(void *arg){
> char* myString = "hej\n";
> int fd,err,counter;
> counter=0;
> RTIME write_time;
> ssize_t sz = sizeof(RTIME);
> ssize_t written = 0;
> //create rt device
> fd = rt_dev_open(WRITE_FILE, 0);
> if (fd < 0) {
> perror("open(WRITE_FILE)");
> exit(EXIT_FAILURE);
> }
>
> //setup config
> err = rt_dev_ioctl(fd, RTSER_RTIOC_SET_CONFIG, &write_config);
> if (err) {
> printf(MAIN_PREFIX "error while RTSER_RTIOC_SET_CONFIG, %s\n",
> strerror(-err));
> }
> rt_task_shadow(&write_task, NULL, 50, 0);
This is useless, a task created with rt_task_create is already a real-time task.
> err = rt_task_set_periodic(NULL,
> TM_NOW,rt_timer_ns2ticks(write_task_period_ns));
> if (err) {
> printf(WTASK_PREFIX "error on set periodic, %s\n", strerror(-err));
> }
> while(counter<100){
> err=write(fd, myString, strlen(myString));
This is no good, a file descriptor returned by rt_dev_open should be
used with rt_dev_write. If you want to use write, you should use open
and ioctl, and not forget to compile with the flags returned by
xeno-config --posix-cflags and xeno-config --posix-ldflags.
--
Gilles Chanteperdrix
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help