denis198375 0 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Приборы тестировались в Украине, с оператором сотовой связи «Киевстар», проблем с передачей не было. А в России , с оператором сотовой связи «Билайн», работает не стабильно. Не всегда устанавливается соединение. Много обрывов связи в момент передачи. Вот набор команд инициализаций соединения AT^sics=0,conType,GPRS0 AT^sics=0,passwd,beeline AT^sics=0,user, beelin AT^sics=0,apn,” internet.beeline.ru” AT^siss=1,srvType,socket AT^siss=1,conId,0 AT^siss=1,address,”socktcp:// gta.com:9090” Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 26 августа, 2013 Опубликовано 26 августа, 2013 · Жалоба Приборы тестировались в Украине, с оператором сотовой связи «Киевстар», проблем с передачей не было. А в России , с оператором сотовой связи «Билайн», работает не стабильно. Не всегда устанавливается соединение. Много обрывов связи в момент передачи. Периодически (порядка раз в час) бывают ошибки 616 (network is down) или 640 (operation of service temporary not allowed). Обычно проходят самостоятельно от нескольких секунд до 2-3 минут, НО иногда все виснет наглухо и помогает только пересброс питания модема. Сам модем при этом работает: звонит, принимает звонки, уровень сигнала отличный, но не отвечает на команду AT^SISO=0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
viakon 0 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба У билайна вообще есть какое-то ограничение на длительность сессии. Больше часа соединение не держится, уровень сигнала при этом отличный.. Это из моего опыта по интернету билайн через 3G модем. BGS2 тут не причем. Наблюдаю такие же проблемы с сим900. У нас в Перми в информационных табло, заменяют сейчас симки билайн на мтс, потому как вообще просто перестает работать GPRS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drazena 0 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба Для какой либо рекомендации лог желательно указать более полный. есть необязательный параметр INACT равный по умолчанию всего 20 секунд (время неактивности и зарыв GPRS) Для диагностики проблем TCP есть команда ^SISE AT^sics=0,conType,GPRS0 формат подачи команд желательно использовать один регистр либо верхний либо нижний. об этом в документации написано. AT^SICS=.... at^sics=... Главное запомнить, каждая команда AT^SISO должна заканчиваться AT^SISC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба Главное запомнить, каждая команда AT^SISO должна заканчиваться AT^SISC Можно поподробней? Если соединение разрывает сервер (которому уже нечего передавать), то AT^SISC нужен? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
drazena 0 27 августа, 2013 Опубликовано 27 августа, 2013 · Жалоба читаем док BGS2-E_ATC_V01.301 10.6 AT^SISO статус сервиса 6 DOWN (причину не рассматриваем) далее написано If a service in this state be sure to close it with AT^SISC before reopening it. Будьте добры приберитесь за собой, а то понаоткрывали тут... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 28 августа, 2013 Опубликовано 28 августа, 2013 · Жалоба читаем док BGS2-E_ATC_V01.301 10.6 AT^SISO статус сервиса 6 DOWN (причину не рассматриваем) далее написано If a service in this state be sure to close it with AT^SISC before reopening it. Спасибо. Попробую. Но без AT^SISC все работает годами (просто, спустя какое-то время делаю AT^SISO и сокет открывается). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yanvasilij 0 13 сентября, 2013 Опубликовано 13 сентября, 2013 (изменено) · Жалоба Нашёл тему по BGS2, поэтому пишу сюда. Передаю данные по жпрсу, для чтения данных использую команду at^sisr=0,8 (читаю по 8 символов из первого профиля). Согласно доке, если правильно понял, сигнал о том, что данные прилетели, служит асинхронно выскакивающая ^SISR: 0,1. Соединение устанавливается и, когда данные приходят, ^SISR: 0,1 выскакивает, данные читаются и обрабатываются. Но так происходит только один раз, самый первый раз. Дальше, когда данные приходят (а они точно приходят, ибо если насильно запустить at^sisr, данные можно считать), ^SISR: 0,1 НЕ выскакивает. В чем дело? Буду признателен за помощь. Кусок кода, вызываемый для обработки входящих, данных вот такой: if(uart0RxNotEmpty()==0) return; getResponseFromBgs2ByTime(buf,100); /* Прочитать есть ли данные в буфере. Запрашиваю, жду ответа TIME_TO_WAIT_COMMON и ответ ложу в buf */ if(bgs2Write("AT^SISR=0,8\r\n",13,buf,TIME_TO_WAIT_COMMON)==0) return;//100 /* Найте место, где заканчивается эхо */ while(buf[i]!='\n')i++; i++; /* если все отвалилось */ if(memCmp("^SISR: 0,-2",&buf[i],11)==0) { reconnectGprs(buf); return; } /* Считать сведения о принятых данных */ sscanf(&buf[i],"^SISR: %d,%d",&tmp,&dataLen); /* Не продолжать если данныx нет */ if(dataLen==0) return; /* Если данные есть, найти их начало */ i+=10; while(buf[i] != '\n')i++; memcpy(tmpBuf,&buf[i+1],10); /* Обработать данные */ if(processModbusMsg((unsigned char*)tmpBuf,(unsigned char*)buf,&dataLen) == 0) return; /* ответить */ memset(tmpBuf,0,100); sprintf(tmpBuf,"AT^SISW=0,%d\r\n",dataLen); sendStringToBgs2(tmpBuf,strlen(tmpBuf)); getResponseFromBgs2ByTime (tmpBuf,TIME_TO_WAIT_COMMON); sendStringToBgs2(buf,dataLen); Изменено 13 сентября, 2013 пользователем yanvasiij Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 сентября, 2013 Опубликовано 13 сентября, 2013 · Жалоба Передаю данные по жпрсу, для чтения данных использую команду at^sisr=0,8 (читаю по 8 символов из первого профиля). Согласно доке, если правильно понял, сигнал о том, что данные прилетели, служит асинхронно выскакивающая ^SISR: 0,1. Соединение устанавливается и, когда данные приходят, ^SISR: 0,1 выскакивает, данные читаются и обрабатываются. Но так происходит только один раз, самый первый раз. Дальше, когда данные приходят (а они точно приходят, ибо если насильно запустить at^sisr, данные можно считать), ^SISR: 0,1 НЕ выскакивает. В чем дело? Буду признателен за помощь. Насколько я понял, первый раз ^SISR: 0,1 приходит не с данными, а по факту свершения тройного рукопожатия TCP. В дальнейшем нужно вызывать AT^SISR=0,8, модем сначала ответит OK, а затем асинхронно ^SISR: 0,8 и выдаст принятые данные. При закрытии соединения также придет асинхронное ^SISR: , но тут в зависимости чья инициатива для закрытия сокета. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yanvasilij 0 13 сентября, 2013 Опубликовано 13 сентября, 2013 · Жалоба Насколько я понял, первый раз ^SISR: 0,1 приходит не с данными, а по факту свершения тройного рукопожатия TCP. В дальнейшем нужно вызывать AT^SISR=0,8, модем сначала ответит OK, а затем асинхронно ^SISR: 0,8 и выдаст принятые данные. При закрытии соединения также придет асинхронное ^SISR: , но тут в зависимости чья инициатива для закрытия сокета. то есть я должен постоянно вызывать at^sisr и проверять есть ли данные? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 сентября, 2013 Опубликовано 13 сентября, 2013 · Жалоба то есть я должен постоянно вызывать at^sisr и проверять есть ли данные? А как Вы хотели бы? Можно конечно выставить AT^SISR=0,1500 и если в бефере на текущий момент что-то есть, то придет порция из 1500 символов. Представьте, что модем будет слать все что приходит. Т.е. если вторая сторона отправила сначала 100 кБ, потом еще 100 кБ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
yanvasilij 0 13 сентября, 2013 Опубликовано 13 сентября, 2013 (изменено) · Жалоба А как Вы хотели бы? Можно конечно выставить AT^SISR=0,1500 и если в бефере на текущий момент что-то есть, то придет порция из 1500 символов. Представьте, что модем будет слать все что приходит. Т.е. если вторая сторона отправила сначала 100 кБ, потом еще 100 кБ... Нет, я не "капризничаю". Так даже удобнее, не нужно ловить асинхронные сообщения. Просто этот момент был не понятен. Спасибо за помощь! Изменено 13 сентября, 2013 пользователем yanvasiij Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 13 сентября, 2013 Опубликовано 13 сентября, 2013 · Жалоба Нет, я не "капризничаю". Так даже удобнее, не нужно ловить асинхронные сообщения. Просто этот момент был не понятен. Спасибо за помощь! Я в этом не уверен. Скорее и у самого нет полного понимания. Кстати, когда соединение рвет вторая сторона у меня у самого не все хорошо. Редко, но бывает события приходят не те, которые приходят обычно. Лог как-нить могу скинуть. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться