Russian Qt Forum
Ноябрь 25, 2024, 12:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Синхронизация с внешними устройствами  (Прочитано 3086 раз)
White Owl
Гость
« : Август 06, 2015, 19:16 »

Задача: Есть десктоп, есть планшеты (и телефоны). Есть файлы которые надо синхронизировать между десктопом и планшетом.

Как я решаю задачу сейчас: подключаю планшет по USB кабелю к десктопу, в десткопном приложении тыкаю кнопку "Sync" - она проверяет что есть доступ к ранее заданному каталогу (который на самом деле уже на планшете) и перекидывает файлы между локальным каталогом и планшетным. Если же планшет в данный момент не подключен - Sync показывает ошибку, мол "внешнее устройство не найдено".

Хочу: Чтобы десктопная часть (планшетную пока трогать не будем), автоматически обнаруживала что к машине подключили планшет и разрешала-запрещала кнопку Sync. Ну и (в качестве бонуса) про появлении планшета показывала юзеру диалог "Есть внешнее устройство с таким-то именем, желаете синхронизироваться с ним сейчас? Да/Нет".

Спрашивается как можно отследить подключение внешнего устройства? Раз в цать времени проверять существование внешнего каталога в принципе возможно, но не кошерно.

Решение желательно ОС-независимое.
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Август 06, 2015, 20:13 »

Цитировать
Решение желательно ОС-независимое.

Невозможно. Нужно использовать разные фишечки:

* SetupAPI - windows
* udev - linux
* IOKit - macosx

Записан

ArchLinux x86_64 / Win10 64 bit
kai666_73
Крякер
****
Offline Offline

Сообщений: 319


Просмотр профиля
« Ответ #2 : Август 07, 2015, 11:42 »

Цитировать
Решение желательно ОС-независимое.

Невозможно. Нужно использовать разные фишечки:

* SetupAPI - windows
* udev - linux
* IOKit - macosx


Хороший повод изучить и применить на практике соотв. паттерн.
И сообщество будет благодарно )
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Август 07, 2015, 11:50 »

Эмм.. ну, или libusb.. но я не знаю, можно ли там отслеживать появление/исчезновение девайса с заданными VID/PID по эвентам, а не поллингом.
Записан

ArchLinux x86_64 / Win10 64 bit
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #4 : Август 07, 2015, 13:34 »

пусть android входит в wifi сеть - далее синхронизировать по сокетам
ОС независимое решение
Записан
Bepec
Гость
« Ответ #5 : Август 07, 2015, 18:53 »

Самое простое и топорное, как вы и предложили - таймер и проверка дисков на наличие каталога.
QDir + QTimer + QList.
Раз в секунду проверяете список устройств, если есть новое, проверяете на наличие папки и кнопку енаблите.

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

PS а вот разбираться с апи различных систем, это работа не на день, с учетом тестировая и отладки Улыбающийся
Записан
White Owl
Гость
« Ответ #6 : Август 07, 2015, 19:01 »

Придется наверное действительно писать собственный враппер над ОС-зависимыми функциями. Странно что в Qt его до сих пор нет.
Записан
Bepec
Гость
« Ответ #7 : Август 07, 2015, 19:02 »

Он есть, он во многих проектах, но вот незадача - никто не выкладывает его в окончании темы с вопросом Веселый
PS у меня нет ^.^
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.158 секунд. Запросов: 23.