LINUX.ORG.RU

Можно ли так открывать /dev/ttyS1 ?


0

0

1. open("/dev/ttyS1",(O_RDWR | O_NOCTTY | O_NONBLOCK)) - открывает СОМ порт

2. open("/dev/ttyS1",(O_RDWR | O_NOCTTY | ~O_NONBLOCK)) - не открывает СОМ порт, пишет ошибку, что файл существует.

Как правильно открыть СОМ порт, с блокированием чтением?

★★

Re: Можно ли так открывать /dev/ttyS1 ?

>Как правильно открыть СОМ порт, с блокированием чтением?

open("/dev/ttyS1",(O_RDWR | O_NOCTTY);

>2. open("/dev/ttyS1",(O_RDWR | O_NOCTTY | ~O_NONBLOCK)) - не открывает СОМ порт, пишет ошибку, что файл существует.

ты спав чи нi?

cvv ★★★★★ ()

Re: Можно ли так открывать /dev/ttyS1 ?

$ grep -r O_NONBLOCK /usr/include
/usr/include/sys/fcntl.h:#define O_NONBLOCK 0x00000004 /* no delay */

подумайте, что получится для выражения "x = y | ~O_NONBLOCK". в битах :)

// wbr

klalafuda ★☆☆ ()
Ответ на: Re: Можно ли так открывать /dev/ttyS1 ? от binr

Re: Можно ли так открывать /dev/ttyS1 ?

> open("/dev/ttyS1",(O_RDWR | O_NOCTTY & ~O_NONBLOCK)) > открывает, но read() не блокируется, возращает 0 :(

ok, первый шаг вы прошли успешно. шаг второй: думаем над приоритетами операций в языке C :)

// wbr

klalafuda ★☆☆ ()
2 марта 2006 г.

Re: Можно ли так открывать /dev/ttyS1 ?

o_O смеяцо или плакать даж незнаю...

по умолчанию все открывается в blocking режиме, следовательно если НЕ УКАЗЫВАТЬ O_NONBLOCK or O_NDELAY то открыватся будет так как надо...

З.Ы. как уже народ объяснил ~O_NONBLOCK побитное инвертирование O_NONBLOCK, вот и подумай что получица в итоге :)

Ex ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.