Eric Noulard wrote: > 2007/9/13, Bachman Kharazmi <[EMAIL PROTECTED]>: >> Hi! >> I try to print to serialport using rtdm according to: >> http://pastebin.ca/695418 >> >> But if I don't have sleep(1) only "hello " or similar is written to >> the serialport. >> But if I've sleep(1) "helloworld" is written every second as expected. > > I'm no xenomai expert but I think > you shouldn't write to serial device in such a tight loop: > > while(counter <100){ > rt_dev_write(fd, myString, strlen(myString)); > printf("%d\n",counter); > // sleep(1); WITHOUT THIS SLEEP helloworld is sent on serial once. > counter++; > }
The _will_ work, but the problem is that pending bytes are dropped on rt_dev_close + the shortcoming that there is no way to synchronise on the buffer being flushed reliably. That's a shortcoming of the current driver (+ the serial profile spec) I trapped in myself - as the developer of this code. :( > > because you will certainly fills the send buffer without giving a chance > to the drive to send more data than the one that fits in the buffer > (this heavily depends wether if the device is opened in blocking > or non-blocking mode) Nope, the problem here has nothing to do with the timeout or the blocking mode. That write will block (given a timeout > 0 or infinite) when the software buffer (4k) is full. That's not specific in the serial profile, and that's bad. > > FIRST of ALL you should check the return value of your function call > > rt_dev_write should return either the number of written bytes > http://www.xenomai.org/documentation/branches/v2.3.x/html/api/group__userapi.html#ge966625748b547779bb8c5385e7fb2aa > > or a negative error code: > http://www.xenomai.org/documentation/branches/v2.3.x/html/api/group__rtserial.html > > >> Is this some kind of limit how quickly I can write stuff on the rtser0? > > Yes there must be. > Serial device are not as fast as any recent CPU. > Beginning with the fact that you did configure the serial link at 115200 bauds > it would'nt wise to try to feed at an "average" speed that exceed this number. > > >> How do I handle this? > > Check the return value of your rt_dev_write calls :) > Won't help here as I explained above. Still, my beer-ware was lacking return code checks, and that is never recommendable for real code. Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
