The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Обработка потока с последовательного порта"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Процессы, Треды, RPC)
Изначальное сообщение [ Отслеживать ]

"Обработка потока с последовательного порта"  +/
Сообщение от pretender424 (ok) on 09-Ноя-12, 18:57 
Здравствуйте.

Прошу направить на путь истинный.
Необходимо читать данные с последовательного порта, ловить в потоке сообщения в определенном протоколе и обрабатывать эти сообщения. Обработка достаточно сложная и может занимать много времени.
Как не потерять входные данные за время обработки или хотя бы сигнализировать о том что мы не успеваем обрабатывать поток? Куда уходят байты из открытого файла если их не читать вызовами read, fread и прочими? Где какие есть буфера? Какой вообще путь проходят байты от UARTа до переменной в памяти программы?
Ну и главный вопрос, где обо всей этой кухне почитать?

Есть подозрение, что все относительно просто и опасение, что все очень просто. В этом случае, прошу отнестись к вопросам снисходительно.

Заранее спасибо.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Обработка потока с последовательного порта"  +/
Сообщение от pavlinux (ok) on 10-Ноя-12, 02:45 
>[оверквотинг удален]

Пишешь конечно на Алголе 68 под Oberon OS ?  

http://www.tldp.org/HOWTO/Serial-Programming-HOWTO/
http://www.easysw.com/~mike/serial/serial.html

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Обработка потока с последовательного порта"  +/
Сообщение от pretender424 (ok) on 10-Ноя-12, 02:49 
Ну, близко. На Си под Linux. А Serial HOWTO читал неоднократно. Не помогло.

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Обработка потока с последовательного порта"  +/
Сообщение от pavlinux (ok) on 10-Ноя-12, 02:58 
> Не помогло.

Не помогло где, показывай кусок кода, где не работает?!


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Обработка потока с последовательного порта"  +/
Сообщение от pretender424 (ok) on 10-Ноя-12, 03:17 
Не помогло понять физику процесса. В частности, куда деваются байты если их не читать. Или читать, но недостаточно быстро.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Обработка потока с последовательного порта"  +/
Сообщение от pretender424 (ok) on 10-Ноя-12, 03:26 
Вот так, например. Будут байты из потока выхватываться те что в текущий момент там идут или по порядку, накапливаясь в каком-то буфере ОС?

while (1) {
    res = fgetc(fp);
    sleep(1);
}

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Обработка потока с последовательного порта"  +/
Сообщение от pavlinux (ok) on 10-Ноя-12, 20:25 
> накапливаясь в каком-то буфере ОС?

Ага, виртуальная память называется.

> while (1) {
>     res = fgetc(fp);
>     sleep(1);
> }

Тут ничего не накапливается. (ну разве только TSC)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Обработка потока с последовательного порта"  +/
Сообщение от pretender424 (ok) on 10-Ноя-12, 20:54 
Об виртуальной памяти я и не подумал.
А извлекаться байты будут, видимо, в том порядке, в котором приходили.
Ничего не потеряется, так да?
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Обработка потока с последовательного порта"  +/
Сообщение от Mimicus Pipicus Onanizmus on 12-Ноя-12, 09:04 
> Об виртуальной памяти я и не подумал.
> А извлекаться байты будут, видимо, в том порядке, в котором приходили.
> Ничего не потеряется, так да?

Байты сладываются в FIFO-буфер UART, размер которого обычно 16 байт.
Отсюда делайте вывод, сколько поместится и как долго будет там храниться.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Обработка потока с последовательного порта"  +/
Сообщение от pavlinux (ok) on 12-Ноя-12, 22:26 
> Об виртуальной памяти я и не подумал.
> А извлекаться байты будут, видимо, в том порядке, в котором приходили.
> Ничего не потеряется, так да?

Отец, как бы тя не обидеть, но ты ...,  в общем начни
отсюда -  http://www.sernam.ru/book_tec.php
потом сюда - http://www.kodges.ru/68824-osnovy-cifrovoj-texniki.html
потом тут - http://sdo.uspi.ru/mathem&inform/lek_10/lek_10.htm
тут - http://amigaroy.narod.ru/dmit.html и тут http://imcs.dvgu.ru/lib/eastprog/architecture.html
потом - http://www.proklondike.com/books/thalg/kormen_leiser_algorit...
Наконец сюда - http://lib.ru/CTOTOR/kernigan.txt

Можно сразу сюда, но легче не станет - http://lib.ru/CTOTOR/starterkit.txt

Ну и сюда http://www.proklondike.com/books/linux/linux_syst_prog.html

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Обработка потока с последовательного порта"  +/
Сообщение от pretender424 (ok) on 13-Ноя-12, 02:50 
Ваше желание мя обидет мне понятно. Спасибо, что таки себя побороли. Книжки хорошие. Я их читал даже. Но в них не написано то о чем я спрашивал. Признаться, думал ldd посоветуете или что-то такое. Блин, неужто и вправду такой тупой вопрос, что прям про 16 байт в уарте напоминают.


Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Обработка потока с последовательного порта"  +/
Сообщение от Alex_S (??) on 21-Ноя-12, 09:11 
> Ваше желание мя обидет мне понятно. Спасибо, что таки себя побороли. Книжки
> хорошие. Я их читал даже. Но в них не написано то
> о чем я спрашивал. Признаться, думал ldd посоветуете или что-то такое.
> Блин, неужто и вправду такой тупой вопрос, что прям про 16
> байт в уарте напоминают.

байты теряются, если их не читать - это как бы очевидно.

грубо, когда ты вызываешь read(), дергается функция из line discipline - tty layer. Которая читает из своего буфера - порядка 256 байт, хотя см флаг  tty read latency. этот буфер наполняется драйвером уарта - serial.c , когда приходит соотв. прерывание.

как-то так .

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Обработка потока с последовательного порта"  +/
Сообщение от Alex_S (??) on 21-Ноя-12, 09:13 

не хочешь терять данные - наворачивай протокол с подтверждениями


Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Обработка потока с последовательного порта"  +/
Сообщение от pavlinux (ok) on 22-Ноя-12, 01:02 
>  не хочешь терять данные - наворачивай протокол с подтверждениями

TCP/IP :)

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру