Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM300DZ, передача данных
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Mingrief
Здравствуйте, уважаемые.

Проблема заключается в следующем: у двух разных GSM-операторов по разному проходит операция передачи данных.
У первого все правильно:

ATD(номер)(без ";")

CONNECT 9600
(данные)+++ATH0

NO CARRIER
ATH

OK


У второго же (МТС) вот так:

ATD(номер)(без ";")

CONNECT 9600
(данные)+++ATH0
UUUUUUUUUUяUU
ERROR


Вот эти UUUU - это 01010101010101... (0x55 0x55 ...). Что это такое, откуда берется, почему?
Искал по форуму, но ничего похожего не нашел, поэтому создаю тему (если кто уже сталкивался с этим дайте плз ссылку).

SIMCOM_Ltd
SIMCOM_SIM300D
Revision:1008B12SIM300D32_SST34HF3284
CADiLO
Не уверен что это используется оператором, но мы использовали эту последовательность для синхронизации "манчестера".
Принимая "55" или инверсные ему "АА" мы узнавали в какой фазе передавать и скорость передачи.
Mingrief
Цитата(CADiLO @ Apr 8 2008, 08:05) *
Не уверен что это используется оператором, но мы использовали эту последовательность для синхронизации "манчестера".
Принимая "55" или инверсные ему "АА" мы узнавали в какой фазе передавать и скорость передачи.
Если этот ответ не зависит от GSM-оператора, тогда откуда он берется? В описании на АТ-команды SIM300_ATC_V2.00 (кстати, впервые вижу описание без оглавления, как-то не удобно) я ничего подобного не нашел.
Простите, еще я не понял что значит "мы использовали"? Как я догадываюсь, Вы, CADiLO, имеете возможность как-то влиять на прошивку и "служебная" операция по синхронизации фазы и скорости передачи "вылезла" в ненужном месте - похоже на глюк прошивки. Поправьте меня если ошибаюсь.
CADiLO
Ответ наверняка зависит от оператора, так как по модулю нигде в описании не упоминается о возможности такой посылки.
А на предмет - "мы использовали" - так я до этой работы 12 лет участвовал в разработках нестандартной телекоммуникационной техники, вот там и использовали.....
На прошивку мы никак влиять не можем, разве что информировать об обновлениях и давать их пользователям.
stream
Цитата(Mingrief @ Apr 8 2008, 09:45) *
Проблема заключается в следующем: у двух разных GSM-операторов по разному проходит операция передачи данных.


Вот тут надо определиться: передача данных или разрыв соединения? Судя по твоему логу, второе.

Цитата
У второго же (МТС) вот так:

ATD(номер)(без ";")

CONNECT 9600
(данные)+++ATH0
UUUUUUUUUUяUU
ERROR


Вот эти UUUU - это 01010101010101... (0x55 0x55 ...). Что это такое, откуда берется, почему?


Похоже, это пучит прошивку и она выдает наружу всякий мусор. Ты ведь уже передал данные, так? И хочешь разорвать соединение? А в ответ вместо NO CARRIER всякая фигня с ERROR на конце приходит? Явно прошивка. Оператор тут чисто опосредованно - допустим, используется такой вид соединения, который в прошивке неправильно обрабатывается.

Цитата
Revision:1008B12SIM300D32_SST34HF3284


Или перешивать до победного (я не помню, что нынче последнее для "D"), либо забить и ждать в программе _любого_ ответа модема - либо 0x0A, "NO CARRIER", 0x0D - либо 0x0A, "ERROR", 0x0D. Остальное тупо игнорировать.
ChYM
Цитата(stream @ Apr 9 2008, 11:14) *
либо забить и ждать в программе _любого_ ответа модема - либо 0x0A, "NO CARRIER", 0x0D - либо 0x0A, "ERROR", 0x0D. Остальное тупо игнорировать.

Когда производство единичное можно под глюки любой прошивки подстроиться. А так кто его знает, что начнет очередной модуль выдавать в серии?
stream
Цитата(ChYM @ Apr 9 2008, 14:06) *
Когда производство единичное можно под глюки любой прошивки подстроиться. А так кто его знает, что начнет очередной модуль выдавать в серии?


К сожалению, это везде жизнь такая - безотносительно к симкому. Например, в одной софтине пришлось подстраиваться под глюки японской версии Windows - в русской и английской все было нормально.

Хочешь сделать нормальное изделие - при смене компонента делай тщательную проверку. А предложенный способ обхода хорош тем, что универсален - будет работать и с багом, и когда (если) баг исправят.
Mingrief
Спасибо всем ответившим.
Собственно так и поступил - в случае _неполучения_ правильной последовательности завершения соединения от симкома, сам прекращаю соединение +++ATH. Данные то передал-получил как положено, да и модем после еррора не виснет, работает нормально.
В новом варианте все нормально работает.
Еще раз всем спасибо и удачи!
stream
Цитата(Mingrief @ Apr 9 2008, 15:34) *
Собственно так и поступил - в случае _неполучения_ правильной последовательности завершения соединения от симкома, сам прекращаю соединение +++ATH. Данные то передал-получил как положено, да и модем после еррора не виснет, работает нормально.

Так все-таки интересно -- "+++ATH0" в логах - это что такое? Это ты посылаешь или оно само приходит из модема?

Если приходит - то у тебя и на том конце зоопарк отменный. Перед +++ пауза недостаточна, или после +++ маленькую паузу хочет.
Mingrief
Цитата(stream @ Apr 9 2008, 15:24) *
Так все-таки интересно -- "+++ATH0" в логах - это что такое? Это ты посылаешь или оно само приходит из модема?

Если приходит - то у тебя и на том конце зоопарк отменный. Перед +++ пауза недостаточна, или после +++ маленькую паузу хочет.


+++ATH0 - это с того конца прилетает, я тут влиять никак не могу.
На счет пауз сейчас замерил:
(данные от МК в SIM300DZ)
(пауза около 3с)
+++ATH0 (одним пакетом от SIM300DZ)
(пауза 0,7с)
NO CARRIER (от SIM300DZ)
(нет паузы)
ATH (от МК)
(пауза 5мс)
OK (от SIM300DZ)
shb
Тот конец работает неправильно. После +++ должен быть командный режим а он остается в реж. передачи данных. Поэтому он не реагирует на ATH0 а передает команду на этот конец как просто данные. В этом случае конечно чудеса могут быть.
Harbinger
Цитата(shb @ Apr 10 2008, 08:01) *
Тот конец работает неправильно. После +++ должен быть командный режим а он остается в реж. передачи данных.

Кстати, кто в курсе - как заставить виндовый дозвонщик корректно завершать соединение? Подсматривал сниффером - не шлёт он плюсы! В .inf-файле драйвера пробовал прописать, но там после них перед ATH паузу непонятно как ставить. Каким образом оно работает (соединение все же завершается после +++ATH, без паузы) - науке неизвестно.

HKR, Hangup, 1,, "+++<cr>ATH<cr>" - вот здесь вместо первого <cr> нужно как-то паузу влепить...
edo
проще всего распаять dtr и сказать модему at&d1 - я думаю дропать dtr винда умеет.
ChYM
Цитата(edo @ Apr 10 2008, 14:26) *
проще всего распаять dtr и сказать модему at&d1 - я думаю дропать dtr винда умеет.

SimCom c DTR-ом как раз и не дружит. У меня нормально отрабатывает только +++ и затем АТН0, а c &D1 и &D2 пока добиться от нескольких модулей нормальной реакции на DTR не удалось
shb
Если не распаять DTR то разрыв соединения Виндовс происходить долго (наверно по таймауту). А при наличии DTR разрыв мгновенный. Это я про SIM300 и SIM300D. Так что зря вы про дружбу DTR и SIMCOM. Что нельзя сказать про SIM600. Но нам присылали прошивку на SIM600 в которой DTR работает. Но не будем же мы перепрошивать каждый модуль.
ChYM
Цитата(shb @ Apr 11 2008, 06:16) *
Но не будем же мы перепрошивать каждый модуль.


Вот эксперименты с Sim300C_Z (последняя прошивка) с разными установками реакции на DTR

AT&D0 - по даташиту TA ignores status on DTR
OK - ответ модуля
ATD80955835928 - набираем номер
CONNECT 9600 - законнектились
/?! - запрос прибору на той стороне
/ELV431970 UT4X V2.3 - получение данных
+++ - попытка перехода в командный режим
OK - получилось
ATH0 - теперь положим трубку
OK - снова получилось

AT&D1 - ON->OFF on DTR: Change to command mode with remaining the connected call
OK
ATD80955835928 - набираем номер
CONNECT 9600 - законнектились
/?! - запрос прибору на той стороне
/ELV431970 UT4X V2.3 - получение данных
OK - ответ на снятие сигнала DTR (которого быть не должно!!!! сигнал DCD модуль также убрал )
ATH0 - командуем положить трубку
OK - успешное завершение

AT&D2 - ON->OFF on DTR: Disconnect call, change to command mode.
OK - ответ модуля
ATD80955835928 - набираем номер
CONNECT 9600 - законнектились
/?! - запрос прибору на той стороне
/ELV431970 UT4X V2.3 - получение данных
ERROR - ответ на снятие сигнала DTR (после приличной задержки)

Посмотрим что за ошибка?
AT+CEER
+CEER: Auto Disconnect Timer Expired
OK

Только программный способ разъединения срабатывает
=F8=
Цитата(ChYM @ Apr 11 2008, 09:24) *
Только программный способ разъединения срабатывает


Из того что Вы написали видно, что с DTR симком живет вполне нормально smile.gif
Harbinger
Цитата(edo @ Apr 10 2008, 14:26) *
проще всего распаять dtr и сказать модему at&d1 - я думаю дропать dtr винда умеет.

Да поздно уже, девайс давно в серии и модем у него - не основная функция. Разве что в новой версии "железа".
stream
Цитата(ChYM @ Apr 11 2008, 10:24) *
Вот эксперименты с Sim300C_Z (последняя прошивка) с разными установками реакции на DTR

Судя по написанному, &D0 работает как надо, &D1 - немного неправильно, &D2 - совсем неправильно.

При &D1 модем должен выдать OK после падения DTR - тут все нормально. А вот DCD гасить не стоило.

В &D2, понятно, никаких ERROR быть не должно - нужно было разорвать связь, убрать DCD и сказать OK. Налицо серьезная лажа.

Но в целом &D1 вполне себе пригоден для разрыва связи, чтобы не трахаться с +++. Убрал DTR, подождал OK и смело говори ATH. Это стандартная процедура для любого модема.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.