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

 
 
 
Reply to this topicStart new topic
> Linux и управление линиями DTR/DSR, Возможно ли стандартным терминалом tty?
ASN
сообщение Sep 30 2008, 19:03
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



Заранее приношу извинения за возможно безграмотно заданный вопрос.
Устройство подключено к РС по стандартному COM порту. Используется аппаратное управление потоком через линии CTS/RTS. Для дополнительного обмена командами (запрос коммутации – запрос от устройства/канал cкоммутирован – ответ от РС) используются линии DSR/DTR. Система функционировала под управлением DOS с прямым доступом к порту. Всё работало. При переводе системы на Linux возникла проблема - прикладной программист утверждает, что напрямую управлять DSR/DTR стандартными средствами невозможно. Неужели в Linux действительно невозможно напрямую управлять DTR/DSR?! Или я что-то не понимаю?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2008, 19:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ASN @ Sep 30 2008, 21:03) *
программист утверждает...

Наглая ложь sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ASN
сообщение Sep 30 2008, 19:22
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



zltigo
Дополнительная информация: используется плата с 8-ю COM портами, которые могут работать как по интерфейсу RS232, так и RS485 (они функционирую через специальный драйвер). Тестовое программное обеспечение (оно полностью реализует необходимую функциональность), разработанное нами под WinXP, работает. Прикладное ПО под Linux разрабатывает соисполнитель. Лично мне реализованный под DOS протокол не нравиться – в нём нет фреймирования кадров вообще – используется очень жёсткая последовательность команд/данных, разграничение между которыми реализовано по размеру (даже запросить состояние устройства в произвольные моменты времени нет возможности). Но софт разработан уже давно – существенно переработать старый протокол нет ни времени, ни желания. Если не трудно, можно получить ссылку на пример использования DTR/DSR в Linux?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Sep 30 2008, 19:32
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(ASN @ Sep 30 2008, 21:22) *
Если не трудно, можно получить ссылку на пример использования DTR/DSR в Linux?

http://linux.die.net/man/2/ioctl далее TIOCMGET/TIOCMSET
Код
//---------------------------------------------------------------------------
// Controls the modem lines to place the microcontroller into various
//  states during the programming process.
//---------------------------------------------------------------------------
void control_MDM_lines( int DTR, int RTS )
{
#if defined COMPILE_FOR_LINUX
int status;
    if( ioctl( ie.fdCom, TIOCMGET, &status ) == 0 )
        dprint( 1, "Ioctl get ok, status = %X\n", status );
    else
        dprint( 1, "Ioctl get failed\n" );

    if( DTR )
        status |=  TIOCM_DTR;                    
    else
        status &= ~TIOCM_DTR;

    if( RTS )
        status |=  TIOCM_RTS;
    else
        status &= ~TIOCM_RTS;

    if( ioctl( ie.fdCom, TIOCMSET, &status ) == 0 )
        dprint( 1, "Ioctl set ok, status = %X\n", status );
    else
        dprint( 1, "Ioctl set failed\n" );

    if( ioctl( ie.fdCom, TIOCMGET, &status ) == 0)
        dprint( 1, "Ioctl get ok, status = %X\n", status );
    else
        dprint( 1, "Ioctl get failed\n" );

#endif // defined COMPILE_FOR_LINUX


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
ASN
сообщение Oct 2 2008, 18:35
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 459
Регистрация: 15-07-04
Из: g.Penza
Пользователь №: 326



zltigo
Спасибо за помощь.
Все линии (и RTS, и DTR) в Linux замечательно управляются. Плата ввода/вывода на 8 COM портов, подключеннная через шину PCI, как в режиме RS485, так и в режиме RS232 с аппаратным управлением потоком, работает.
a14.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 10th July 2025 - 12:06
Рейтинг@Mail.ru


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