Название: Синхронизация с внешними устройствами Отправлено: White Owl от Август 06, 2015, 19:16 Задача: Есть десктоп, есть планшеты (и телефоны). Есть файлы которые надо синхронизировать между десктопом и планшетом.
Как я решаю задачу сейчас: подключаю планшет по USB кабелю к десктопу, в десткопном приложении тыкаю кнопку "Sync" - она проверяет что есть доступ к ранее заданному каталогу (который на самом деле уже на планшете) и перекидывает файлы между локальным каталогом и планшетным. Если же планшет в данный момент не подключен - Sync показывает ошибку, мол "внешнее устройство не найдено". Хочу: Чтобы десктопная часть (планшетную пока трогать не будем), автоматически обнаруживала что к машине подключили планшет и разрешала-запрещала кнопку Sync. Ну и (в качестве бонуса) про появлении планшета показывала юзеру диалог "Есть внешнее устройство с таким-то именем, желаете синхронизироваться с ним сейчас? Да/Нет". Спрашивается как можно отследить подключение внешнего устройства? Раз в цать времени проверять существование внешнего каталога в принципе возможно, но не кошерно. Решение желательно ОС-независимое. Название: Re: Синхронизация с внешними устройствами Отправлено: kuzulis от Август 06, 2015, 20:13 Цитировать Решение желательно ОС-независимое. Невозможно. Нужно использовать разные фишечки: * SetupAPI - windows * udev - linux * IOKit - macosx Название: Re: Синхронизация с внешними устройствами Отправлено: kai666_73 от Август 07, 2015, 11:42 Цитировать Решение желательно ОС-независимое. Невозможно. Нужно использовать разные фишечки: * SetupAPI - windows * udev - linux * IOKit - macosx И сообщество будет благодарно ) Название: Re: Синхронизация с внешними устройствами Отправлено: kuzulis от Август 07, 2015, 11:50 Эмм.. ну, или libusb.. но я не знаю, можно ли там отслеживать появление/исчезновение девайса с заданными VID/PID по эвентам, а не поллингом.
Название: Re: Синхронизация с внешними устройствами Отправлено: qate от Август 07, 2015, 13:34 пусть android входит в wifi сеть - далее синхронизировать по сокетам
ОС независимое решение Название: Re: Синхронизация с внешними устройствами Отправлено: Bepec от Август 07, 2015, 18:53 Самое простое и топорное, как вы и предложили - таймер и проверка дисков на наличие каталога.
QDir + QTimer + QList. Раз в секунду проверяете список устройств, если есть новое, проверяете на наличие папки и кнопку енаблите. Кроссплатформенно, быстро, без мутотени с апи разных систем. При желании можно добавить получение имени устройства (опять таки не кроссплатформенно), или же тупо добавлять при первичной синхронизации в ваш каталог файл с названием устройства. PS а вот разбираться с апи различных систем, это работа не на день, с учетом тестировая и отладки :) Название: Re: Синхронизация с внешними устройствами Отправлено: White Owl от Август 07, 2015, 19:01 Придется наверное действительно писать собственный враппер над ОС-зависимыми функциями. Странно что в Qt его до сих пор нет.
Название: Re: Синхронизация с внешними устройствами Отправлено: Bepec от Август 07, 2015, 19:02 Он есть, он во многих проектах, но вот незадача - никто не выкладывает его в окончании темы с вопросом :D
PS у меня нет ^.^ |