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

 
 
> Sagem HiLo
Battle-Piggy
сообщение Oct 23 2013, 07:42
Сообщение #1





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



Доброго времени суток.
Имеется GSM модуль Sagem HiLo, использующийся для отправки данных посредством gprs. Для отправки используется АТ-команда AT+KTCPSND, которая должна завершаться отправкой --EOF--Pattern-- , который переведет модуль обратно в командный режим.
Собственно проблема - после отправки данных я отправляю модулю --EOF--Pattern-- , который распознается успешно, но при этом также отправляется на серверную сторону, прилепленный к данным.
Есть какие-нибудь предложения, как избежать отправки --EOF--Pattern-- на серверную сторону?
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 28)
ssokol
сообщение Oct 23 2013, 17:38
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(Battle-Piggy @ Oct 23 2013, 11:42) *
Доброго времени суток.
Имеется GSM модуль Sagem HiLo, использующийся для отправки данных посредством gprs. Для отправки используется АТ-команда AT+KTCPSND, которая должна завершаться отправкой --EOF--Pattern-- , который переведет модуль обратно в командный режим.
Собственно проблема - после отправки данных я отправляю модулю --EOF--Pattern-- , который распознается успешно, но при этом также отправляется на серверную сторону, прилепленный к данным.
Есть какие-нибудь предложения, как избежать отправки --EOF--Pattern-- на серверную сторону?

аналогичная проблема была на визнетах, программисты "забивали костыли", но затем , втихоря, визнетовцы это пофиксили, так , что либо костыли , либо пинать разработчиков.
Go to the top of the page
 
+Quote Post
Battle-Piggy
сообщение Oct 24 2013, 06:31
Сообщение #3





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



Цитата(ssokol @ Oct 23 2013, 21:38) *
программисты "забивали костыли"


Даже не представляю, какой "костыль" можно забить в данном случае. Ребята, которые пишут серверную сторону, конечно, отсекают --EOF--Pattern-- после каждого пакета, но сие чересчур уж топорно, на мой взгляд
Go to the top of the page
 
+Quote Post
ssokol
сообщение Oct 24 2013, 07:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(Battle-Piggy @ Oct 24 2013, 10:31) *
Даже не представляю, какой "костыль" можно забить в данном случае. Ребята, которые пишут серверную сторону, конечно, отсекают --EOF--Pattern-- после каждого пакета, но сие чересчур уж топорно, на мой взгляд

Ну, вот , костыль уже и забили, теперь попытайтесь пнуть производителя, тем более если и далее планируете пользоваться этими же модулями.
Go to the top of the page
 
+Quote Post
ilya_nn
сообщение Oct 25 2013, 08:34
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-05-09
Пользователь №: 49 051



Цитата(Battle-Piggy @ Oct 23 2013, 11:42) *
Доброго времени суток.
Имеется GSM модуль Sagem HiLo, использующийся для отправки данных посредством gprs. Для отправки используется АТ-команда AT+KTCPSND, которая должна завершаться отправкой --EOF--Pattern-- , который переведет модуль обратно в командный режим.
Собственно проблема - после отправки данных я отправляю модулю --EOF--Pattern-- , который распознается успешно, но при этом также отправляется на серверную сторону, прилепленный к данным.
Есть какие-нибудь предложения, как избежать отправки --EOF--Pattern-- на серверную сторону?


Попробуйте увеличить таймаут между окончанием данных и выдачей маркера окончания посылки.

Кстати, жить модулю Sagem HiLo осталось не больше года, если есть возможность лучше найти альтернативу.
Go to the top of the page
 
+Quote Post
=F8=
сообщение Oct 25 2013, 14:52
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Уражите в команде кол-во байт которое хотите отправить - второй параметр. И если можете отказаться от этого "чуда" - откажитесь. Его встроенный стек столь чудесен, что пришлось прикручивать внешний.
PS Чтоб не создавать новую тему. Модуль работает в режиме мультиплексирования. Пытаюсь отправить смс с подтверждением о доставке. Вместо подтверждения, примерно в то время когда должно прийти подверждение получаю CME ERROR 24.
Go to the top of the page
 
+Quote Post
Battle-Piggy
сообщение Oct 28 2013, 09:26
Сообщение #7





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



Цитата(ilya_nn @ Oct 25 2013, 12:34) *
Попробуйте увеличить таймаут между окончанием данных и выдачей маркера окончания посылки.

Даже двухсекундный таймаут не дал эффекта.

Цитата(=F8= @ Oct 25 2013, 18:52) *
Уражите в команде кол-во байт которое хотите отправить - второй параметр.

Указываю согласно даташиту:
Код
AT+KTCPSND=1,18
где 1 - номер открытой сессии, 18 - количество байт для отправки ( без учета --EOF--Pattern-- )
Затем получаю от модуля:
Код
CONNECT
Отправляю 18 байт, затем отсылаю:
Код
--EOF--Pattern--
Получаю в ответ:
Код
OK
+KTCP_DATA: 1,1380

Итого на серверную сторону уходит 18 байт полезной нагрузки плюс --EOF--Pattern--


Цитата(=F8= @ Oct 25 2013, 18:52) *
Чтоб не создавать новую тему. Модуль работает в режиме мультиплексирования. Пытаюсь отправить смс с подтверждением о доставке. Вместо подтверждения, примерно в то время когда должно прийти подверждение получаю CME ERROR 24.


Согласно www.macrogroup.ru/content/data/store/images/f_931_4978_1.pdf :

Цитата
CME ERROR code 24 - Text string too long


Возможно, стоит использовать предварительно AT+CMGF=0

Сообщение отредактировал Battle-Piggy - Oct 28 2013, 09:28
Go to the top of the page
 
+Quote Post
ilya-m
сообщение Oct 28 2013, 09:57
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 30-06-08
Из: С.-Петербург
Пользователь №: 38 642



А Вы "--EOF--Pattern--", случайно, не в виде текстовой строки передаете?
Go to the top of the page
 
+Quote Post
Battle-Piggy
сообщение Oct 28 2013, 10:23
Сообщение #9





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



Цитата(ilya-m @ Oct 28 2013, 13:57) *
А Вы "--EOF--Pattern--", случайно, не в виде текстовой строки передаете?


Вы имеете ввиду, не передаю ли я после 16-ти байт "--EOF--Pattern--" еще и байт 0х00 ?
нет не передаю. При попытке прилепить после "--EOF--Pattern--" что-нибудь еще, типа '\0' или '\r' модуль просто не переходит в командный режим
Go to the top of the page
 
+Quote Post
ilya-m
сообщение Oct 28 2013, 10:42
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 30-06-08
Из: С.-Петербург
Пользователь №: 38 642



"--EOF--Pattern--" - это не должно быть 16 Байт (16 ASCII символов).
"--EOF--Pattern--" - EOF (аббревиатура англ. end of file — конец файла) в компьютерной терминологии является индикатором что достигнут конец файла (для модема это индикатор конца блока данных и команда, что передачу данных следует завершить и перейти в командный режим).
EOF - это макрос, который определён в stdio.h. Для передачи EOF в терминальных программах используется команда Ctrl+Z.
Go to the top of the page
 
+Quote Post
Battle-Piggy
сообщение Oct 28 2013, 11:28
Сообщение #11





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



Цитата(ilya-m @ Oct 28 2013, 14:42) *
"--EOF--Pattern--" - это не должно быть 16 Байт (16 ASCII символов).
"--EOF--Pattern--" - EOF (аббревиатура англ. end of file — конец файла) в компьютерной терминологии является индикатором что достигнут конец файла (для модема это индикатор конца блока данных и команда, что передачу данных следует завершить и перейти в командный режим).
EOF - это макрос, который определён в stdio.h. Для передачи EOF в терминальных программах используется команда Ctrl+Z.


EOF - это именно текстовая строка. CTRL+Z не имеет к нему никакого отношения

Прикрепленное изображение

Go to the top of the page
 
+Quote Post
kabanchik
сообщение Oct 28 2013, 11:29
Сообщение #12





Группа: Участник
Сообщений: 14
Регистрация: 15-10-13
Из: село Залупка Пястецкой губернии
Пользователь №: 78 740



Цитата(ilya-m @ Oct 28 2013, 14:42) *
"--EOF--Pattern--" - это не должно быть 16 Байт (16 ASCII символов).
"--EOF--Pattern--" - EOF (аббревиатура англ. end of file — конец файла) в компьютерной терминологии является индикатором что достигнут конец файла (для модема это индикатор конца блока данных и команда, что передачу данных следует завершить и перейти в командный режим).
EOF - это макрос, который определён в stdio.h. Для передачи EOF в терминальных программах используется команда Ctrl+Z.

ты вообще далек от темы
Go to the top of the page
 
+Quote Post
ilya-m
сообщение Oct 28 2013, 11:34
Сообщение #13


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 30-06-08
Из: С.-Петербург
Пользователь №: 38 642



Цитата(kabanchik @ Oct 28 2013, 15:29) *
ты вообще далек от темы


Извините. Действительно, с такой фишкой я в модемах раньше никогда не сталкивался.
Go to the top of the page
 
+Quote Post
kabanchik
сообщение Oct 28 2013, 11:37
Сообщение #14





Группа: Участник
Сообщений: 14
Регистрация: 15-10-13
Из: село Залупка Пястецкой губернии
Пользователь №: 78 740



ты с модемами вообще сталкивался?
погодика, дай угадаю, программист авр?!
Go to the top of the page
 
+Quote Post
ilya-m
сообщение Oct 28 2013, 11:42
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 30-06-08
Из: С.-Петербург
Пользователь №: 38 642



Цитата(kabanchik @ Oct 28 2013, 15:37) *
ты с модемами вообще сталкивался?
погодика, дай угадаю, программист авр?!

Да, приходилось, немного. За последние лет 10 около 20000 серийных изделий.
А авр не люблю.
Go to the top of the page
 
+Quote Post
kabanchik
сообщение Oct 28 2013, 11:44
Сообщение #16





Группа: Участник
Сообщений: 14
Регистрация: 15-10-13
Из: село Залупка Пястецкой губернии
Пользователь №: 78 740



если не секрет, ссылку на изделия можно?
Go to the top of the page
 
+Quote Post
ilya-m
сообщение Oct 28 2013, 11:49
Сообщение #17


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 30-06-08
Из: С.-Петербург
Пользователь №: 38 642



Цитата(kabanchik @ Oct 28 2013, 15:44) *
если не секрет, ссылку на изделия можно?

Например, Smart-Code, приложил руку ко всем, кроме mod.125 и серии SL.
Go to the top of the page
 
+Quote Post
ssokol
сообщение Oct 28 2013, 12:37
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(kabanchik @ Oct 28 2013, 15:37) *
ты с модемами вообще сталкивался?
погодика, дай угадаю, программист авр?!

те программисты авр настолько глупы, что вообще не знают что такое модем? , интересное наблюдение , но, смею вас уверить, абсолютно неправильное.
Go to the top of the page
 
+Quote Post
kabanchik
сообщение Oct 28 2013, 12:40
Сообщение #19





Группа: Участник
Сообщений: 14
Регистрация: 15-10-13
Из: село Залупка Пястецкой губернии
Пользователь №: 78 740



задел за живое?
Go to the top of the page
 
+Quote Post
ssokol
сообщение Oct 28 2013, 12:44
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(ilya-m @ Oct 28 2013, 15:42) *
А авр не люблю.

Ну и зря. Для 90-х годов очень хорошая серия была, как по цене, так и по навороченности и надежности и доставаемости. Причем, если вдруг где и сдохла, до сих пор ее можно запросто приобрести!
Go to the top of the page
 
+Quote Post
Battle-Piggy
сообщение Oct 28 2013, 12:45
Сообщение #21





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



Цитата(kabanchik @ Oct 28 2013, 16:40) *
задел за живое?

Такое чувство, что "программист авр" - это страшное ругательство. Чем можно парировать, например, : "За АВРщика ответишь"
Go to the top of the page
 
+Quote Post
ssokol
сообщение Oct 28 2013, 12:46
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(kabanchik @ Oct 28 2013, 16:40) *
задел за живое?

еще как, с авээрок моя микроконтроллерная жизнь началась, да и устройства с 90х годов на них до сих пор работают!!!
Go to the top of the page
 
+Quote Post
kabanchik
сообщение Oct 28 2013, 12:48
Сообщение #23





Группа: Участник
Сообщений: 14
Регистрация: 15-10-13
Из: село Залупка Пястецкой губернии
Пользователь №: 78 740



обычно с авр жизнь заканчивается
Go to the top of the page
 
+Quote Post
Battle-Piggy
сообщение Oct 28 2013, 12:48
Сообщение #24





Группа: Новичок
Сообщений: 7
Регистрация: 23-10-13
Из: Земля Франца и Осифа
Пользователь №: 78 858



AVR-Troll was detected!
kabanchik , сам наверное только только на AVR программировать научился

Сообщение отредактировал Battle-Piggy - Oct 28 2013, 12:49
Go to the top of the page
 
+Quote Post
kabanchik
сообщение Oct 28 2013, 12:56
Сообщение #25





Группа: Участник
Сообщений: 14
Регистрация: 15-10-13
Из: село Залупка Пястецкой губернии
Пользователь №: 78 740



программист авр - это программист в стиле:

"я твоё авр светодиод маргал"
и
"я твой авр пио нога шатал"

з.ы.
строчка в резюме по поводу авр - давай до свидания моменто море.
Go to the top of the page
 
+Quote Post
ssokol
сообщение Oct 28 2013, 16:43
Сообщение #26


Знающий
****

Группа: Свой
Сообщений: 615
Регистрация: 14-02-08
Из: г. Рыбинск, Ярославская область
Пользователь №: 35 028



Цитата(kabanchik @ Oct 28 2013, 16:56) *
программист авр - это программист в стиле:

"я твоё авр светодиод маргал"
и
"я твой авр пио нога шатал"

з.ы.
строчка в резюме по поводу авр - давай до свидания моменто море.

стало очень много программистов ARM в стиле :
купил крутой арм , скачал иар с кейлом да с либами, да вдобавок ртос какую-то,
а теперь объясните ,что такое пио, да как пио нога пошатать, да чем это посмотреть.
А строчку в резюме по поводу авров... даже уже в 2013 году попробуйте лично создать архитектуру хотя бы типа авр, а то языком все могут, а на деле... sad.gif
Ну да ладно, а то уже топикстартера достали спамом уже, сорри.
Go to the top of the page
 
+Quote Post
=F8=
сообщение Oct 29 2013, 10:16
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Посмотрел функцию отправки вот ее кусок
Код
    strcpy(p_buffer, strAT_KTCPSND);
    p_buffer += 11;
    p_buffer = i_to_a((char*)p_buffer, socket);
    *p_buffer++=',';
    p_buffer = i_to_a(p_buffer, tx_socket_counter);
    *p_buffer = 0;

    if((PutCommandToGsm(p_gsm_port->TxCmdBuffer,
                       OK_GSM_FLAG|ERR_GSM_FLAG|CME_ERR_GSM_FLAG|NO_CARRIER_GSM_FLAG|CONNECT_GSM_FLAG,
                       5000, NULL,NULL) & (OK_GSM_FLAG | CONNECT_GSM_FLAG))==0)
    {  return -1;}

   vTaskDelay(50);
  
  while(tx_socket_counter != tx_counter){// Тут отправляю данные }

  while(GetFreeBufferSize(GSM_UART_PORT) !=  GSM_TX_BUFFER_SIZE); //А вот это самое интересное, жду пока уйдет последний байт из буфера (размер буфера 1024). Видимо это было важно что-бы последующая пауза в 50 мс перед EOF была именно после того как будет передан последний байт.

  vTaskDelay(50);

  if(!PutEOF())//Отправляю EOF.
  { return -1;  }
Go to the top of the page
 
+Quote Post
ilya_nn
сообщение Oct 30 2013, 13:53
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 14-05-09
Пользователь №: 49 051



Цитата(=F8= @ Oct 25 2013, 18:52) *
Уражите в команде кол-во байт которое хотите отправить - второй параметр. И если можете отказаться от этого "чуда" - откажитесь. Его встроенный стек столь чудесен, что пришлось прикручивать внешний.
PS Чтоб не создавать новую тему. Модуль работает в режиме мультиплексирования. Пытаюсь отправить смс с подтверждением о доставке. Вместо подтверждения, примерно в то время когда должно прийти подверждение получаю CME ERROR 24.


Про стек не соглашусь - в зрелых версиях прошивки (модуль v1) все вполне работает. Мультплексирования правда не использовал.
Самая главная проблема - модуль (в России по крайней мере) на текущий момент стал экзотикой со всеми вытекающими последствиями.
Go to the top of the page
 
+Quote Post
=F8=
сообщение Oct 31 2013, 07:09
Сообщение #29


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(ilya_nn @ Oct 30 2013, 16:53) *
Про стек не соглашусь - в зрелых версиях прошивки (модуль v1) все вполне работает. Мультплексирования правда не использовал.
Самая главная проблема - модуль (в России по крайней мере) на текущий момент стал экзотикой со всеми вытекающими последствиями.


Проделайте следующий эксперемент: запускаете sagem как tcp сервер и пытаететесь подключится к нему не слишком терпеливым клиентом. Клиент посылает запрос на открытие соединения, но не дождавшись ответа сервера закрывает соединение. В таком поведении клиента нет абсолютно ничего преступного. Что должен сделать вменяемый сервер с таким полуоткрытым соединением(процедура установки соединения не закончена!!!)? - сбрость по таймауту. Что делает sagem? В лучшем случае один из сокетов остается занятым навсегда, в худшем и ч.с.х. наиболее частом - перестает вообще принимать входящие соединения.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:26
Рейтинг@Mail.ru


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