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 11 18 мая, 2015 Опубликовано 18 мая, 2015 · Жалоба Пинг будет нужен еще по одной причине - некоторые операторы при отсутствии активности в соединении просто превращают соединение в черную дыру. Данные уходят в никуда хотя коннект не разорван. Поэтому если соединение постоянное, то раз в несколько десятков секунд нужно или что-то отправлять или пинговать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ISG2015 0 18 мая, 2015 Опубликовано 18 мая, 2015 (изменено) · Жалоба Пинг будет нужен еще по одной причине - некоторые операторы при отсутствии активности в соединении просто превращают соединение в черную дыру. Данные уходят в никуда хотя коннект не разорван. Поэтому если соединение постоянное, то раз в несколько десятков секунд нужно или что-то отправлять или пинговать. С периодом 20с отправлял 2е суток (UDP слот). Сейчас поставлю 60 с. Изменено 18 мая, 2015 пользователем ISG2015 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
CADiLO 11 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 11 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 11 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 байт. Ну это уже нормальненько так:) Остается надеяться, что подобного рода расклады с тарификацией и у других операторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться