реклама на сайте
подробности

 
 
> Открыть COM USB в Linux
inventor
сообщение Mar 26 2017, 10:20
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Дело такое: нужно открыть виртуальный COM порт в Linux так, чтобы любой
другой процесс / поток/задача не мог получить возможность писать-читать из этого порта пока он занят.
То есть при попытке открытия занятого порта - выдавалась ошибка BUSY что то подобное

CODE
/* Открываем порт */
com_fd = open("/dev/ttyUSB0", O_RDWR | O_NOCTTY);
if (com_fd < 0) {
perror("open");
break;
}
printf("INFO: port open OK\n");

tcgetattr(com_fd, &oldtio); /* сохранение текущих установок порта */
bzero(&newtio, sizeof(newtio));

/* Неканонический режим. Нет эхо. 8N2 */
newtio.c_cflag |= (CLOCAL | CREAD);

то есть какие флаги нужно поставить, чтобы при попывтке открыть уже
открытый порт выдавалась ошибка.

PS проверяю на виртуалке VirtualBox -мжет в том проблема
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
krux
сообщение Mar 28 2017, 08:27
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



для обычных программ необходимо пользоваться теми заголовзными файлами ядра, с которыми были собраны библиотеки glibc, ну или что у вас там в качестве общесистемных библиотек используются.
в противном случае вы сами себе сломаете ABI и получите segfault-ы в самых неожиданных местах.


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


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 16:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01372 секунд с 7
ELECTRONIX ©2004-2016