Jump to content

    
Sign in to follow this  
M@@}{

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

Recommended Posts

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

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

 

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

 

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

 

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

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

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

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

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

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

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

АТЕ0

АТЕ0

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

ОК

АТ

ОК

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

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

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

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

 

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

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

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

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

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

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

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

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

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

Edited by KGB

Share this post


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

 

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

 

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

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

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

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

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

Share this post


Link to post
Share on other sites
Не всегда сообщения заканчиваются 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 на разные лелефоны.

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

 

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

Share this post


Link to post
Share on other sites
Есть еще варианты по тайм ауту, но там тож много гемороя.

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

 

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

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

 

посылаю 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 - это ОК

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

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

Share this post


Link to post
Share on other sites
ЭТО КАК...можно поподробней.

 

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

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

 

посылаю 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

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

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

 

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

Share this post


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

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

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

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

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

Share this post


Link to post
Share on other sites
Сейчас проверил с 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

Edited by KGB

Share this post


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

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

 

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

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

Share this post


Link to post
Share on other sites

Baser

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites
Baser

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

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

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

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

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

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

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

 

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

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

ATV0

Share this post


Link to post
Share on other sites
я вот подумал.. надо сообща написать алгоритм работы с модулем...

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

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

Мысли вслух ?

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

Share this post


Link to post
Share on other sites
возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR

 

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

 

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

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

 

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

 

 

 

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

 

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

 

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

 

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

 

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

Edited by av-master

Share this post


Link to post
Share on other sites
даже, не представляю, как контроллер может пропустить +CMTI:"SM",4

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

 

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

 

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

 

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

 

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

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this