SIM900(B), звонок в режиме передачи данных (CSD), скорость передачи в 2-3 раза ниже нормы, большая латентность. Имеем 2 штуки SIM900B. Звоним с одного на другой в режиме предачи данных (ATD+79111234567<CR>). На другом говорим ATS0=1 и после CONNECT 9600 начинаем работу... Тот с которого звоним подключен к компьютеру. Второй в приборе внутри которого что-то типа BBS.
Во-первых вывод алфавитно-цифровой информации в терминал. Экран заполняется медленее, чем следовало бы ожидать от телефонного модема на 9600 (субъективно конечно...) По ощущениям 4800.
Во-вторых дикая латентность эхо-ответов (нажимаем кнопку, через секунду видим букву, хуже чем через GPRS).
В-третьих X-modem... В режиме +IFC=0,0 работает только X-modem с 128-байтными блоками (понятно почему), работает очень медленно, даже скорость не оценивал. Xmodem-1K работает только при настройке +IFC=2,2 (RTS/CTS контроль потока) на передающей стороне. Так в принципе и должно быть (но странно, что при +IFC=0,0 на приём передающей стороны начинает валиться какой-то якобы-принимаемый мусор -- подозрение что в модеме при переполнении буфера что-то нарушается в передаче данных).
Но это не принципиально. Принципиально достигнутая скорость передачи данных: 343 байта в секунду по итогам передачи 240-килобайтного файла. Теоретически должно быть 9600/10*0.8 ~= 800 байт/сек. 10 -- бит в байте (явно с запасом для V.42bis), 0.8 -- КПД протокола X-modem. И телефонные модемы давали такую цифру в своё время. WTF???
На приём примерно то же самое: 262144 байт BPS:354. Файл содержит рандомные данные (не одни нули, плохо сжимается).
То-есть скорость по меньшей мере _вдвое_ ниже той, которая должна быть. Файл не за 12 минут, а за 6 минут должен передаваться. Если в файле 262 блока то задержка на эхо составит те же 262 секунды, примерно 5 минут... А если там больше секунды -- в принципе, может быть, что всё дело только в большой латентности.
Как быть дальше. Можно ли уменьшить латентность?
[ZX]
AT+CBST=? +CBST: (0,7,71),(0),(1)Т.е. transparent mode (ноль на конце) не выбрать. А для non-transparent вот есть команда:
AT+CRLP=? +CRLP: (0-61),(0-61),(44-255),(1-255),(0),(7) AT+CRLP? +CRLP: 61,61,48,6,0,7Можно ли здесь что-то подкрутить? Кажется, что нет... Как быть дальше? Имеет ли смысл пытаться пробовать Y-modem или проще сразу переходить к embedded Kermit? При передаче и туда и оттуда были единичные (пара штук) ошибки и переповторы. Не представляю с чем связанные. Интересно, почему? При передаче через провода, при болев высоких скоростях, без flow control, обычно ошибок нет.