Заметка юзера virt2real

Передача файлов по UDP

видео virt2real Виртурилка железки

После того как вчера опробовал управление беспроводной камерой, вспомнил что в админке поломалось управление DSLR по USB, так что наконец-то починил и его. Теперь ещё лучше работает. Но тут встал вопрос - как полученный с внешнего фотика кадр передать на землю (т.е. в Virt2real Player).

Фотка - файл, надо передать в плеер. Файлы обычно по TCP передают, но мы не ищем лёгких путей. Тем более что в плеере у меня TCP не водится, всё на UDP. А по UDP файлы передавать тот ещё головняк. Вспомнил было про tftp, но тут же его отмёл - отдельным процессом его неинтересно запускать, а исходники ковырять - неохота. К тому же tftp хорошо работает в локалке, когда коннект нормальный, а вот в наших обычных условиях он уже не так хорошо справляется с передачей.

Погуглил на тему сабжа - нигде ничего толкового не нашёл, только вот на всех форумах где задаются подобные вопросы народ сразу начинает пальцы гнуть и вопить что "юзай TCP". А мне нафиг не сдалось каждому долбодятлу объяснять что у нас только UDP, причём как в локалке, так и через инет как проводной, так и 3G/4G, а там жопа с линком бывает, UDP теряются конкретно.

Короче, заснуть вчера не получилось - до утра просидел, упорно шкодил. К утру таки нашкодил.



Продолжение...


На борту крутится всё та же рцборда, на земле - Virt2real Player. Между ними два независимых UDP потока - видео и телеметрия. Вот как раз в канал телеметрии и добавил ещё один тип пакетов, файлики слать. Шлются хитрым способом - для оптимизации времени загрузки. Если после отправки каждого пакета (а их длина в локалке где-то вплоть до 30000 норм работает, а вот через инет уже желательно поближе к MTU, т.к. 1300-1500 байт). Так вот, если после отправки каждого пакета ждать подтверждение о приёме - эт писец долго получается. А у меня получилось что передача примерно как у BitTorrent, кусками произвольного порядка. С рекурсивной переотправкой недошедших.

Звучит сложно, но работает на ура. При том что параллельно при этом продолжают работать остальные команды (как управления, так и телеметрии) и видео, причём видео по вайфаю у меня на тестах идёт 4 мегабита. И всё равно файлик 2-х меговый принимается стабильно за несколько секунд. Пробовал и 25 мегабайт файлик передавать (RAW с зеркалки) - грузится дольше, само собой, секунд двадцать-тридцать. Если видео отключить - само собой, грузится заметно быстрее. Но главное - фото и видеофалики любого размера доходят в целости и сохранности.

Файлики складируются в локальном каталоге, по окончании приёма сразу выводятся в штатном просмотрщике.

Но, конеш, самое главное что передача идёт по имеющемуся каналу, т.е. и через P2P работает. Короче, ура.
virt2real      Суббота, 10 Января, 2015 12:12       4


Добавить комментарий
 

Гость Суббота, 10 Января, 2015 22:25 цитировать ссылка на коммент

Круто! Маладец!

 

 

Гость Суббота, 14 Февраля, 2015 13:04 цитировать ссылка на коммент

Всем привет, я хочу собрать аппарат который будет вытачивать из гипса разные штуки. Но перед началом хотел узнать, можно ли сделать так что бы при помощи ардуино этот аппарат вытачивал заранее созданные 3D модели без постоянного перепрограммирования ?

 

 

Гость Четверг, 18 Июня, 2015 22:32 цитировать ссылка на коммент

G0l, есть такая штука - UDPCast, может чем-то будет полезна https://www.udpcast.linux.lu/

 

 

Gol Среда, 24 Июня, 2015 13:30 цитировать ссылка на коммент

2 Гость:
Видел, ага. Не совсем то что нужно.

 

Сколько букв в слове Гол?

Вы вошли как Гость      

Сейчас на сайте: 1 и 6 гостей









Страница сгенерирована за 0.0016050338745117 мкс

cached