• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Прошивка TCP2UART переходника с настройкой по Web

pvvx

Активный участник сообщества
Я так понимаю, это Ваш проект. Если так, то отлично, дождемся выхода в продакшн, потестируем. Этот процесс мне нравится.
Это не моя программа - это https://yadi.sk/d/6XQP3voHfLmsc (даю сам, т.к. у источника оно теперь с вирусом - на неё орет, но есть ли он там - неизвестно).
Т.к. у меня CP2104, ему нельзя в настройках 1мс выставить...
Это "выставляет" программа терминала.
 

shaman1010

Member
Это не моя программа - это https://yadi.sk/d/6XQP3voHfLmsc (даю сам, т.к. у источника оно теперь с вирусом - на неё орет, но есть ли он там - неизвестно).
Та же байда, 1 в 1 не передает, различия видны глазами. В основном здесь пропускаются пробелы при передаче.
И терминал подобный встречал, только по-моему он на китайском был. Еще при старте продаж 8266-х, но у него больше 115200 не выставляется.
 

pvvx

Активный участник сообщества
Та же байда, 1 в 1 не передает, различия видны глазами. В основном здесь пропускаются пробелы при передаче.
И терминал подобный встречал, только по-моему он на китайском был. Еще при старте продаж 8266-х, но у него больше 115200 не выставляется.
Он и есть на китайском. Но единственный передает на UART без межсимвольной задержки в 1 ms, правда кусками, по размеру буфера для драйвера...
TCP2UART у меня на разных модулях ничего не теряет. Это проверено и сегодня и месяц назад...
 

shaman1010

Member
TCP2UART у меня на разных модулях ничего не теряет. Это проверено и сегодня и месяц назад...
Попробуйте на досуге, для чистоты эксперимента. Взять вложенный файл, перевести терминал в HEX и отправить его. Словите файл в текстовом формате, где будут вставлены принятые HEX символы. (их можно не в файл сбрасывать, а просто после приема в правом окне просмотреть, оно сдвигается, что-бы удобней было отформатировать принятый поток) В конце файла идут повторяющиеся последовательности из FF FF FF 00 по ним удобно в первом приближении отлавливать разницу глазами. У меня там есть варианты FFFF FF 00 (пропущен пробел) и другие.
Я не говорю, что это верные телодвижения для передачи бинарников, просто как обычно пытаюсь выловить баги нестандартным подходом. Практика показала, что если их вычистить там, то в обычном режиме 99,9999% устройство будет работать корректно в своей ограниченной песочнице.
Если Вам кажется, что подход к тестированию неверный - готов выслушать доводы (если есть время/желание).
Файл вложил, обычная мелкая картинка, смотреть WihHEX-ом, естественно (или чем Вы там HEX-ы смотрите, не принципиально). Полученный поток - хоть блокнотом. Просто исходник нужно смотреть HEX редактором, принятый - текстовым. И глазами ключевые места словить.

20150317032823 — копия.png
 

Вложения

JustACat

Moderator
Команда форума
Словите файл в текстовом формате
Так, стоп, а разве в текстовом режиме некоторые символы не являются управляющими и потому выбрасываются?
Потому в текстовом режиме бинарники обычно и нельзя принимать/отправлять...

Update:
Как по мне, верная процедура такая: отправляем бинарник, принимаем тоже бинарник (в бинарном режиме то есть и то и это), а затем полученные файлы сравниваем хоть по хеш-сумме, хоть тем же WinMerge (оч. советую).

Update 2:
Могу предложить свою программу, но в ней есть пара ограничений:
Передает тоже с задержками, но пакетами до 256 байт вроде... Точно не помню...
И самое главное - она передает в порт, а читает из сокета, или наоборот - передает в сокет, а читает из порта... То есть там проверяется передача именно по кругу: COM->ESP->TCP либо обратно.
Скриншот есть по первой ссылке из моей подписи.
А, еще там вроде скорости любые не выставить... 256 вроде потолок... Хотя, я не разбирался, нужно поковырять...
 
Последнее редактирование:

shaman1010

Member
Так, стоп, а разве в текстовом режиме некоторые символы не являются управляющими и потому выбрасываются?
Потому в текстовом режиме бинарники обычно и нельзя принимать/отправлять...
Вы абсолютно правы для "сферического коня в вакууме". В приложенном файле, в указанных местах нет нечитаемых символов, (исходник рассмотрен HEX-ом).
Терминал в HEX, я выше это написал. Смысл в другом, есть некая передаваемая последовательность, пусть это будут FF и нули. Они передаются с вставленными пробелами между ними. На другом терминале мы и должны увидеть 100% повторяющуюся последовательность. Если есть изменения - значит что-то по дороге потеряли. Вот и все. А бинарники передают в бинарном виде для того, что бы можно было применить коррекцию и поправить, что упустили. Плюс передача не ascii, естественно.
 

pvvx

Активный участник сообщества
Попробуйте на досуге, для чистоты эксперимента. Взять вложенный файл, перевести терминал в HEX и отправить его.
Какой терминал, какой hex? Вы предлагаете проверять глючные терминалы? :) Для начала проверьте терминал, а проще написать свой. И здесь тема не о терминалах :) :)
У вас есть CP2104. По началу соедините её с какой другой микрухой и передайте на скорости более 115200 Baud 1 Гег без ошибок. Когда удастся это сделать - пишите - я подожду (ведь полученные условия, когда это сработает, очень интересны) :)
Мир устроен гораздо проще - RS-232 не является протоколом с гарантиями передачи, при малейшем расхождении частот приемника и передатчика :p
А тут потерь нет. Они возможны только в аппаратной части и в TCP соединении, при условии контроля сигнала RTS :p Если ошибки в TCP и они не отображены в отладке - значит пора закрывать весь Инет :)
После выставления сигнала RTS данная прошивка может принять ещё 15 байт как минимум и передаст их потом, если встали из-за затыка в сети.
 
Последнее редактирование:

shaman1010

Member
Какой терминал
Вами предложенный
Внутри включается, Receive As HEX называется :)
Вы предлагаете проверять глючные терминалы? :)
Ни в коем разе, они же глючные :) Меня неглючный конвертер TCP2UART гораздо больше интересует
Для начала проверьте терминал, а проще написать свой.
Мне лично написать свой терминал явно не проще, выше писАл.
У вас есть CP2104. По началу соедините её с какой другой микрухой и передайте на скорости более 115200 Baud 1 Гег без ошибок. Когда удастся это сделать - пишите - я подожду (ведь полученные условия, когда это сработает, очень интересны) :)
Тоже об этом подумал, ближайшее время проверю. Кроме CP2104 есть еще кучка разных, на них тоже посмотрю, какой результат получается. Это вполне верное замечание.
Мир устроен гораздо проще - RS-232 не является протоколом с гарантиями передачи, при малейшем расхождении частот приемника и передатчика :p
Вы, наверное, имели ввиду не гарантирует доставку, при расхождении частот? :) Передавать устройство или будет (если ему разрешает приемник) или не будет (если приемник тормоз, или уснул). А если его еще и "слуха" лишить, то в пустоту будет тарабанить, что умалишенный, только его никто не услышит :)
А тут потерь нет. Они возможны только в аппаратной части и в TCP соединении, при условии контроля сигнала RTS :p
Ух ты, а меня в детском саду учили, что TCP-IP это протокол ГАРАНТИРОВАННОЙ ДОСТАВКИ. Не? Или садик был другой? Мы ж не по UDP работаем. Верно? :)
Если ошибки в TCP и они не отображены в отладке - значит пора закрывать весь Инет :)
Если Вы привыкли менять авто, когда пепельница заполнится, а вычистить некому - то да. Но в TCP есть свои методы борьбы с потерянными пакетами. Иначе бы киношка, скачанная в торрентах не показывала бы :)
После выставления сигнала RTS данная прошивка может принять ещё 15 байт как минимум и передаст их потом, если встали из-за затыка в сети.
Здесь что-бы дать аргументированный ответ - нужно с калькулятором посидеть. Пока не вижу в этом необходимости, ввиду ниженаписанного.

Итак, веселая полемика окончена, надеюсь. Теперь по существу.
Имеем:
1) TCPIP стек, позволяющий получить среду гарантированной доставки (не оптика, и даже не медь, но при достаточном перекрытии по скорости должны успевать набирать кольцевой буфер, разбирать на пакеты, отсылать пакеты, ретрейнить, если попросят, собирать обратно и вкладывать в выходной кольцевой)
2) Скорости контроллеров с обеих сторон, превышающие скорости передачи RS232 на порядки. Т.е. софтово будем успевать корректировать ошибки.
3) Энтузиастов, готовых вкладывать свое время в развитие интересной для них темы (это о Вас конкретно, и о тех, кто подпишется лаконично-достаточный интерфейс )
4) Энтузиастов, готовых вкладывать свое время в поиски багов, коих еще будет (это о мне и подобных)

Не имеем:
1) Возможности получить полнейшую нормальную документацию по сему "произведению искусств"
2) Достаточного количества оперативки в esp8266. (здесь я не уверен, возможно и имеем)
3) НЕ криворуких китайцев, выпускающих продукт, соответствующий заявленным характеристикам. (здесь я уверен :-D )
4) Возможности оторвать им эти самые руки :)

Что хотим:
1) Получить возможность гарантированно стабильно передаватьRS232 протокол поверх относительно нестабильной WiFi сети.

СМОГЁМ? :)

От себя готов выступить дотошным тестером. Конечный продукт мне интересен. Если параллельно будет возможность и RAW-ить со стандартных фотоприемников, так вообще красота.
 

pvvx

Активный участник сообщества
Ужо. Он прошит в вашем модуле. :) Но это не переходник TCP - RS-232, т.к. по сети не передаются состояния дополнительных линий. Для этого есть готовые специализированные проекты с драйверами, эмулирующими COM порт, в каждую операционную систему на модулях поддерживающих систему не менее OpenWRT и реализованные на линух.
И это не проект для опроса, накопления и передачи данных с датчиков. Таковой будет позже. Это просто TCP2UART для использования модуля как беспроводного удлинителя при подключении к внешним устройствам общающимся по RX-TX+RTS-CTS. Типа у вас есть устройство с выходами RS-TTL и вам надо его подключить удаленно или просто протестировать в терминале типа hypertrm.exe. Подключаете к устройству модуль с прошивкой TCP2UART и открываете на компе (или телефоне) TCP сокет (winsoket) и вперед...
От себя готов выступить дотошным тестером. Конечный продукт мне интересен. Если параллельно будет возможность и RAW-ить со стандартных фотоприемников, так вообще красота.
Проверяйте. Должно работать. У мня и нескольких других людей это работает. Остальные ещё не тестировали :)
 
Последнее редактирование:
Уважаемьій pvvx. А можно как то получить монолитньій дамп флешь со своими страницами и настройками? Сегодня продолбался несколько часов... Так и не получилось считать дамп из флешь... Даже ID не читается... Стоит защита?
 

pvvx

Активный участник сообщества
А можно как то получить монолитньій дамп флешь со своими страницами и настройками? Сегодня продолбался несколько часов... Так и не получилось считать дамп из флешь... Даже ID не читается...
http://192.168.4.1/protect/flash.bin (если записан диск с файлом protect/flash.bin)
HexDamp для просмотра (всегда):
http://192.168.4.1/web.cgi?hexdmpb0x40200000=0x80000 в bytes виде
http://192.168.4.1/web.cgi?hexdmpd0x40200000=0x80000 в dwords виде
Только не на Google Chrome - он тормоз! :) Не умеет общаться с устройствами у которых малый TCP стек :(.
Это интересно - что не читается и как поставить защиту?
Исходники пока соответствуют соседней теме. Там есть всё блоками и Web_Base2\bin\readme.txt куда и какие блоки записывать.
 
Последнее редактирование:
http://192.168.4.1/protect/flash.bin (если записан диск с файлом protect/flash.bin)
HexDamp для просмотра (всегда):
http://192.168.4.1/web.cgi?hexdmpb0x40200000=0x80000 в bytes виде
http://192.168.4.1/web.cgi?hexdmpd0x40200000=0x80000 в dwords виде
Только не на Google Chrome - он тормоз! :) Не умеет общаться с устройствами у которых малый TCP стек :(.
Это интересно - что не читается и как поставить защиту?
Исходники пока соответствуют соседней теме. Там есть всё блоками и Web_Base2\bin\readme.txt куда и какие блоки записывать.
И мне интересно :)) программатор данньіе флешки поддерживает . А ID все нули , ну и прошивка соответственно тоже :)
 

shaman1010

Member
И мне интересно :)) программатор данньіе флешки поддерживает . А ID все нули , ну и прошивка соответственно тоже :)
"Электроника - это наука о контактах. Находим, почему они есть там, где не должны быть. И почему их нет там, где должны."
Мне кажется - Ваш случай.
 

pvvx

Активный участник сообщества
Тестирование показало, что SDK 0.9.6 (b1) никуда не годится.
Выложена новая версия, на SDK 0.9.5. Она гораздо стабильнее.
 
Последнее редактирование:
"Электроника - это наука о контактах. Находим, почему они есть там, где не должны быть. И почему их нет там, где должны."
Мне кажется - Ваш случай.
Оказывается у TL866 совмещенный интерфейс ISP из интерфейсом SPI при программировании флешь ...
У меня на ISP болталась Atmega32 ))) Вот вся и проблема .
 

shaman1010

Member
Тестирование показало, что SDK 0.9.6 (b1) никуда не годится.
Выложена новая версия, на SDK 0.9.5. Она гораздо стабильнее.
Наверное я опять что-то не так тестирую :) но:
1) Проверил связку из двух CP2104+RTS+CTS в гипертерминале, на максимальной для него скорости (921600), по ZModem-у.
Перелил 40мегабайтный видеоролик в одну и другую сторону. Сравнил все три файла - идентичны.
2) Подключаю winsock с одной стороны и один из CP2104-х с другой (второй проверил тоже). RTS+CTS включил везде. Скорость даже стандартная - 115200.
Пытаюсь отправить 91 кбайтную прошивку - обрывается. Как в одну, так и в другую сторону.
Во вложении 4 скрина по п.2.

Из надцати попыток пару раз получилось-таки залить этот мелкий файл безошибочно, но...

ЧЯДНТ?

upd. в одной из следующих попыток CP2104 зафиксировал ответ от модуля (wdt, как в один из первых раз). В этот раз я даже убрал галку со 160МГц.

socket-hardware.png usb-hardware.png socket-to-usb.png usb-to-socket.pngsocket-wdt.png
 
Последнее редактирование:

pvvx

Активный участник сообщества
гипертерминале, на максимальной для него скорости (921600), по ZModem-у.
Расскажите лучше, пожалуйста, почему этот "гипер" на скорости 921600Baud передает в порт по одному символу в более 200ms:
1sec921600Baud.gif
Тогда я вам расскажу, как на нем тестировать :)
g21.gif
Я устал ждать передачи 500 кило на 921600Baud в нем :) До сих пор жду...
Вы пробовали в нем передать короткий файл в несколько байт на Zmodem? Попробуйте :)
Всё - оно передало 591кило с 0 повторов и 0 ошибок на Kermit за пол часа при скорости UART 921600...
 
Последнее редактирование:

shaman1010

Member
Расскажите лучше, пожалуйста, почему этот "гипер" на скорости 921600Baud передает в порт по одному символу в более 200ms:
...
Я устал ждать передачи 500 кило на 921600Baud в нем :) До сих пор жду...
Вы пробовали в нем передать короткий файл в несколько байт на Zmodem? Попробуйте :)
Ну что я Вам могу сказать по этому поводу?
Смотрите сами (файл 79МБ, все скорости видны )
hyper1.png
Это на двух CP2104, на 921600 и с хардварным RTS+CTS

Всё - оно передало 591кило с 0 повторов и 0 ошибок на Kermit за пол часа при скорости UART 921600...
Я надеюсь не нужно рассказывать, почему на Kermit долго, медленно и получилось? И почему я использовал ZModem?
 

pvvx

Активный участник сообщества
Ну что я Вам могу сказать по этому поводу?
Смотрите сами (файл 79МБ, все скорости видны )
Посмотреть вложение 298
Это на двух CP2104, на 921600 и с хардварным RTS+CTS


Я надеюсь не нужно рассказывать, почему на Kermit долго, медленно и получилось? И почему я использовал ZModem?
http://en.wikipedia.org/wiki/ZMODEM : В эпоху 300 бит / с модемов на весь пакет 132-байт уходило немногим более 3,5 секунд, чтобы отправить (132 байт * 8 бит на байт / 300 бит в секунду)… Я плакаль...
Давайте - рассказывайте - посмеюсь... :)
У него наверно повторы кончаются? Он устает? Или что?
 

shaman1010

Member
http://en.wikipedia.org/wiki/ZMODEM : В эпоху 300 бит / с модемов на весь пакет 132-байт уходило немногим более 3,5 секунд, чтобы отправить (132 байт * 8 бит на байт / 300 бит в секунду)… Я плакаль...
Давайте - рассказывайте - посмеюсь... :)
У него наверно повторы кончаются? Он устает? Или что?
Я Вам свой скрин для чего прикладывал? Посмотрите, там видны все скорости, размер файла, скорость обмена.
Вот здесь очень коротко и по делу о различиях.
Смейтесь...

Кстати, 80мегабайт уже перекинулись, вложил скрин настроек и скрин отчета о идентичности файлов
winmerge1.png hyper2.png
Это все на двух CP2104-х.

Продолжайте посмеиваться, и по возможности покажите на Вашем переходнике аналогичный результат, может у меня с модулем esp8266 что-то...
 
Последнее редактирование:
Сверху Снизу