Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Alex_C от Август 14, 2012, 15:29



Название: Чем заменить COM-server
Отправлено: Alex_C от Август 14, 2012, 15:29
Есть программа под винду для считывания телеметрии с приборов. Написана на Дельфи. Работает она как COM-server. Все просто и понятно.
Есть необходимость сделать ее кросс-платформенной. Как проще сделать? Сделать ее как dll - но вот не уверен, что я смогу реализовать все, что есть в COM-server'е через интерфейс dll. А есть ли какие другие решения?


Название: Re: Чем заменить COM-server
Отправлено: Bepec от Август 14, 2012, 15:44
Как ком-сервер. В смысле она общается с приборами по COM порту и выводит(выводит ли?) телеметрию и сохраняет её.

Тогда всё просто - достаточно будет переписать её на Qt. Насчёт кроссплатформенности Delfi у меня большиииие сомнения :D

PS работа с комом - QtSerialPort(как то так). На форуме лежит темка про него. Разработчик прилагается. Работает великолепно :D


Название: Re: Чем заменить COM-server
Отправлено: Странник от Август 14, 2012, 15:45
недавно на форуме мелькала информация о Qt Service Framework, можете поинтересоваться. но доступен он будет в Qt 5.
а с dll в чем затык?
p.s.
что касается кроссплатформенности Delphi - Kylix сдох? он, кстати, на Qt был основан, помнится = )


Название: Re: Чем заменить COM-server
Отправлено: Alex_C от Август 14, 2012, 16:04
Я тут наверное немного неправильно выразился - программу с дельфи переписать на Qt конечно же :) . На Qt с ком-портами уже разобрался - тут все ок! Сама программа (что работает с ус-вами) уже переписана на Qt. Но естественно это пробный вариант - теперь необходимо организовать интерфейс этой программы для взаимодействия с другими программами. Т.е. программа получила данные с ус-ва - передала их другой программе. В винде это очень удобно делается с помощью технологии COM. Но естественно для кросс-платформенности она не подойдет. Вот собственно и озадачился - а что использовать? При этом под виндой эта программа должна без проблем взаимодействовать с программами, написанными не только на Qt - а и на том же дельфи, к примеру.


Название: Re: Чем заменить COM-server
Отправлено: Странник от Август 14, 2012, 16:47
Я тут наверное немного неправильно выразился - программу с дельфи переписать на Qt конечно же :) . На Qt с ком-портами уже разобрался - тут все ок! Сама программа (что работает с ус-вами) уже переписана на Qt. Но естественно это пробный вариант - теперь необходимо организовать интерфейс этой программы для взаимодействия с другими программами. Т.е. программа получила данные с ус-ва - передала их другой программе. В винде это очень удобно делается с помощью технологии COM. Но естественно для кросс-платформенности она не подойдет. Вот собственно и озадачился - а что использовать? При этом под виндой эта программа должна без проблем взаимодействовать с программами, написанными не только на Qt - а и на том же дельфи, к примеру.
Qt Service Framework - COM под Windows, DBus под *nix. или локальные сокеты, но тут придется поморочиться с сериализацией.


Название: Re: Чем заменить COM-server
Отправлено: Alex Custov от Август 14, 2012, 17:01
или локальные сокеты, но тут придется поморочиться с сериализацией.

Для сериализации можно использовать protobuf


Название: Re: Чем заменить COM-server
Отправлено: Bepec от Август 14, 2012, 17:02
Выбор у тебя афигенный. Начиная от межпроцессового взаимодействия, заканчивая dbus ом


Название: Re: Чем заменить COM-server
Отправлено: LisandreL от Август 14, 2012, 20:22
В зависмости от данных - QSharedMemory, QLocalSockets.
Если другие программы на Qt, то и сериализацию без зазрений совести можно использовать Qt'шную.


Название: Re: Чем заменить COM-server
Отправлено: Alex_C от Август 15, 2012, 08:01
Всем большое спасибо за советы!
Удаляюсь изучать мат. часть - потом уже задам конкретные вопросы по указанным выше реализациям! :)