Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SIM800C отправка файлов
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Mysteo
Здравствуйте! Не могу нормально отправить файл на почту , файлы размером 18 - 30 килобайт, обязательно всегда пропадает 4 либо 6 байт, куда они деваются не понятно.

Сначала думал что микроконтроллер ерундит, начал смотреть процесс обмена МК - SIM800C там все чисто без ошибок.

Потом подрубил SIM800C через FT232RL к ПК , взял файл картинку 30 килобайт, начал осуществлять отправку

AT+SAPBR=3,1,"CONTYPE","GPRS"
AT+SAPBR=3,1,"APN","mts.internet.ru"
AT+SAPBR=3,1,"USER","mts"
AT+SAPBR=3,1,"PWD","mts"
AT+SAPBR=1,1

AT+EMAILSSL=1
AT+EMAILCID=1
AT+EMAILTO=30
AT+SMTPSRV="smtp.mail.ru",465
AT+SMTPAUTH=1,"email","password"
AT+SMTPFROM="killfrag2@mail.ru","test"

AT+SMTPRCPT=0,0,"killfrag2@mail.ru","test"
AT+SMTPSUB="Test"
AT+SMTPBODY=5
12345
AT+SMTPFILE=1,"test.jpg",0

AT+SMTPSEND

ну и тут как обычно
приходит ответ
+SMTPFT: 1,1360

отправляю
AT+SMTPFT=1024

ответ: +SMTPFT: 1,1024

отправляю 1024 байт

и так далее весь файл в итоге приходит письмо с файлом но всегда не хватает нескольких байт...
у кого нибудь была такая проблема?


Revision:1418B07SIM800C24_BT
CADiLO
Есть предположение.
Протокол SMTP не передает бинарники, должна происходить перекодировка в base64 и обратно.
Для выполнения условий base64, блок который перекодируется должен быть кратен 3 - думаю что вот от этого и нужно плясать.

http://cdo.bseu.by/library/ibs1/applic_l/format/base64.htm

Нужно попробовать подвигать длину файла на пару байт и посмотреть будет ли теряться.
Дополню - попробовать передавать блоками кратными трем - например не 1024, а 1023 (341*3)


И второе - самому перекодировать бинарник в base64, передавать как текст, а на выходе собирать его обратно.
Mysteo
Понял, попробую, я так и подумал, что скорее всего придётся с base64 пробовать, вообще данные передаются правильно, но несколько пакетов теряют начальные два байта
serglg
не совсем по теме вопрос.
Просто не видел примеров работы с SMTP в последний год.
Именно с SIM800C я пробовал отправить письмо (просто текст, без файла) с mail.ru на mail.ru.
Все командные строки один к одному как у ТС.
Но после AT+SMTPSEND вместо "1" обычно "65".
А вот через сервер ngs.ru (порт 25, без SSL) всё нормально.
У меня неправильная прошивка SIM800C? Не поддерживает SSL?
Mysteo
Для включения ssl выполните

AT+EMAILSSL=1
serglg
Цитата(Mysteo @ Oct 4 2017, 10:46) *
Для включения ssl выполните

AT+EMAILSSL=1


Так само собой, конечно выполнялось.
Может у меня не та версия прошивки?



CADiLO
В 1418B04SIM800C32_BT нет SSL.
Перешивайтесь на версию без BT или лучше на универсальную - 1418B08SIM800C32_BT_EAT ( S2-10688-Z1L1J )
Mysteo
Сейчас буду эксперементировать дальше с отправкой файлов, думаю может мне тоже повысить версию с 1418B07SIM800C24_BT до B08

Пока заметил что если просто отправлять отдельными файлами по 1024 байт то все ок.....
CADiLO
>>>думаю может мне тоже повысить версию с 1418B07SIM800C24_BT до B08

Нет смысла - в B08 было только одно исправление
1. Fixed the bug that the phone number is not right when the phone number type is 208
Так что ждем следующую версию.


>>>Пока заметил что если просто отправлять отдельными файлами по 1024 байт то все ок.....

Там явно что-то с перекодированием или склейкой.....
Mysteo
Файл размером 4 килобайта , пакетами 4 x 1024 тоже передался без потерь, сейчас буду увеличивать
serglg
Цитата(CADiLO @ Oct 4 2017, 13:43) *
В 1418B04SIM800C32_BT нет SSL.
Перешивайтесь на версию без BT или лучше на универсальную - 1418B08SIM800C32_BT_EAT ( S2-10688-Z1L1J )


Каким образом? Я могу это сделать самостоятельно?
У меня это всё в модуле SIM800C V4.2.3
Наружу 4 контакта - +5, GND, RX, TX.
Похож вот на этот, но чуть другая разводка:

http://www.gyomall.com/product/sim800c-mod...ally-available/

Mysteo
И так, 4 килобайта передался без потерь байт, но есть не верные байты , сейчас передал файл размером 6634 байт
из них 5 байт передались не верно , проблемы вместо 0x0D в файле 0x0A , также вместо 0x0A может быть 0x0D
вместо 0x28 0x38 .......

хотя по идее когда смотрел логи обмена данными то там все чисто и UART передавал верные данные без ошибок...
сейчас уменьшу скорость и посмотрю как будет , если не поможет, попробую передать так как вы писали выше

serqlq

создайте лучше тему по прошивке дабы в этой не оффтопить

на сайте симком скачиваете прошивку, там уже будет утилита для прошивки, в даташите смотрите как прошить через UART
у меня такая же плата как и у вас , не очень она удобная для отладки, нет выводов многих, например PWRKey и UART криво разведен

Уменьшил скорость до 57600 ошибки остались....

сейчас передам MMS , чтобы исключить вину UART
CADiLO
>>>Каким образом? Я могу это сделать самостоятельно?

На родном сайте SIMCOM прошивок нет, официалы их не выкладывают в открытый доступ.
А за то что гуляет по сети мы ответственности не несем.

Поэтому пишите запрос в техподдержку своим дистрибьюторам:

Россия - "МТ-систем" - http://mt-system.ru/

Украина - "ГАММА" - http://www.microchip.ua/

В 99% случаев получите прошивку + прогу + инструкцию.
serglg
Цитата(CADiLO @ Oct 4 2017, 15:11) *
>>>Каким образом? Я могу это сделать самостоятельно?

На родном сайте SIMCOM прошивок нет, официалы их не выкладывают в открытый доступ.
А за то что гуляет по сети мы ответственности не несем.

Поэтому пишите запрос в техподдержку своим дистрибьюторам:

Россия - "МТ-систем" - http://mt-system.ru/

Украина - "ГАММА" - http://www.microchip.ua/

В 99% случаев получите прошивку + прогу + инструкцию.


Спасибо.
Mysteo
Какая то чертовщина, месяц назад передавал MMS , проблем не было никаких с картинками, сейчас такая же история и с MMS не все байты в конечном файле....... некоторые не правильные , скорости разные, что за ерунда..... :-(
сейчас буду прошивать SIM800C
CADiLO
А если по очереди сменить почтовик и оператора?
И проверить с другими.
Mysteo
Да почтовик тут точно не причем, потому что щас в MMS не хватало 6 байт....
щас еще раз MMS отправить попробую..... потом с другого модема отправлю, а потом с другой симки
Mysteo
Кажется нашёл причину, что то с UART, когда передаётся большой пакет данных разом возникает ошибка, использовал ch340g преобразоваьель, были косяки, взял другой были косяки, взял ft232rl ммс передалась без проблем три раза подряд с большим файлом
Симки менял, не помогает. Это точно уарт барахлит

Завтра попробую через ft почту передать
CADiLO
А CH340 напрямую на модуль цепляли или согласовывали уровни?
Mysteo
модули у меня на платке с али, там согласование через транзистор сделано как по даташиту, но вот только там они зачем то на vdd ext завели питание от sim, завтра буду переделывать, вообще что на ft что на ch и на МК 3.3 В уровни
CADiLO
>>>вообще что на ft что на ch и на МК 3.3 В уровни

Срочно даташит в руки и смотрим что никаких 3.3 на модуле не должно быть

Номинал 2.8, а максимум 3.0

Если платка согласовывает - хорошо. Если нет, то ... паяльник вам в помощь.
Mysteo
Да я в курсе что там не должно быть
вот такое там согласование , только вместо VDD_EXT завели питание SIM800C


Завтра буду дальше разбираться , если время позволит, так как это мое хобби всего лишь (

CADiLO
нет картинки... sad.gif
Mysteo
Ну как из даташита через транзистор
Mysteo
Если при включенном режиме ATE1 отправить файл по уарт, то по идее я должен буду увидеть , что принимает SIM ? отправляю и там много байтов не хватает, кто нибудь может попробовать такой эксперимент сделать ?

И еще у меня не воспринимает команду AT+ICF

В общем пока обнаружено 2 момента:

1. файлы почты пока как не отправлял так и не отправляет нормально...

2. mms нормально отправляет через FT232RL , через CH340 нет.... сегодня попробую MMS через МК отправить.

Сейчас буду пробовать не по 1024 байт пакеты отправлять а по 1023
Mysteo
Отправил почтовый файл пакетами по 1023 байт, как CaDiLo советовал в начале темы, не помогло, почему-то вместо некоторых 0x0d в файле появляются 0x0a
сейчас попробую поменять почтовый сервер

Достал 3 штуки из своих запасов SIM900D, там такие же проблемы с отправкой почты, почтовый сервер сменил толку нет. Значит надо заморачиваться с BASE64
Mysteo
Забил на отправку файлов через почту, пока что шлю все в ftp ....

Как записать файл в корневой каталог не пойму?

если использую


AT+FTPPUTPATH="/"

то возвращает ошибку 77 operate error при заливке файла

если
AT+FTPPUTPATH=""

возвращает ERROR

На фтп сервере загрузка в корневой каталог разрешена





Андрей190
Цитата(Mysteo @ Oct 9 2017, 15:38) *
если использую


AT+FTPPUTPATH="/"

то возвращает ошибку 77 operate error при заливке файла

если
AT+FTPPUTPATH=""

возвращает ERROR

На фтп сервере загрузка в корневой каталог разрешена


попробуйте AT+FTPPUTPATH="//"
Mysteo
AT+FTPPUTPATH="//" тоже не помогло
Андрей190
Цитата(Mysteo @ Oct 10 2017, 11:30) *
AT+FTPPUTPATH="//" тоже не помогло


у меня работает
AT+SAPBR=3,1,"CONTYPE","GPRS"....OK..
AT+SAPBR=3,1,"APN","internet.mts.ru"....OK..
AT+SAPBR=3,1,"USER","mts"....OK..
AT+SAPBR=3,1,"PWD","mts"....OK..
AT+SAPBR=1,1....OK..
AT+FTPCID=1....OK..
AT+FTPSERV="12.34.56.78"....OK..
AT+FTPUN="xyz"....OK..
AT+FTPPW="123"....OK..
AT+FTPPUTNAME="1234.txt"....OK..
AT+FTPPUTPATH="//"....OK..
AT+FTPPUTOPT="APPE"....OK..
.......

файл как положено появляется на сервере

Mysteo
Странно, ну мне это особо и не надо, просто интересно было, почему-то не работает запись в корень.....

Возможно вы используете APPE а я STOR, чем эти режимы отличаются мне не понятно, первое это вроде как добавление файла, а последнее хранение, что по сути одно и тоже

У меня новая проблема, между отправками пакетов файла должна быть какая то задержка ?
Вот например :

начало цикла
AT+FTPPUT=2,1024
жду ответ модуля
обрабатываю ответ модуля
отправляю пакет данных
жду ответ
обрабатываю ответ
переход в начало цикла

Если перед переходом в начало цикла не сделать задержку 200 мс , то часто после отправки пакета данных вместо Ок , Error приходит, приходится пакет заново отправлять, не понятно откуда вылазит эта ошибка, к тому же она не всегда появляется а из 50 пакетов может 4 или 5 с ошибкой, но если задержку ставить то ошибок нет никакх
Mysteo
Так я и не понял почему возникает ошибка, это какая-то особенность FTP что ли ?

Отправлял файлы по почте пакетами , всегда после отправки пакета возвращалось OK , задержек между отправками не было никаких.
А при отправке файла через FTP , если не выставлять задержку между пакетами может ERROR после передачи последнего байта пакета вылезти...
CADiLO
Сталкивался с проблемами если FTP на .nix серверах
На WIN проблем не было. По крайней мере там где тестировал.
Никсовые сервера отвечали не на все команды, поэтому приходилось лезть терминалкой и смотреть чего там недособрали.
Mysteo
Сервак на Ubuntu заведен ..... завтра еще на другой железке попробую запустить

Вот сейчас снова словил глюк при передаче файла, после отправки очередного пакета ответ от модуля вообще не пришел, и на AT команды вообще не реагировал никак, что-то его вводит в ступор

Еще заметил, что если после отправки последнего байта пакета возвращается ошибка , то ответ +FTPPUT: 1,1,1360 приходит с задержкой 1.8 секунды, иногда 3 секунды, подумал на качество GPRS соединения, но оно отличное, так как файлы на почту уходят мгновенно, в общем буду разбираться с сервером FTP

Попробовал передать файл через режим EXTPUT , отправил сразу весь файл целиком проблем нет никаких, что то серверу не нравится при передаче данных пакетами, Вы были правы, завтра заведу сервер на WIN и посмотрю как он себя поведет
Самоделкин
Цитата(CADiLO @ Oct 12 2017, 13:46) *
Сталкивался с проблемами если FTP на .nix серверах
На WIN проблем не было. По крайней мере там где тестировал.
Никсовые сервера отвечали не на все команды, поэтому приходилось лезть терминалкой и смотреть чего там недособрали.

Для экономии времени . Проверял SIM900R, SIM800C,SIM800L,SIM800H - и на WIN и на Ubuntu и на других .
Проблем с FTP при передаче не было. Правда 1360 байт за раз не отправлял - не было необходимости.
Опять же когда AT+ FTPPUT =1 ответ модема ОК сразу ответ сервера через время .
Подозреваю что все дело в настройках FTP . Там куча настроек(параметров) которые модем использует по умолчанию .
Типа порт 21 итд.
Для связи с сервером попробуйте использовать любой FTP клиент который ведет лог обмена.
Сразу увидите сколько еще параметров нужно при обмене и модем их шлет по умолчанию за Вас .

Mysteo
Попробую другой сервер установить, а пакеты у меня по 1024, да тоже чувствую что то с на стороне сервера барахлит, потому что бывает если при загрузки ответа возникает ошибка, то запрос на очередной пакет может с 5 сек задержкой придти. И такая проблема как на Ubuntu сервере vsftpd, и через роутер встроенный фтп поднимал тоже самое, однако на Ubuntu всегда в конце передачи файла 65 ошибка возникала, и файл все равно успешно грузился, то на встроенном в роутер сервере в конце передачи приходил успешный ответ
serglg
Как я понял, успешной передачи файла в письме так и нет?
У меня тоже как странно портится содержимое файла.
Если один и тот же текстовый массив передаю в теле письма или в приложенном файле - получается по разному.
И содержимое и размер текста отличаются.

Mysteo
serglg

В SMTP бинарники нормально не передаются по этой причине. В BASE64 разбираться не стал и перешел на загрузку файлов по FTP.
Попробуйте выполнить то что писал CADiLO , лично я выполнял только вот этот пункт результата не было
"Нужно попробовать подвигать длину файла на пару байт и посмотреть будет ли теряться.
Дополню - попробовать передавать блоками кратными трем - например не 1024, а 1023 (341*3)"

Цитата(CADiLO @ Oct 3 2017, 16:24) *
Протокол SMTP не передает бинарники, должна происходить перекодировка в base64 и обратно.
Для выполнения условий base64, блок который перекодируется должен быть кратен 3 - думаю что вот от этого и нужно плясать.

http://cdo.bseu.by/library/ibs1/applic_l/format/base64.htm

Нужно попробовать подвигать длину файла на пару байт и посмотреть будет ли теряться.
Дополню - попробовать передавать блоками кратными трем - например не 1024, а 1023 (341*3)


И второе - самому перекодировать бинарник в base64, передавать как текст, а на выходе собирать его обратно.
serglg
Цитата(Mysteo @ Dec 11 2017, 12:26) *
serglg

В SMTP бинарники нормально не передаются по этой причине. В BASE64 разбираться не стал и перешел на загрузку файлов по FTP.
Попробуйте выполнить то что писал CADiLO , лично я выполнял только вот этот пункт результата не было
"Нужно попробовать подвигать длину файла на пару байт и посмотреть будет ли теряться.
Дополню - попробовать передавать блоками кратными трем - например не 1024, а 1023 (341*3)"


Да у меня текстовые файлы. Правда внутри есть символы табуляции (0х09) для их возможного открытия Экселем.
В принципе погонял разные размеры и как-то всё успокоилось.
Но было до того несколько раз, что символы внутри файла подменялись на мусор.
Для меня самое странное, что когда аналогичные тексты передавал в теле письма - ничего даже однократно не было.
Mysteo
Если только ASCII то проблем никогда не замечал.
serglg
Цитата(Mysteo @ Dec 13 2017, 13:03) *
Если только ASCII то проблем никогда не замечал.


Да, пока повторения той порчи не было.
Может это происходило при отладке, при ненормированных остановках в момент подачи АТ-команд.
Ладно, будем смотреть. :-)
Mysteo
Всем привет! Кто-нибудь может помочь объяснить как загружать файлы через http на сервер ?
Адрес сервера вот 77.108.229.234:808
Mysteo
Я так понимаю надо возиться c AT+HTTPPARA и понимать специфику POST запросов , но раньше с этим не сталкивался, подсказать тоже не кому
Mysteo
Нашел страницу с примером, но что такое BoundaryValue для меня пока загадка http://www.raviyp.com/embedded/194-sim900-...ll=&start=1
Mysteo
Все разобрался как отправлять, установил HTTP Debugger Pro
Посмотрел как через браузер заполняется HEaders и Content и тоже самое повторил через SIM800
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.