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

 
 
 
Reply to this topicStart new topic
> Бинарный обмен через ttySX в линухе
3.14
сообщение Jan 9 2006, 20:16
Сообщение #1


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



К платке с uClinux-ом через его серийный порт №2 (ttyS1) подключен контроллер, который периодически вываливает пакетик данных. А как нужно в линухе такой пакет "правильно" ловить, ничего страшного не будет если я случайно его пропущу. В любой "обычной" встраиваемой системе я бы просто опрашивал либо флаг прерывания либо сигнал пустоты приемного ФИФО, ну а тут ведь я должен обращатся к нему как к файлу cranky.gif
В качестве теста вместо контроллера я подключил виндовую терминалку, странности:
1) после того как мое приложение откроет серийнй порт (через open или fopen) в терминалку посылается эхо нажатой клавишы (после закрытия порта эхо прекращается)?
2) чтение из порта стоит до тех пор пока не введеш "возврат коретки", я конечно понимаю что это связанно с форматированным вводом выводом, но как устранить это не знаю (при открытии c fopen с ключем 'rb' ничего не меняет).


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 9 2006, 20:31
Сообщение #2


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Думаю, на многие вопросы может ответить http://www.easysw.com/~mike/serial/ - Serial Programming Guide for POSIX Operating Systems


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
3.14
сообщение Jan 9 2006, 21:07
Сообщение #3


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Спасибо за ссылку, стало понятней.
Но все равно как ни крутил, буфер принятых данных становится доступным только после передачи 0x0A, интересно так в линухе должно быть или это специфика драйвера UARTlite для uClinux. Да и с эхом во время открытия порта то же не понятно.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 9 2006, 21:20
Сообщение #4


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Открывать нужно с помощью open.
Цитата
The two most important POSIX functions are tcgetattr(3) and tcsetattr(3).


И это правда. Для того, чтобы избавиться от эха нужно получить текущие атрибуты терминальной линии с помощью tcgetattr, снять биты типа ECHO в поле c_lflag и обновить атрибуты с помощью tcsetattr:

Код
Choosing Raw Input

Raw input is unprocessed. Input characters are passed through exactly  as they are received, when they are received. Generally you'll deselect  the ICANON, ECHO, ECHOE, and ISIG options  when using raw input:

     options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

Choosing Raw Output

Raw output is selected by resetting the OPOST option in the  c_oflag member:

     options.c_oflag &= ~OPOST;  When the OPOST option is disabled, all other option bits in c_oflag are ignored.



PS: Стоит, кстати, убедиться, что в терминалке точно не стоит режим эха.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Jan 9 2006, 22:07
Сообщение #5


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Цитата(makc @ Jan 9 2006, 23:31) *
Думаю, на многие вопросы может ответить http://www.easysw.com/~mike/serial/ - Serial Programming Guide for POSIX Operating Systems
cheers.gif a14.gif Чудесная дока!
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 10 2006, 05:12
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Да, дока замечательная. Я по ней в свое время минут за 20 разобрался и написал кусочек своей кросплатформенной библиотечки (под линукс) для работы с COM-портом. Нужно залить ее на FTP. biggrin.gif


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post
Harbour
сообщение Jan 10 2006, 21:00
Сообщение #7


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



Ни в коем случае не ставлю под сомнение качество индивидуальных реализаций, но все таки настоятельно рекомендую применять, если позволяют обстоятельства, прожженные и потрепанные тысячами юзверей гнутые варианты аля commoncpp.

Сообщение отредактировал Harbour - Jan 10 2006, 21:01
Go to the top of the page
 
+Quote Post
makc
сообщение Jan 11 2006, 05:26
Сообщение #8


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



Цитата(Harbour @ Jan 11 2006, 00:00) *
Ни в коем случае не ставлю под сомнение качество индивидуальных реализаций, но все таки настоятельно рекомендую применять, если позволяют обстоятельства, прожженные и потрепанные тысячами юзверей гнутые варианты аля commoncpp.


У меня была задача, чтобы кроме всего прочего эта библиотека работала в ДОСе под DJGPP. На сколько я понял, commoncpp - это больше гнутая обертка вокруг POSIXовых функций. Т.е. нет этих функций - начинаются проблемы.


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post

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

 


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


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