|
Telit 868. Передача данных в коммандном режиме. |
|
|
|
 |
Ответов
|
Jul 15 2011, 09:50
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 12-11-10
Из: СПБ
Пользователь №: 60 836

|
Цитата(=F8= @ Jul 14 2011, 14:14)  Пытаюсь передавать данные в командном режиме с помощью команды AT#SSEDEXT. Когда получаю в ответ вместо "OK" получаю "+CME ERROR: 563" повторяю передачу. В результате данные на стороне приема иногда дублируются. Т.е. вообще не понятно, что нужно делать получив ответ отличный от "OK". Повторяше передачу - дублируются, не повторяешь - теряются. Эта проблема вообще имеет решение? Или если нужно передать больше сотни-другой байт то только прозрачный режим? Но прозрачный режим при работе с несколькими сокетами тоже не удобно. Лог в прикрепленном файле
putty_com12.zip ( 1.15 килобайт )
Кол-во скачиваний: 108error 563: - TX error Я думаю, что это может быть связано с размером отправки. максимальное количество для отправки составляет 1024 байт для версий прошивок 7.03.02/7.02.07 и от 10.0x.xx0 до 10.0x.xx2, А для версий, начиная с 10.0x.xx3, этот размер составляет 1500 байт. Может быть пытаетесь отправить больше данных и это вызывает излишки которые теряются?
Сообщение отредактировал Telit - Jul 15 2011, 10:06
|
|
|
|
|
Jul 15 2011, 15:04
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 12-11-10
Из: СПБ
Пользователь №: 60 836

|
Цитата(molecul @ Jul 15 2011, 14:47)  GL868 меньше 10.0.183 и не бывает. А отправляется действительно 1500 байт, как видно из лога. можно попробовать увеличить тайм-аут между посылками. Из лога видим gsm: SendData() - Delay 1000 т.е. вы ставите таймаут после TX fail, попробуйте поставить таймаут между посылками и проверить теряются ли данные?
|
|
|
|
|
Jul 16 2011, 05:43
|
Знающий
   
Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954

|
Цитата(Telit @ Jul 15 2011, 18:04)  можно попробовать увеличить тайм-аут между посылками. Из лога видим gsm: SendData() - Delay 1000 т.е. вы ставите таймаут после TX fail, попробуйте поставить таймаут между посылками и проверить теряются ли данные? Пробовал. Ошибок получается меньше, но кардинального решения проблемы не дает. Ну не ставить же таймауты по 10сек? Собственно в примере я 1сек специально поставил, чтоб продемонстрировать проблему. Кстати данные не теряются, а дублируются. Как мне кажется ноги у проблемы растут от переполнения приемного буфера. Причем не буфера порта, поскольку CTS сидит в '0', а буфера сокета. С учетом, что при передаче через GPRS могут быть длительные "замирания" просто увеличением таймаутов эту проблему не решить. Было-бы неплохо если-бы Telit добавил бы команду с помощью которой можно было бы определить кол-во свободного места в буфере, чтоб не нарываться на переполнение.
|
|
|
|
|
Jul 18 2011, 12:35
|

Местный
  
Группа: Свой
Сообщений: 377
Регистрация: 12-11-10
Из: СПБ
Пользователь №: 60 836

|
Цитата(=F8= @ Jul 16 2011, 09:43)  Пробовал. Ошибок получается меньше, но кардинального решения проблемы не дает. Ну не ставить же таймауты по 10сек? Собственно в примере я 1сек специально поставил, чтоб продемонстрировать проблему. Кстати данные не теряются, а дублируются. Как мне кажется ноги у проблемы растут от переполнения приемного буфера. Причем не буфера порта, поскольку CTS сидит в '0', а буфера сокета. С учетом, что при передаче через GPRS могут быть длительные "замирания" просто увеличением таймаутов эту проблему не решить. Было-бы неплохо если-бы Telit добавил бы команду с помощью которой можно было бы определить кол-во свободного места в буфере, чтоб не нарываться на переполнение. Размер буфера 4KB, тех. поддержка советует включить hardware flow control командой AT&k3. (with RTS and CTS signal enable)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|