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

 
 
 
Reply to this topicStart new topic
> Проблемы с передачей данных модем Centerion BGS2
Денис198375
сообщение Aug 26 2013, 13:31
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 245



Приборы тестировались в Украине, с оператором сотовой связи «Киевстар», проблем с передачей не было.
А в России , с оператором сотовой связи «Билайн», работает не стабильно. Не всегда устанавливается соединение. Много обрывов связи в момент передачи.

Вот набор команд инициализаций соединения

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”
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 26 2013, 14:54
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Денис198375 @ Aug 26 2013, 17:31) *
Приборы тестировались в Украине, с оператором сотовой связи «Киевстар», проблем с передачей не было.
А в России , с оператором сотовой связи «Билайн», работает не стабильно. Не всегда устанавливается соединение. Много обрывов связи в момент передачи.

Периодически (порядка раз в час) бывают ошибки 616 (network is down) или 640 (operation of service temporary not allowed).
Обычно проходят самостоятельно от нескольких секунд до 2-3 минут, НО иногда все виснет наглухо и помогает только пересброс питания модема. Сам модем при этом работает: звонит, принимает звонки, уровень сигнала отличный, но не отвечает на команду AT^SISO=0.
Go to the top of the page
 
+Quote Post
viakon
сообщение Aug 27 2013, 06:46
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 290
Регистрация: 9-12-05
Из: г. Пермь
Пользователь №: 12 002



У билайна вообще есть какое-то ограничение на длительность сессии. Больше часа соединение не держится, уровень сигнала при этом отличный.. Это из моего опыта по интернету билайн через 3G модем.

BGS2 тут не причем. Наблюдаю такие же проблемы с сим900. У нас в Перми в информационных табло, заменяют сейчас симки билайн на мтс, потому как вообще просто перестает работать GPRS.
Go to the top of the page
 
+Quote Post
РЕДКИЙ
сообщение Aug 27 2013, 12:32
Сообщение #4





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-13
Пользователь №: 78 068



Для какой либо рекомендации лог желательно указать более полный.
есть необязательный параметр INACT равный по умолчанию всего 20 секунд (время неактивности и зарыв GPRS)
Для диагностики проблем TCP есть команда ^SISE

AT^sics=0,conType,GPRS0
формат подачи команд желательно использовать один регистр либо верхний либо нижний. об этом в документации написано.
AT^SICS=....
at^sics=...
Главное запомнить, каждая команда AT^SISO должна заканчиваться AT^SISC

Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 27 2013, 12:46
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(РЕДКИЙ @ Aug 27 2013, 16:32) *
Главное запомнить, каждая команда AT^SISO должна заканчиваться AT^SISC

Можно поподробней?
Если соединение разрывает сервер (которому уже нечего передавать), то AT^SISC нужен?
Go to the top of the page
 
+Quote Post
РЕДКИЙ
сообщение Aug 27 2013, 15:08
Сообщение #6





Группа: Новичок
Сообщений: 7
Регистрация: 27-08-13
Пользователь №: 78 068



читаем док 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.

Будьте добры приберитесь за собой, а то понаоткрывали тут...
Go to the top of the page
 
+Quote Post
adnega
сообщение Aug 28 2013, 05:53
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(РЕДКИЙ @ Aug 27 2013, 19:08) *
читаем док 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 и сокет открывается).
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Sep 13 2013, 06:36
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Нашёл тему по 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);


Сообщение отредактировал yanvasiij - Sep 13 2013, 07:02
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 13 2013, 08:34
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(yanvasiij @ Sep 13 2013, 10:36) *
Передаю данные по жпрсу, для чтения данных использую команду 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: , но тут в зависимости чья инициатива для закрытия сокета.
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Sep 13 2013, 09:08
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(adnega @ Sep 13 2013, 14:34) *
Насколько я понял, первый раз ^SISR: 0,1 приходит не с данными, а по факту свершения тройного рукопожатия TCP.
В дальнейшем нужно вызывать AT^SISR=0,8, модем сначала ответит OK, а затем асинхронно ^SISR: 0,8 и выдаст принятые данные.
При закрытии соединения также придет асинхронное ^SISR: , но тут в зависимости чья инициатива для закрытия сокета.

то есть я должен постоянно вызывать at^sisr и проверять есть ли данные?
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 13 2013, 10:05
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(yanvasiij @ Sep 13 2013, 13:08) *
то есть я должен постоянно вызывать at^sisr и проверять есть ли данные?

А как Вы хотели бы?
Можно конечно выставить AT^SISR=0,1500 и если в бефере на текущий момент что-то есть, то придет порция из 1500 символов.
Представьте, что модем будет слать все что приходит. Т.е. если вторая сторона отправила сначала 100 кБ, потом еще 100 кБ...
Go to the top of the page
 
+Quote Post
yanvasiij
сообщение Sep 13 2013, 10:21
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(adnega @ Sep 13 2013, 16:05) *
А как Вы хотели бы?
Можно конечно выставить AT^SISR=0,1500 и если в бефере на текущий момент что-то есть, то придет порция из 1500 символов.
Представьте, что модем будет слать все что приходит. Т.е. если вторая сторона отправила сначала 100 кБ, потом еще 100 кБ...

Нет, я не "капризничаю". Так даже удобнее, не нужно ловить асинхронные сообщения. Просто этот момент был не понятен. Спасибо за помощь!

Сообщение отредактировал yanvasiij - Sep 13 2013, 10:21
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 13 2013, 14:48
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(yanvasiij @ Sep 13 2013, 14:21) *
Нет, я не "капризничаю". Так даже удобнее, не нужно ловить асинхронные сообщения. Просто этот момент был не понятен. Спасибо за помощь!

Я в этом не уверен. Скорее и у самого нет полного понимания. Кстати, когда соединение рвет вторая сторона у меня у самого не все хорошо.
Редко, но бывает события приходят не те, которые приходят обычно. Лог как-нить могу скинуть.
Go to the top of the page
 
+Quote Post

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

 


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


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