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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> Есть ли классика обработки ответов от GSM модуля на стороне МК ?, Асинхронный режим, без контроля потока
vassabi
сообщение Mar 22 2013, 18:13
Сообщение #31


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

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Цитата(zebrox)
... выставляет сигнал РТЦ. После выхода, убирает.
Вы имеете ввиду RTS?
Go to the top of the page
 
+Quote Post
zebrox
сообщение Mar 22 2013, 22:23
Сообщение #32


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

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



да, ртс
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Mar 23 2013, 13:18
Сообщение #33


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

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(zebrox @ Mar 22 2013, 22:09) *
Для этого, этого использую контроль потока.
Процессок, перед проходом по "отправляющим" функциям, выставляет сигнал РТЦ.
После выхода, убирает.

Ну это скорее к отсрочке чем к отработке относится. Самое интересное это как отличить URC от ответа на команду?
Go to the top of the page
 
+Quote Post
vassabi
сообщение Mar 23 2013, 17:13
Сообщение #34


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

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Цитата(jack_avenger @ Mar 23 2013, 15:18) *
...Самое интересное это как отличить URC от ответа на команду?

По этому поводу нашел вот такую ссылку
Go to the top of the page
 
+Quote Post
zebrox
сообщение Mar 23 2013, 17:52
Сообщение #35


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

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



Честно говоря, не совсем понимаю зачем отличать юрц от ответа.
Я все строки обрабатываю по одному алгоритму, проверяю, с чего строка начинается.

Список юрц известен, просто проверяем каждую строку на начало интересующего юрц, если совпало - значит пришел юрц.
Если пришел ок или еррор или еще чего, то мы же знаем, в каком состоянии находится порт==знаем какую последнюю команду отправили, соответсвенно можем и ответ обработать.
К тому-же на 90% ответов можно сделать такую-же ловушку как на юрц, если строка начинается на что-то, значит это ответ.

Вот с запросом имея сложнее. В симах ответ идет без подстроки идентификатора. В этом случае шлю запрос имей, перевожу порт в состояние чтения имея, приходит строка, вижу, что порт в состоянии чтения имея, проверяю строку на длинну, если 15, и только цифры, то пришел имей, записываю его, отпускаю порт.
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Mar 23 2013, 18:32
Сообщение #36


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

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(vassabi @ Mar 23 2013, 21:13) *
По этому поводу нашел вот такую ссылку

Спасибо. У меня на том же принципе все построено (эхо включено и анализирую эхо команды). Из плюсов получаю на выходе TX модема следить за командами и ответами. Но вот гарантированно ли URC не вклинивается между эхом команды и результатом ее выполнения нигде в документах не нашел.
Цитата(zebrox @ Mar 23 2013, 21:52) *
Честно говоря, не совсем понимаю зачем отличать юрц от ответа.
Я все строки обрабатываю по одному алгоритму, проверяю, с чего строка начинается.

Если я правильно Вас понял то ответы у Вас парсятся обработчиком текущей команды. Так вот чтоб в каждом парсере не вылавливать все возможные URC и пригодилось бы всегда знать что мы получили: результат выполнения команды или URC.
Цитата(zebrox @ Mar 23 2013, 21:52) *
Список юрц известен, просто проверяем каждую строку на начало интересующего юрц, если совпало - значит пришел юрц.
Если пришел ок или еррор или еще чего, то мы же знаем, в каком состоянии находится порт==знаем какую последнюю команду отправили, соответсвенно можем и ответ обработать.
К тому-же на 90% ответов можно сделать такую-же ловушку как на юрц, если строка начинается на что-то, значит это ответ.
Вот с запросом имея сложнее. В симах ответ идет без подстроки идентификатора. В этом случае шлю запрос имей, перевожу порт в состояние чтения имея, приходит строка, вижу, что порт в состоянии чтения имея, проверяю строку на длинну, если 15, и только цифры, то пришел имей, записываю его, отпускаю порт.

У меня такой проблемы нет. После отправки команды модему жду (с тайм-аутом) получения эха команды. После получения эха все строки до OK, ERROR , CONNECT и др. считаются результатом выполнения команды.
Go to the top of the page
 
+Quote Post
vassabi
сообщение Mar 23 2013, 18:44
Сообщение #37


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

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Цитата(jack_avenger @ Mar 23 2013, 20:32) *
Но вот гарантированно ли URC не вклинивается между эхом команды и результатом ее выполнения нигде в документах не нашел...
....После получения эха все строки до OK, ERROR , CONNECT и др. считаются результатом выполнения команды.
Это легко проверить, имхо. Просим модем выполнить что нибудь долгое, типа GPRS соединения, и сразу не дожидаясь CONNECTа позвонить на него.
Go to the top of the page
 
+Quote Post
zebrox
сообщение Mar 23 2013, 19:55
Сообщение #38


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

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



Да нет, обработчик один, на все отведы, эха, юрц.
Я ж говорю, какая разница, что идет от сима, ответ, эхо или юрц.
Получили строку, пропустили ее через фильтры, если какой-то сработал, обрабатываем ответ в контексте состояния порта (последней команды).

например приходит ОК
В зависимости от состояния порта, вызываем тот или иной метот модуля соответствующего модуля, а он уже решит, что длеать с ним.

void ProcessOKAnswer(char who_called)
{
if(GL_GSM_STATES.UART_State == GSM_STATE_TIME_SYNCHRONISATOR)
{
TMR_ProcessAnswer(TRUE);
}
else if(GL_GSM_STATES.UART_State == GSM_STATE_VOICECALLREJECTING)
{
GSMSetUARTState(11, GSM_STATE_FREE);
}
else if(GL_GSM_STATES.UART_State == GSM_STATE_VOICECALLANSWERING)
{
GSMSetUARTState(12, GSM_STATE_VOICECALLONGOING);
GLF_SetOutgoingCallTime(1, 60);
}
}

Для меня нет никакой разницы, что за строка пришла от модема, они все обрабатываются одиннаково и в одном месте.
Если никакой фильтр не сработал на нее, ну и прекрасно, значит эта строка нас не интересует, это может быть эхо или юрц левый, что угодно.
Ловим только то, что нас интересует.
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Mar 23 2013, 19:55
Сообщение #39


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

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(vassabi @ Mar 23 2013, 22:44) *
Это легко проверить, имхо. Просим модем выполнить что нибудь долгое, типа GPRS соединения, и сразу не дожидаясь CONNECTа позвонить на него.

Проверялось, но хотелось бы убедиться в этом и документально.
Go to the top of the page
 
+Quote Post
vassabi
сообщение Mar 23 2013, 23:44
Сообщение #40


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

Группа: Свой
Сообщений: 156
Регистрация: 18-02-13
Из: Киев
Пользователь №: 75 678



Цитата(jack_avenger @ Mar 23 2013, 21:55) *
Проверялось, но хотелось бы убедиться в этом и документально.
GSM 0710, Time that a station will wait for an acknowledgement before resorting to other action, 100 milliseconds
Go to the top of the page
 
+Quote Post
jack_avenger
сообщение Mar 23 2013, 23:51
Сообщение #41


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

Группа: Свой
Сообщений: 170
Регистрация: 30-06-05
Из: Киев
Пользователь №: 6 426



Цитата(vassabi @ Mar 24 2013, 03:44) *
GSM 0710, Time that a station will wait for an acknowledgement before resorting to other action, 100 milliseconds

Думаю это что-то другое. 0710 я не использую и не планирую пока
Go to the top of the page
 
+Quote Post

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

 


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


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