Portál AbcLinuxu, 9. května 2025 08:47

Dotaz: Seriovy port v C - dotaz na fcntl

22.6.2008 15:32 Tomáš Skočdopole | skóre: 13
Seriovy port v C - dotaz na fcntl
Přečteno: 635×
Odpovědět | Admin
Ahoj,

pisu si knihovnu pro praci se seriovym portem na netu jsem si nasel par prikladku jak pristupovat k seriovemu portu v C.

Pri zkoumani co jednotlive prikazy vlastne delaji, jsem narazil na funkci fcntl:
fcntl(filedescriptor, F_SETFL, FNDELAY);
Pri prohlizeni man stranky jsem nikde nenasel co dela volba FNDELAY
F_SETFL
              Set the file status flags to the value specified by arg.   File  access  mode  (O_RDONLY,  O_WRONLY,
              O_RDWR)  and  file creation flags (i.e., O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC) in arg are ignored.  On
              Linux this command can only change the O_APPEND, O_ASYNC, O_DIRECT, O_NOATIME, and O_NONBLOCK flags.
Pritom prekladac nehlasi zadnou chybu. Dale jsem narazil na FASYNC, a dalsi.

Vysvetlil by mi to nekdo prosim?

cerpal jsem z http://www.linux.org/docs/ldp/howto/Serial-Programming-HOWTO/x115.html

Dekuji Vam
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

23.6.2008 11:45 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Seriovy port v C - dotaz na fcntl
Odpovědět | | Sbalit | Link | Blokovat | Admin
grep is your friend.

V /usr/include/fcntl.h je #include <bits/fcntl.h>. V tom je # define FNDELAY O_NDELAY. Dalej v asm-generic/fcntl.h je #define O_NDELAY O_NONBLOCK a pravdepodobne by sa dala vystopovat retaz includov, ktora tam vedie. Takze podla mna je to proste alias za O_NONBLOCK.
If you hold a Unix shell up to your ear, you can you hear the C.
23.6.2008 22:58 Tomáš Skočdopole | skóre: 13
Rozbalit Rozbalit vše Re: Seriovy port v C - dotaz na fcntl
Dekuji mnohokrat,

takze v podstate kdyz otevru seriovy port
    this->SerialPortDescriptor = open(this->PortPath, O_RDWR     |
                                                      O_NOCTTY   |
                                                      O_NDELAY   |
                                                      O_NONBLOCK);
kde je O_NONBLOCK, tak uz pomoci fcntl> nemusim modifikovat file descriptor s parametrem FNDELAY...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.