gegel 0 17 мая, 2015 Опубликовано 17 мая, 2015 · Жалоба А зачем пинговать 8.8.8.8 Дело в том, что нет доверия к самому GSM-модулю: внутренний стек или GPRS может глюкнуть, тест состояния будет ОК, но пакеты не будут даже выходить. Контроллер будет считать, что умер сервер, и ждать, ситуация зациклиться. Если же после нескольких неудачных попыток получить ответ сервера пробовать пинговать что-то гарантийно работающее, то сразу ясно: причина в модуле или в сервере. И если в модуле, то можно перезапустить. Причем 8.8.8.8 можно даже не пинговать, а отсылать в 51 порт UDP-пакет с DNS-запросом доменного имени, заведенного для вашего сервера, а по получению UDP-ответа парсить датаграмму и извлечь IP. Сам запрос шаблонный: захватите снифером с РС и запишите в виде сonst в контроллер. С поиском IP в ответе сложнее: он не по фиксированному смещению, и есть два варианта упаковки. Если не лень, посмотрите мой ассемблерный код по ссылке выше и переведите на С. Или, лучше, почитайте rfc по DNS и напишите парсер сами. Таким образом, убиваете сразу двух зайцев: убеждаетесь, что модуль не висит, и получаете новый IP сервера, если он изменился. Т.е. можно даже поднять сервер на динамическом IP c использованием DynDNS (правда, он сейчас полностью платный стал). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ISG2015 0 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба GeGeL, спасибо за советы. Да, может и стек в симкоме глюкнуть, и GPRS. Контроллер может ошибочно считатьчто умер сервер. Пингуя 8.8.8.8 (или не пингуя а запрашивая адрес, как Вы описали) можно убедиться в том что именно "висит", но при всем при этом выход из ситуации только один: перезагрузка модуля. Но пинговать 8.8.8.8 безусловно может оказаться полезно, так как перегружать модуть бесконечно нет смысла. Нужно обдумать логику работы модуля, особенно если учесть, что у меня 2 SIM-карты. Сейчас озадачился написанием "стека" АТ команд для модема. Как я погляжу народ все делает на задержках (функции Delay под различными соусами), но я думаю это не айс. Не хочется изобретать велосипед, но чувствую, что буду вынужден) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 9 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Пинг будет нужен еще по одной причине - некоторые операторы при отсутствии активности в соединении просто превращают соединение в черную дыру. Данные уходят в никуда хотя коннект не разорван. Поэтому если соединение постоянное, то раз в несколько десятков секунд нужно или что-то отправлять или пинговать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ISG2015 0 18 мая, 2015 Опубликовано 18 мая, 2015 (изменено) · Жалоба Пинг будет нужен еще по одной причине - некоторые операторы при отсутствии активности в соединении просто превращают соединение в черную дыру. Данные уходят в никуда хотя коннект не разорван. Поэтому если соединение постоянное, то раз в несколько десятков секунд нужно или что-то отправлять или пинговать. С периодом 20с отправлял 2е суток (UDP слот). Сейчас поставлю 60 с. Изменено 18 мая, 2015 пользователем ISG2015 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 9 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Думаю что перепроверить с разным временем лучший выход. У нас, у Киевстара, нет такого глюка, а у Лайфа - 3-5 минут нет данных и все - большой шанс отправить "в никуда" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ISG2015 0 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Поставил на компьютер программу снифер/анализатор сетев. протоколов "Wireshark". Отправляю по UDP 1 байт. Получаю: "Frame Length: 60 bytes (480 bits)" о_О Таким образом, отправляя на сервер пакетик раз в 5 минут и получая на него ответ (контроль канала) я в месяц попадаю на 1 Мбайт :( Что-то жирновастенько учитывая что мне бы хотелось чаще мониторить железку и канал связи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
holy0dmin 0 18 мая, 2015 Опубликовано 18 мая, 2015 (изменено) · Жалоба Так провайдер тарифицирует трафик на 3 уровне, весь фрейм отбрасывается ещё на оборудовании оператора, остается только внутренность IP-пакета. Хотя, этот момент я бы уточнил у оператора, но весь фрейм 2 уровня целиком уж точно никто не тарифицирует. А вообще, у многих провайдеров есть нетарифицируемые ресурсы. Напрмиер, Яндекс-Карты у Мегафона. Можно их опинговывать. Или можно попробовать непосредственный шлюз провайдера, биллинг может стоят за ним. Изменено 18 мая, 2015 пользователем p_kav Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gegel 0 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Получаю: "Frame Length: 60 bytes (480 bits)" Это проблема Ethernet - кадр дополняется нулями. В вашем случае внутреннего стека GSM-модуля оверхед будет 24 байта на пакет (на IP+UDP заголовки). Раньше они тарифицировались, сейчас не могу сказать, тем более по каждому оператору. я в месяц попадаю на 1 Мбайт Что-то жирновастенько Эдуард, это то, о чем я писал. :crying: И это только начало... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ISG2015 0 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Эдуард? о_О С Лайфом договорился, обещают завтра помочь с доступом к билинговой системе. Вот там и посмотрю ,что именно тарифицируется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 9 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба >>> Эдуард? о_О Да. А шо? :) Как мне сказал начальник Кемеровского ОРТПЦ - Днепропетровца узнать легко - "шо", "га" и "тю" одновременно в лексиконе есть только там. К сожалению это наша действительность - волкИ хотят "еды". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gegel 0 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Эдуард Это была реплика к CADiLO в продолжение нашей старой дискуссии. :rolleyes: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Radik_1983 0 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба Сейчас озадачился написанием "стека" АТ команд для модема. Как я погляжу народ все делает на задержках (функции Delay под различными соусами), но я думаю это не айс. Не хочется изобретать велосипед, но чувствую, что буду вынужден) Правильно думаете. Велосипед давно придуман - switch, описывающий состояния автомата. На Delay делают первокурсники - тошно видеть такое от многоопытных дядек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
holy0dmin 0 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба То есть отправляем команду, и ждем пока не получим OK или не истечет таймаут, а дальше анализируем вывод команды или обрабатываем ситуацию таймаута? А как реализуют обработку незапрошенного вывода? Например, модуль выводит текст длинного SMS, и в этот момент на него позвонили и он выводит RING прямо в середине текста, как это обрабатывают многоопытные дядьки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 9 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба AT+GSMBUSY=1 -прочесть SMS AT+GSMBUSY=0 это так - навскидку.... второй вариант завести RI на контроллер, а URC RING отключить AT+CFGRI кстати интересный момент - надо будет специально проверить я что-то не видел чтобы в текст SMS вклинивались URC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ISG2015 0 19 мая, 2015 Опубликовано 19 мая, 2015 · Жалоба Сегодня таки выяснил какие накладные расходы на передачу 1 байта поверх сетей GSM (Life Украина) по технологии GPRS: 8 байт на UDP заголовки и 20 байт на IP. Итого 28 байт. Ну это уже нормальненько так:) Остается надеяться, что подобного рода расклады с тарификацией и у других операторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться