QUOTE (butthead2 @ Nov 22 2011, 13:17)

Пардон, затупил на ночь глядя.
А если попробовать выгребать меньшими кусками?
SRING: 1,1000
AT#SRECV=1,30
Кусками по 100 байт выгребается без ошибок. НО... Клеит вместе все пришедшие за время выгребания UDP датаграммы.
Например паравозиком приходит команда устройству (62 байта) и подтверждение пакета данных отправленного серверу (6 байт)
CODE
SRING: 1,62
SRING: 1,68
AT#SRECV=1,100
#SRECV: 1,68
<68 пар hex digits>
OK
Имеем 2 склеенные датаграммы, по сути обе потерянные. Телит однозначно считает UDP сокет потоковым. За что им "большое спасибо".
Да, я мог бы сам мониторить сколько пришло, сколько я уже выгреб и определять границы датаграмм по количествам данных в буффере, передаваемом в SRING. Если бы не было фокусов с URC, которые могут:
a) вклиниться в эхо передаваемой контроллером команды
CODE
AT#
SRING: 2,10
SSENDEXT=2,22
>
(это была команда AT#SSENDEXT=2,22 на которую наложился приход данных по 2 сокету)
б) вынести совсем эхо передаваемой команды и вместо него влезть
CODE
AT
OK
SRING: 1,6
>
(здесь было AT чтобы проверить что модем отвечает нормально после паузы в обмене и потом AT#SSENDEXT - судя по промпту команда принялась, вот только у меня то код ждет эхо...
в) взаимоуничтожиться в эхом передаваемой команды.
(выглядит аналогично предыдущему, только еще и URC исчезает).
За последние 3 недели я насмотрелся на это вдосталь.
Приходится констатировать, что работа с TCP/IP стеком в командном режиме сделана на уровне курсача, сданного на "троечку". Для использования в текущем виде непригодно.
Так как у меня делается устройство под обкатанный и в тысячах устройств используемый протокол, а не протокол под то что можно физически сделать на Телите, я в ОЧЕНЬ больших раздумьях.
QUOTE (=F8= @ Nov 22 2011, 19:44)

Командный режим у телита ни к черту не годится. Там грабли на граблях. Из-за чего использую только прозрачный режим, вот с ним проблем нет.
Я не вижу метода как в онлайн режиме оперативно работать с двумя UDP сокетами одновременно. Да и с одним то как то тяжко.
Если работаешь в TCP и используешь модем просто как прозрачный канал - тогда да, это решение.