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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Общий вопрос приема данных
M@@}{
сообщение Jan 7 2009, 08:24
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 17-08-08
Пользователь №: 39 653



Цитата(KGB @ Jan 7 2009, 04:13) *
ВАХ!!!!!1 ХОРОЩАЯ КОМПАНИЯ СОБРАЛАСЬ!!!!
главное понимаем друг друга.


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

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

Есть ли люди которые так делали или делают?
Может есть какие подводные камни?
Go to the top of the page
 
+Quote Post
KGB
сообщение Jan 7 2009, 10:05
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644



....действительно отвлеклись.
непосредствено с сим300 занимаюсь не давно....поэтому своих нароботок на эту тему мало
но наблюдения уже есть.
------------------
по инициализации...
RTS должен быть в 0. тогда модуль начинает отвечать.
------------------
проц сразу встаёт на приём и ждёт Call Ready
и только после того как это примет начинается движение самой проги.
но вот тут и начинаются затыки....
например поле АТ пытаюсь поймать ОК
а он не ловится...
тогда сделал так
АТЕ0
АТЕ0
тут тупо ставлю паузу и не ловлю ок
ОК
АТ
ОК
а вот тут после отключения эхо начинает всё пекрасно работать
ОК теперь ловится без проблем.... причём без изминений в проге.
я думаю что надо над этим ещё поработать...
---------------------------------------------

а сам приём хочу сделать так. так у меня работает в других устройствах.
цыплятся за байты типа 0D 0A не надо..
короче начинаем принимать всё подряд по прерыванию и складывать в озу
а из приёма будем выходить по отсутствию приёма какоето время
причем с конкретным результатом например 0х01
и после приёма байта будем увеличивать регистр длины на 1.
чтобы знать длину команды.
а так как модуть сам тормас ... и не выдаёт ничего во время его работы то ТХ
то прерывания мешать нам не будут.

Сообщение отредактировал KGB - Jan 7 2009, 10:11
Go to the top of the page
 
+Quote Post
M_Z
сообщение Jan 7 2009, 10:11
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Цитата(M@@}{ @ Jan 7 2009, 12:24) *
Спасибо всем за разъяснения но разговор зашел не туда, меня интересует именно первоначальный опрос (инициализация)и управление модемом. чтение данных отсылка, прием SMS.

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

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

Не всегда сообщения заканчиваются OK
бывают ERROR и так далее, поэтому ОК можно не дождаться
Есть еще варианты по тайм ауту, но там тож много гемороя.
Go to the top of the page
 
+Quote Post
KGB
сообщение Jan 7 2009, 10:32
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644



Цитата(M_Z @ Jan 7 2009, 13:11) *
Не всегда сообщения заканчиваются 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 на разные лелефоны.
позвонить другу!!!!! ну и ищё всякие мелочи..

короче просто покрутил модуль понаблюдал за ответами...
Go to the top of the page
 
+Quote Post
KGB
сообщение Jan 8 2009, 03:50
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644



Цитата(M_Z @ Jan 7 2009, 13:11) *
Есть еще варианты по тайм ауту, но там тож много гемороя.

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

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

посылаю 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 - это ОК
если совпало то даём небольшую паузу на приём остальных байт
и идём дальше....
Go to the top of the page
 
+Quote Post
M@@}{
сообщение Jan 9 2009, 12:02
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 17-08-08
Пользователь №: 39 653



Цитата(KGB @ Jan 8 2009, 08:50) *
ЭТО КАК...можно поподробней.

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

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

Цитата(KGB @ Jan 8 2009, 08:50) *
и не лету сравниваю с двумя байтами 4F 4B - это ОК
если совпало то даём небольшую паузу на приём остальных байт
и идём дальше....


А может быть после уверенного приема когда точно поймали "0D 0A" проверить что там перед ними стоит OK или ERROR
тем самым мы освободим контроллер от лишней работы, сделаем прерывание как можно короче.
Таймауты необходимы (по моему мнению) это поможет исключить долгие ответы и возможное наложение команд.

Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут).
Go to the top of the page
 
+Quote Post
M_Z
сообщение Jan 9 2009, 12:46
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 483
Регистрация: 1-09-06
Из: Гродно РБ
Пользователь №: 20 011



Цитата(M@@}{ @ Jan 9 2009, 15:02) *
А может быть после уверенного приема когда точно поймали "0D 0A" проверить что там перед ними стоит OK или ERROR
тем самым мы освободим контроллер от лишней работы, сделаем прерывание как можно короче.

возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR
Цитата(M@@}{ @ Jan 9 2009, 15:02) *
Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут).

У меня это время зависит от посланной команды. Максимальное время таймаута я использую 1минуту.
Go to the top of the page
 
+Quote Post
KGB
сообщение Jan 9 2009, 14:06
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644



Цитата(M@@}{ @ Jan 9 2009, 15:02) *
Сейчас проверил с NOKIA 6230i там нет последнего символа 01

ну ёлы палы... читать не умеем crying.gif
написаноже ...
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 - Jan 9 2009, 14:25
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 9 2009, 14:31
Сообщение #24


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(M@@}{ @ Jan 9 2009, 14:02) *
Кстати вопрос знатокам сколь времени проходит от подачи команды до получения ответа. Интересует самое длинное (дабы создать правильный таймаут).

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

У меня сейчас на отдельные команды работы с GSM сетью время ожидания ответа до двух минут.
И еще двухкратная попытка повторения команды в случае молчания. Только потом вываливаюсь по ошибке...
Go to the top of the page
 
+Quote Post
KGB
сообщение Jan 9 2009, 21:34
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644



Baser
я вот подумал.. надо сообща написать алгоритм работы с модулем...
опрос ответов... какие бывают. итд
в разных вариациях...
например не сносить же мне ближайщую соту для выяснения ответов о качестве сигнала.
есть правда и другой вариант... погрузится в машину и погонять по району... но ща зимой.. чёта не охота.. хотя машина позволяет.
у меня ест наработки... но они пока все заканчиваются на ОК
а если не ОК ???
Go to the top of the page
 
+Quote Post
KGB
сообщение Jan 10 2009, 02:02
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 21-12-08
Пользователь №: 42 644



Цитата(KGB @ Jan 10 2009, 00:34) *
Baser
я вот подумал.. надо сообща написать алгоритм работы с модулем...
опрос ответов... какие бывают. итд
в разных вариациях...
например не сносить же мне ближайщую соту для выяснения ответов о качестве сигнала.
есть правда и другой вариант... погрузится в машину и погонять по району... но ща зимой.. чёта не охота.. хотя машина позволяет.
у меня ест наработки... но они пока все заканчиваются на ОК
а если не ОК ???


ПОЛЕЗ ОПЯТЬ ЧИТАТЬ ......
У КАКЯ КОМАНДА.. облегчающая жизнь
ATV0
Go to the top of the page
 
+Quote Post
Baser
сообщение Jan 10 2009, 11:33
Сообщение #27


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



Цитата(KGB @ Jan 9 2009, 23:34) *
я вот подумал.. надо сообща написать алгоритм работы с модулем...
опрос ответов... какие бывают. итд
в разных вариациях...

Мысли вслух ?
Если хотите получить конкретный ответ - задайте конкретный вопрос smile.gif
Go to the top of the page
 
+Quote Post
M@@}{
сообщение Jan 11 2009, 18:28
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 17-08-08
Пользователь №: 39 653



Цитата(M_Z @ Jan 9 2009, 17:46) *
возможны ответы и другие, типа разрыва соединения и т. д. без ОК и ERROR

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


Ну на такой случай есть команта которая говорит статус соединения если я не ошибаюсь то "AT+CLCC"
А она уж и говорит: входящий звонок, набор номера, набрали номер идет разговор, И.Т.Д.

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



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

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

Так вот если я посылаю эту команду каждые 30 сек и в один прекрасный момент одновременно с посланной командой приходит SMS
А это +CMTI:"SM",4 так вот что я получу в ответ от модема?

Сначала ответ на посланную команду, а потом сообщение о входящем SMS, или наоборот. Возможен и 3 вариант все повалится одновременно.
А как из этого следует я потеряю SMS. <- понижение надежности устройства.
кто знает подскажите???
Go to the top of the page
 
+Quote Post
av-master
сообщение Jan 11 2009, 19:12
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 857
Регистрация: 14-05-05
Из: Украина
Пользователь №: 4 998



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

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

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

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

Сообщение отредактировал av-master - Jan 11 2009, 19:14
Go to the top of the page
 
+Quote Post
M@@}{
сообщение Jan 12 2009, 17:49
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 17-08-08
Пользователь №: 39 653



Цитата(av-master @ Jan 12 2009, 00:12) *
даже, не представляю, как контроллер может пропустить +CMTI:"SM",4
вы на чем и как пишете?

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

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

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


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

А пишу я на Си. (опыту мало, вот и задаю вопросы)
Go to the top of the page
 
+Quote Post

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

 


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


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