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

 
 
> Алгоритм получения строки с СИМХХХ
zebrox
сообщение Nov 22 2010, 13:02
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838



Всем привет.
Может вопрос глупый конечено, и никакой проблемы нет.

Есть вопрос такого плана.
Как правильно получать строку (ответа) от сима.
\r\nMessage\r\n

Я вижу два возможных варианта.

Вариант 1.
1.При первом прерывании от юарта, уходим в него, выключаем прерывания, выставляем флаг пришедьших данных, выходим из прерывания.
2.В основном цикле, если видим флаг читаем строку, и обрабатываем ее (тут получается небольшая проблема, т.к. нужно делать некий автомат состояний и нужно постоянно помнить какое было последнее сообщение). После обработки сообщения включаем прерывания от юарта.

Вариан 2, извращенный smile.gif
1.При первом прерывании от юарта, получаем символ, записываем в буффер, запускаем таймер на 0.4сек скажем.
2.при следующем прерывании от юарта (до истечения таймера), записываем следующий символ в буффер, перезапускаем таймер.
3.так делаем до тех пор, пока таймер 0,4 сек не истечет или буфер не заполнится.
4.Когда таймер истек, имеем в буффере все сообщение от сима, обрабатываем его.

А как Вы получаете данные с сима?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zebrox
сообщение Nov 22 2010, 14:51
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 121
Регистрация: 17-04-09
Пользователь №: 47 838



если ли по \r\n обрабатывать, то можно начало следующей строки потерять (пока обрабатываешь).
может можно каким то образом заставить сим делать паузу между строками, 0,5 сек например?
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Nov 22 2010, 14:57
Сообщение #3


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(zebrox @ Nov 22 2010, 17:51) *
если ли по \r\n обрабатывать, то можно начало следующей строки потерять (пока обрабатываешь).
может можно каким то образом заставить сим делать паузу между строками, 0,5 сек например?

Используйте буфер достаточного размера и правильные установки порогов для управления потоком, с тем, чтобы обрабатываемая строка заведомо помещалась в буфер и не перекрывалась поступающими данными в процессе обработки. Никаких сложностей, на самом деле...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zebrox   Алгоритм получения строки с СИМХХХ   Nov 22 2010, 13:02
- - Палыч   Что-то не пойму: в чём проблема? Принимайте символ...   Nov 22 2010, 13:15
|- - Палыч   Цитата(zebrox @ Nov 22 2010, 17:51) если ...   Nov 22 2010, 15:40
- - zebrox   А какие правильные установки порогов управления по...   Nov 22 2010, 15:11
- - skripach   Цитатаесли ли по \r\n обрабатывать, то м...   Nov 22 2010, 15:16
- - zebrox   пока я это смутно представляю. правилен ли следую...   Nov 22 2010, 15:44
|- - rx3apf   Цитата(zebrox @ Nov 22 2010, 18:44) пока ...   Nov 22 2010, 16:00
- - zebrox   ок, если паузу установить нельзя, тогда вопрос по ...   Nov 22 2010, 16:00
|- - rx3apf   Цитата(zebrox @ Nov 22 2010, 19:00) Прави...   Nov 22 2010, 16:03
- - zebrox   Ок, товарищ из третьего района, спасибо большое т...   Nov 22 2010, 16:09
|- - rx3apf   Цитата(zebrox @ Nov 22 2010, 19:09) тольк...   Nov 22 2010, 16:27
- - ArtemKAD   ЦитатаRTS-выставляем когда проц готов получать дан...   Nov 22 2010, 17:46
- - MKdemiurg   А не проще без прерывания принимать по флагу приём...   Nov 22 2010, 18:21
|- - M_Z   Цитата(MKdemiurg @ Nov 22 2010, 22:21) А ...   Nov 22 2010, 18:36
- - MKdemiurg   А если линейная программа , направлена ТОЛЬКО на п...   Nov 23 2010, 07:13
- - andrewlekar   Я делал так, что по прерыванию заполняется буфер, ...   Nov 23 2010, 08:06
- - mempfis_   Цитата(zebrox @ Nov 22 2010, 17:02) А как...   Nov 23 2010, 15:35
- - Alechek   Цитата(mempfis_ @ Nov 23 2010, 21:35) При...   Nov 25 2010, 13:39
- - mempfis_   Цитата(Alechek @ Nov 25 2010, 17:39) Ну з...   Nov 25 2010, 14:00


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

 


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


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