Перейти к содержанию
    

Общий вопрос приема данных

ВАХ!!!!!1 ХОРОЩАЯ КОМПАНИЯ СОБРАЛАСЬ!!!!

главное понимаем друг друга.

 

Спасибо всем за разъяснения но разговор зашел не туда, меня интересует именно первоначальный опрос (инициализация)и управление модемом. чтение данных отсылка, прием SMS.

 

Я тоже использую первый способ, но на днях меня осенило что второй способ лучше т.к. ответ принимается целиком а не по строкам. Так удобнее искать данные(все в одной строке) а не в нескольких ( сколько не изветно )

 

Есть ли люди которые так делали или делают?

Может есть какие подводные камни?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

....действительно отвлеклись.

непосредствено с сим300 занимаюсь не давно....поэтому своих нароботок на эту тему мало

но наблюдения уже есть.

------------------

по инициализации...

RTS должен быть в 0. тогда модуль начинает отвечать.

------------------

проц сразу встаёт на приём и ждёт Call Ready

и только после того как это примет начинается движение самой проги.

но вот тут и начинаются затыки....

например поле АТ пытаюсь поймать ОК

а он не ловится...

тогда сделал так

АТЕ0

АТЕ0

тут тупо ставлю паузу и не ловлю ок

ОК

АТ

ОК

а вот тут после отключения эхо начинает всё пекрасно работать

ОК теперь ловится без проблем.... причём без изминений в проге.

я думаю что надо над этим ещё поработать...

---------------------------------------------

 

а сам приём хочу сделать так. так у меня работает в других устройствах.

цыплятся за байты типа 0D 0A не надо..

короче начинаем принимать всё подряд по прерыванию и складывать в озу

а из приёма будем выходить по отсутствию приёма какоето время

причем с конкретным результатом например 0х01

и после приёма байта будем увеличивать регистр длины на 1.

чтобы знать длину команды.

а так как модуть сам тормас ... и не выдаёт ничего во время его работы то ТХ

то прерывания мешать нам не будут.

Изменено пользователем KGB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем за разъяснения но разговор зашел не туда, меня интересует именно первоначальный опрос (инициализация)и управление модемом. чтение данных отсылка, прием SMS.

 

Я тоже использую первый способ, но на днях меня осенило что второй способ лучше т.к. ответ принимается целиком а не по строкам. Так удобнее искать данные(все в одной строке) а не в нескольких ( сколько не изветно )

 

Есть ли люди которые так делали или делают?

Может есть какие подводные камни?

Не всегда сообщения заканчиваются OK

бывают ERROR и так далее, поэтому ОК можно не дождаться

Есть еще варианты по тайм ауту, но там тож много гемороя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не всегда сообщения заканчиваются OK

бывают ERROR и так далее, поэтому ОК можно не дождаться

я с тобой согласен

но ок я ловил там где заведомо знаю что получу его

 

AT

;AT+CMGF=1

;AT+CSCS="UCS2"

например в таких

 

AT+CMGF=1

OK

AT+CMGS="+7903ххххххх"

а тут я например ловлю 0х22 (это ") и начинаю потом всё грузить в озу пока не появится опять 0х22

так у меня номер из первой ячейки озу переселяется в озу проца.

 

готовых устройств я на сим300 ещё раз повторяю я ещё не делал

это всё у меня пока прверяется в связке стк500 + SIM300C_EVB_V2.01

пока изучаем доки проводим экспкременты...

получилось поработать с инетом..

сконектится с сервером... по отправлять на него байтики..

там эти байтики попринимать

поотправлять смс по русски нажатием на кнопки на стк500 на разные лелефоны.

позвонить другу!!!!! ну и ищё всякие мелочи..

 

короче просто покрутил модуль понаблюдал за ответами...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть еще варианты по тайм ауту, но там тож много гемороя.

ЭТО КАК...можно поподробней.

 

-----------------------------------------

короче позанимался я с приёмом....

 

посылаю ATE0

принимаю

41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёма

байта , если не дождолась его... и по 01 я знаю что это конец сообщения

ловить по 0D 0A не вижу смысла так как они встречаются несколько раз

и .. или можем принять сразу несколько строк !!!! (это неболшое достоинство)

 

посылаю AT

 

принимаю

0D 0A 4F 4B 0D 0A 01

 

и не лету сравниваю с двумя байтами 4F 4B - это ОК

если совпало то даём небольшую паузу на приём остальных байт

и идём дальше....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ЭТО КАК...можно поподробней.

 

-----------------------------------------

короче позанимался я с приёмом....

 

посылаю ATE0

принимаю

41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёма

байта , если не дождолась его... и по 01 я знаю что это конец сообщения

ловить по 0D 0A не вижу смысла так как они встречаются несколько раз

и .. или можем принять сразу несколько строк !!!! (это неболшое достоинство)

 

посылаю AT

 

принимаю

0D 0A 4F 4B 0D 0A 01

 

Сейчас проверил с NOKIA 6230i там нет последнего символа 01

 

и не лету сравниваю с двумя байтами 4F 4B - это ОК

если совпало то даём небольшую паузу на приём остальных байт

и идём дальше....

 

А может быть после уверенного приема когда точно поймали "0D 0A" проверить что там перед ними стоит OK или ERROR

тем самым мы освободим контроллер от лишней работы, сделаем прерывание как можно короче.

Таймауты необходимы (по моему мнению) это поможет исключить долгие ответы и возможное наложение команд.

 

Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А может быть после уверенного приема когда точно поймали "0D 0A" проверить что там перед ними стоит OK или ERROR

тем самым мы освободим контроллер от лишней работы, сделаем прерывание как можно короче.

возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR

Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут).

У меня это время зависит от посланной команды. Максимальное время таймаута я использую 1минуту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас проверил с NOKIA 6230i там нет последнего символа 01

ну ёлы палы... читать не умеем :crying:

написаноже ...

41 54 45 30 0D 0D 0A 4F 4B 0D 0A 01 <-этот последний байт дописывает ПП приёмабайта

а ПП .. это под программа.. если ктото не знает.

 

типа сделано так... если на пике -

если таймаут то RETLW 0X01

 

есле на авр то типа..

LDI R16,0X01

RET

------------------------

тоесть если байт у нас НЕ принят то выходим из ПП с заведомо извесным результатом по которуму и узнаём что это конец приёма!!!!!!

 

 

--------------------------------------------------------

ну это для очень умных

--------------------------------------------------------

;----------------------------

RX_232_B:

ldi Temp,0xFE ;

out TCNT1H,Temp ; грузим содержимое в регистр таймер-счетчика TMR1

ldi Temp,0x00

out TCNT1L,Temp ; грузим содержимое в регистр таймер-счетчика TMR1

 

ldi temp,(1<<TOV1)

out TIFR,Temp ; стираем Флаг прерывания TOV1 по переполнению TMR1

RX_232_STB:

sbis PIND,2 ; ловим перепад с 1 в 0....

rjmp RXB_232 ; если дождлись старт бита то идём читаь байт

 

in Temp,TIFR

sbrs Temp,TOV1 ; по TOV1 проверяем небыло ли переполнения TMR1

 

rjmp RX_232_STB ; если его небыло ждём старт бит дальше

 

ldi BUF,0x01 ; если не дождались старт бита то выходим с результатом 0хХХ

ret

;----------------------------

 

RX_232_C:

;---------------------------------------------------

sbic PIND,2 ; ловим перепад с 1 в 0

rjmp RX_232_B ;

sbic PIND,2 ; ловим перепад с 1 в 0

rjmp RX_232_B ;

sbic PIND,2 ; ловим перепад с 1 в 0

rjmp RX_232_B ; три раза типа защита от дребезга!!!

nop

;---------------------------------------------------

 

RXB_232:

clr BUF

и тут сам приём байта....

 

-----------------

я надеюсьпо тексту доглдались что ВХОДОВ в ПП у меня три RX_232_А: RX_232_B: и RX_232_С:

первые одинаковые разница тока в загрузке таймера...

а третий... будет ждать до посинения... пока не придёт перепад с 1 в 0

Изменено пользователем KGB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут).

http://electronix.ru/forum/index.php?s=&am...st&p=390286

 

У меня сейчас на отдельные команды работы с GSM сетью время ожидания ответа до двух минут.

И еще двухкратная попытка повторения команды в случае молчания. Только потом вываливаюсь по ошибке...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Baser

я вот подумал.. надо сообща написать алгоритм работы с модулем...

опрос ответов... какие бывают. итд

в разных вариациях...

например не сносить же мне ближайщую соту для выяснения ответов о качестве сигнала.

есть правда и другой вариант... погрузится в машину и погонять по району... но ща зимой.. чёта не охота.. хотя машина позволяет.

у меня ест наработки... но они пока все заканчиваются на ОК

а если не ОК ???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Baser

я вот подумал.. надо сообща написать алгоритм работы с модулем...

опрос ответов... какие бывают. итд

в разных вариациях...

например не сносить же мне ближайщую соту для выяснения ответов о качестве сигнала.

есть правда и другой вариант... погрузится в машину и погонять по району... но ща зимой.. чёта не охота.. хотя машина позволяет.

у меня ест наработки... но они пока все заканчиваются на ОК

а если не ОК ???

 

ПОЛЕЗ ОПЯТЬ ЧИТАТЬ ......

У КАКЯ КОМАНДА.. облегчающая жизнь

ATV0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я вот подумал.. надо сообща написать алгоритм работы с модулем...

опрос ответов... какие бывают. итд

в разных вариациях...

Мысли вслух ?

Если хотите получить конкретный ответ - задайте конкретный вопрос :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR

 

У меня это время зависит от посланной команды. Максимальное время таймаута я использую 1минуту.

 

Ну на такой случай есть команта которая говорит статус соединения если я не ошибаюсь то "AT+CLCC"

А она уж и говорит: входящий звонок, набор номера, набрали номер идет разговор, И.Т.Д.

 

Можно этой командой каждые 30 сек долбить модем.

 

 

 

Меня тут еще такой вопрос заинтересовал.

 

Допустим для работы устройства (контроллер) необходимо знать зарегистрирован ли модем в сети это команда "AT+CREG"

 

Так вот если я посылаю эту команду каждые 30 сек и в один прекрасный момент одновременно с посланной командой приходит SMS

А это +CMTI:"SM",4 так вот что я получу в ответ от модема?

 

Сначала ответ на посланную команду, а потом сообщение о входящем SMS, или наоборот. Возможен и 3 вариант все повалится одновременно.

А как из этого следует я потеряю SMS. <- понижение надежности устройства.

кто знает подскажите???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

даже, не представляю, как контроллер может пропустить +CMTI:"SM",4

вы на чем и как пишете?

 

у меня еще небыло случая чтоб модем не выдал сообщение, а когда, до или после, не столь важно.

 

поэксперементируйте на входящем вызове....

 

а долбить модем cregam-i пробовал и по 3 секунды, не виснет.

Изменено пользователем av-master

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

даже, не представляю, как контроллер может пропустить +CMTI:"SM",4

вы на чем и как пишете?

 

у меня еще небыло случая чтоб модем не выдал сообщение, а когда, до или после, не столь важно.

 

поэксперементируйте на входящем вызове....

 

а долбить модем cregam-i пробовал и по 3 секунды, не виснет.

 

Я хотел спросить, как модем себя поведет если ему через RS232 идет одна команда, а от сети оператора сообщение и все это одновременно.

Что я увижу в окне терминала? Нужно ли мне ожидать конкретный ответ, на посланную команду или есть возможность что в ответе придет еще что-нибудь( например +CMTI:"SM",4), а потом ответ. Как мне писать обработчик, на что надеятся.

 

А пишу я на Си. (опыту мало, вот и задаю вопросы)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...