LINUX.ORG.RU

«/dev/ttyS0», - error, «/dev/cua0» - ok ?


0

0

Здраствуйте. Не подскажите почему так.
Пытаюсь из программы открыть последовательный порт.

int fd = open("/dev/ttyS0", O_RDWR | O_NOCTTY | O_NDELAY); 
получаю  - error

int fd = open("/dev/cua0", O_RDWR | O_NOCTTY | O_NDELAY); 
получаю  - ok

На последовательном порте железа нет.
2 последоват. порта на одной машине соединены нужным кабелем.
и что сделать чтоб был доступ через '/dev/ttyS0' ?
Может кто сможет подсказать, если не сложно.
anonymous

Пермишены проверь на /dev/ttyS0....

McMCC ★★★
()

пусть меня поправят те, кто действительно в этом
разбирается, но кажется, cua не требует carrier
detect, потому и открывается. если бы не O_NDELAY,
ttyS ждал бы. ошибка-то какая?

idle ★★★★★
()

asurpk (at) yandex (on) ru

Напиши, объясню.

anonymous
()
Ответ на: комментарий от idle

2 idle

задовал я как-то вопрос здесь, да никто не ответил, но вот вижу, что хоть кто-то об этом чего-то знает. зачем на один сом порт два файл-устройсва, в чём отличие этих устройств? как понимать определение callback в описании cua?

Whaler
()
Ответ на: комментарий от Whaler

да я почти ничего не знаю про serial устройства.
одно могу сказать, /dev/cua лучше не пользоваться,
они obsolete.

если у вас под рукой linux 2.2, поищите SERIAL_TYPE_CALLOUT
в drivers/char/serial.c. этот флаг выставляется для
/dev/cua (TTYAUX_MAJOR == 5), и block_til_ready() для
них почти сразу возвращает 0. иначе (если не O_NONBLOCK)
ждем carrier detect (если не CLOCAL).

в этом, как мне кажется, и все отличие.

но, повторю, я очень плохо в этом разбираюсь.

idle ★★★★★
()
Ответ на: комментарий от idle

Спасибо, что откликнулись, ошибку нашел, не связанную с устройствами.
Заработало с флагами которые нужны. За ссылки коментарии и участие 
огромное спасибо всем всем.

anonymous
()
Ответ на: комментарий от anonymous

Для проверки работоспособности СОМ порта любли пользоваться командой "ls / >> /dev/ttyS0". На всех *inx одинакого хорошо работает, удобно однако ;)

binr ★★
()
Ответ на: комментарий от binr

3.2 Устройство cua

Каждое устройство ttyS имеет соответствующее устройство cua. Велись некоторые разговоры об отмене cua, так что возможно самое лучшее - это использовать ttyS. Основное различие между cua и ttyS - то, что для обычной команды "open" (без каких-либо флажков) в прикладной программе, cua откроет порт, даже если сигналы управления модема (типа DCD) просят этого не делать.

(Чтобы проверить сигналы управления модема должен быть установлен stty.) Порт ttyS отказался бы открываться в этом случае, но его можно принудительно открыть, задавая некоторые флажки в команде "open".

Таким образом порт ttyS может делать все, что может порт cua. За исключением того, что результаты "принудительного" открытия in read statements in the program работают по-другому, но программисты могут обойти это, изменяя свои программы. Удаление cua привело бы Linux в большее соответствие с Posix стандартом и решило бы некоторые проблемы с файлами блокировки.

P.S. это отсюда - http://linuxdoc.ru/HOWTO/html/Serial-HOWTO.html

А вообще - есть http://www.ibiblio.org/pub/Linux/docs/HOWTO/other-formats/html_single/Serial-...

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