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

 
 
> Алгоритм получения строки с СИМХХХ
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
Палыч
сообщение Nov 22 2010, 15:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(zebrox @ Nov 22 2010, 17:51) *
если ли по \r\n обрабатывать, то можно начало следующей строки потерять (пока обрабатываешь).
Сколько времени Вам нужно, чтобы обработать строку?
Если ОЗУ не жалко, то можно использовать два буфера: в один принимается строка; как только строка принята - из первого буфера быстро переписываем во второй буфер; программа разбора строки медленно разбирает строку во втором буфере, а в это время первый буфер заполняется новой строкой... Время разбора не должно превышать времени приёма следующей строки.
Цитата(zebrox @ Nov 22 2010, 17:51) *
может можно каким то образом заставить сим делать паузу между строками, 0,5 сек например?
Можно. Используйте сигналы управления потоком.

P.S. Осторожнее с признаком конца ввода ответа: не все ответы модуля заканчиваются парой "\r\n" (например, приглашение ввода смс).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zebrox   Алгоритм получения строки с СИМХХХ   Nov 22 2010, 13:02
- - Палыч   Что-то не пойму: в чём проблема? Принимайте символ...   Nov 22 2010, 13:15
|- - rx3apf   Цитата(zebrox @ Nov 22 2010, 17:51) если ...   Nov 22 2010, 14:57
- - 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 Текстовая версия Сейчас: 29th July 2025 - 21:48
Рейтинг@Mail.ru


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