LINUX.ORG.RU

Портирование проекта MS Visual Studio в линукс


0

2

Всем доброго времени суток! Вопрос к линух гуру - есть довольно большой проект, который разрабатывался под Windows 7 в среде MS Visual Studio, по сути - проприетарная система видеонаблюдения. На разработку ушло около года.

Сейчас начальство требует приложение переписать под Linux, т.к. на компьютеры вместо Win7 будет ставиться Debian.

В никсах есть небольшой опыт работы во FreeBSD (настройка как сетевого шлюза), немного работал в RedHat. Но программированием, тем более с выводом графики (motion jpeg с камер видеонаблюдения) в никсах никогда не занимался. В Visual Studio всё просто, куча библиотек и стандартных элементов, накидал и пошел писать специфические для данного приложения вещи, а как с этим в линуксе? Каждый элемент управления писать с нуля? Бррр...

Подскажите пжл с чего начать и вообще насколько трудозатратен такой переход?


проект на C#, C++? были использованы MFC или что другое?

Каждый элемент управления писать с нуля? Бррр...


почитай про Qt - возможно после этого, вспоминая VS будешь говорить «бррр» :)

ahonimous
()
Ответ на: комментарий от ahonimous

Проект на C#, MFC не использовал Спасибо, почитаю.. Вопрос еще как сделать отображение видео без запуска оконного менеджера? По сути компьютер не компьютер, а просто ящик с монитором, на котором 5 кнопок (power и 4 кнопки режима) и кроме отображения видео в одном из 4 режимов он ничего не делает.

Xuch
() автор топика

>Сейчас начальство требует приложение переписать под Linux, т.к. на компьютеры вместо Win7 будет ставиться Debian.

Дай Бог каждому такого начальства :)

k0l0b0k ★★
()
Ответ на: комментарий от k0l0b0k

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

Xuch
() автор топика
Ответ на: комментарий от ahonimous

> т.е. без X-ов? тот же Qt умеет работать с фреймбуфером:

Да, лучше без иксов.. Вопрос только насколько это будет эффективным. Поток по 15 фреймов в секунду одновременно с 4 камер потянет? Я правильно понимаю, что Qt for embedded я могу поставить на машину с любым линуксом, даже не embedded?

Xuch
() автор топика
Ответ на: комментарий от Xuch

> Я правильно понимаю, что Qt for embedded я могу поставить на машину с любым линуксом, даже не embedded?

да, вроде даже есть стандартный пример с фреймбуфером

Поток по 15 фреймов в секунду одновременно с 4 камер потянет?


не знаю

ahonimous
()

Проще будет, наверное, с нуля переписать. :( Посмотрите в сторону motion - это система видеонаблюдения под Linux. Может быть будет проще добавить туда нужные вам функции и использовать. Правда, чтобы продать на сторону нужно будет исходники открыть.

Artem_Korneev
()

>В никсах есть небольшой опыт работы во FreeBSD (настройка как сетевого шлюза), немного работал в RedHat.

В Visual Studio всё просто

Тебя уволят. И правильно сделают.

Led ★★★☆☆
()

Такая резкая миграция целого проекта - жесть, поэтому по началу веселья у вас будет не мало. Но в любом случае советую не бросаться сразу бой, а очень хорошо проанализировать, какие библиотеки нужны, итп. Про Mono уже упомянули. Ещё помнится, не так давно тут проскакивала новость про то, как RedHat какой-то огромный проект с C# перевела на Java с помощью автоматизированных средств, если найду ссылку, выложу.

runtime ★★★★
()
Ответ на: комментарий от Xuch

Если без X - то лучше посмотри в сторону DirectFB
Бинды для C#/Mono где-то валялись

k0l0b0k ★★
()
Ответ на: комментарий от Led

> Тебя уволят. И правильно сделают.

Язык тебе да пальчики поотрубают, и правильно сделают.

Danmer ★★
()
Ответ на: комментарий от Xuch

Посмотри конфиги для xinit. По умолчанию там запускается xterm без wm'а, соответственно xterm можно заменить на свое приложение.

Reset ★★★★★
()
Ответ на: комментарий от Xuch

Проект на C#

Ну может быть mono спасет. Если для вывода использовался dx, то надо будет переделывать, например, на opengl 1.4. С ноля, если вообще ни бум бум в теме, то это месяца два. Если вывод многопоточный, то еще месяц. Итого только 3 месяца уйдет на вывод видео, а как там с GUI пойдет не знаю, зависит от того насколько ты погряз в венде.

Reset ★★★★★
()

> Каждый элемент управления писать с нуля?
Давно так не смеялся, расскажите уже кто-нибудь пациенту про Qt и про кросс-платформенную разработку.

PayableOnDeath
()

Если на C#, посмотри в сторону mono. Это конечно, по многим причинам не очень хорошая штука, но в данном случае, видимо, лучший вариант. Для вывода на экран почитай про DirectFB. Да, вероятно, это довольно трудозатратно, но вполне возможно.

А вобще, какое правильное начальство :)

Viglim
()
Ответ на: комментарий от Viglim

>А вобще, какое правильное начальство :)

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

dimon555 ★★★★★
()
Ответ на: комментарий от Viglim

>А вобще, какое правильное начальство :)
Ага, правильное. Как узнают в какое говно они ввязались и на какие деньги влетают, после того, как какая нибудь аппаратура не сможет работать в линуксе, сразу назад вернутся.

anotheranonymous
()
Ответ на: комментарий от Viglim

>гавноппаратуре, не работающей в линуксе, место на свалке.
99% железа по твоему теперь - говно? Линуксоиды, такие линуксоиды. Вылезай уже из своей страны фей, дурашка.

anotheranonymous
()
Ответ на: комментарий от anotheranonymous

Про 99% сам придумал? Большая часть оборудования нормально поддерживается в линуксе. Но перед покупкой лучше убедиться в совместимости.

Artem_Korneev
()
Ответ на: комментарий от anotheranonymous

А что, всякие wi-fi уже заняли 99% рынка железа? На самом деле 20%, хотя с другой стороны да, даже 1% - проблема. В любом случае не Microsoft же пишет все эти драйвера. Просто Linus и компания тупят и никак не могут понять, что stable API - это никакое не non sence. Из-за сраного wi-fi пришлось на ноут, с которого сейчас и пишу, ставить Windows 7. А работать в ней - попа та еще, даже рабочих столов не прикрутишь, одни глючные, наколенные поделки, городящие костыли в обход стандартного поведения WM.

PayableOnDeath
()

>Портирование проекта MS Visual Studio в линукс

Мой тебе совет — портируй его сразу в корзину.

И впредь приучайся работать на нормальных инструментах.

anonymous
()
Ответ на: комментарий от anonymous

Очевидно, портированию в корзину подлежит MSVS.

Viglim
()

У меня вопрос: если там коробочка с четырьмя кнопками, что там такого понакручено, что целый год писать?

с чего начать

С поиска опытного разработчика под unix-подобные системы. Мне кажется, у тебя слишком дофига времени уйдёт на то, чтобы войти в тему.

и вообще насколько трудозатратен такой переход?

От трех месяцев до полугода.

anonymous
()
Ответ на: комментарий от Artem_Korneev

А смысл? Я на этом ноуте обычно не работаю. Просто сейчас десктоп «временно не доступен». Можно чуть-чуть и потерпеть, но, если не решится с десктопом, то да, в выходные займусь.

PayableOnDeath
()

а что за программа то? ссылку дашь на поглядеть?

Pantserovik
()

Не знаю, что у вас за видеосистема, но один тот факт, что в линуксе видеокамеры (если для них, конечно, имеется драйвер) вполне могут сразу привязаться на /dev/video и для видеозахвата не требуется ковырять VfW, WIA или DirectShow, уже даёт массу удобства. А далее видеопоток вполне может быть обработан УЖЕ СУЩЕСТВУЮЩИМИ консольными утилитами. От разработчика в этом случае потребуется совсем немного усилий. Поэтому рекомендую вначале всё проанализировать с учётом возможностей линукс-окружения, а не сломя голову портировать вендокод, порождая велосипеды и костыли.

static_lab ★★★★★
()
Ответ на: комментарий от k0l0b0k

k0l0b0k> Дай Бог каждому такого начальства :)

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

Quasar ★★★★★
()

Xuch> Всем доброго времени суток! Вопрос к линух гуру - есть довольно большой проект, который разрабатывался под Windows 7 в среде MS Visual Studio, по сути - проприетарная система видеонаблюдения. На разработку ушло около года.

Посмотри на ZoneMInder. Может в качестве решения (конечно, если без нарушения GPL) сойдёт. А может допилить слегка надо будет.

Quasar ★★★★★
()

Что ещё могу сказать про видеонаблюдение на линуксе:

Ну V4L - это понятно. API для работы с оборудованием для захвата видео. С ним умеет работать куча программ, вроде mencoder и ffmpeg умеют - советую обратить на них внимание.

Кроме того есть замечательное средство разработки - язык программирования Python. Если надо что-то по-быстрому набыдлокодить - лучше средства не найти.

В общем на чём писать - решать тебе. Но как бы ни пытался делать решения - если нарушишь GPL, тебя и всю контору сообщество съест, и выплюнет кости. Так что имеет смысл попробовать использовать свободные компоненты, и если они запрещают закрывать исходники, исходники открыть.

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

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

В России или СНГ были случаи, чтоб контора выплачивала штрафы за нарушение GPL лицензии? По моему все разработчики (по крайней мере тех кого видел) кладут на это дело большим прибором, и всем монопенисуально.

Pantserovik
()
Ответ на: комментарий от Pantserovik

Я наоборот видел тех, кто ненавидит GPL круче iZEN'а, потому что «видит око, да зуб неймёт».

legolegs ★★★★★
()

Пошли такое начальство нах и ищи новое место работы, с таким подходом к разработке софта, программисты будут работать много много,а профита для программистов не будет совершенно.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Нда, спасибо всем, столько инфы, сижу перевариваю. Python и Java мне не подойдут по причине, что из железа выжимается максимум и нужная высокая производительность...

Буду ковыряться и думать дальше..

GUI как такогового у приложения нет. Ждем команду через виртуальный СОМ-порт на USB, и в зависимости от полученной команды меняем режим отображения (одна камера, две камеры, 4 камеры, две других камеры и т.д.). Все камеры в отдельных потоках, на будущее должна быть возможность записывать видео с камер. При недоступности одной или нескольких камер в режимах отображения более одной камеры, не должно быть подвисания и никаких ожиданий. API работы с камерами различных производителей запихнул в отдельные динамически подгружаемые библиотеки, добавление новой камеры крайне простая задача, не требующая ковыряния в коде программы. Поверх картинки в углах нужно выводить пиктограмму текущего режима, описание камеры, время.

Объем проекта написанного на дотнет - 3700 строк кода

Xuch
() автор топика
Ответ на: комментарий от Xuch

Так и что с моно? Запустить уже скомпеляную прогу не выходит?

Viglim
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.