Несколько способов передачи данных без сети (p2p)

Несколько способов передачи данных без сети (p2p)

Dmitry Vorontsov

В этой статье я рассмотрю довольно узкую тему передачи данных между устройствами, когда нет сети интернет и локальной сети и расскажу о практических наработках, которые накопились за несколько лет практики в подобных вопросах. Для обмена данными «в полях» в нашей необъятной стране это иногда довольно животрепещущий вопрос, от которого зависят бизнес-процессы и эффективность работы. Данные способы реализованы в SimpleUI версии 12.05.25. Это экспериментальный релиз, он будет дорабатываться по мере необходимости.

Документация по данным способам тут: https://uitxt.readthedocs.io/ru/latest/sync.html#p2p


Вариант #1: «оптический между двумя мобильными устройствами»


Сразу оговорюсь, этот и следующий «оптический» вариант, не предназначены для передачи прям совсем больших объемов, т.е. «Войну и мир» ими лучше не передавать, но условную «накладную» - без проблем. Принцип действия основан на расширении QR-кода. Так как QR-код вмещает ограниченное количество информации, а потребоваться может больше, то требуется просто разбить информацию на несколько QR-кодов. т.е. буквально допустим исходной информацией, в которой содержится «накладная» является JSON, мы его записываем в виде строки, а строку режем примерно по 300-500 символов и получаем несколько QR кодов.

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

0.      Разбиваем JSON на список строк не более N-символов(допустим 300)

1.      Располагаем 2 устройства дуг напротив друга так чтобы они видели экран друг друга (нужна фронтальная камера)

2.      Показываем на устройстве отправителе 1-й QR-код, в котором закодирован номер части

3.      На устройстве отправителе считываем код и показываем номер считанной части

4.      На устройстве получателе считываем код и показываем QR-код по списку с номером части+1

5.      Это повторяется N-раз пока не закончатся коды и не будет принято подтверждение о последнем коде

В чем преимущества данного способа? Не смотря на невысокую скорость передачи у этого способа быстрая скорость подготовки – запустились камеры и произошел обмен. Не требуется соединения, он не капризный в отличии от Direct WIFI

Вариант #2: «С печатной формы  или с экрана на устройство»



Это вариация предыдущего способа, только QR-коды выведены сразу, т.к. носитель позволяет. Алгоритм сканирования просто убеждается что все части собраны и завершает работу. ActiveCV тут помогает тем, что подсвечивает зеленым те коды, которые уже отсканированы. Как в компьютерной игрушке.



Вариант #3: WiFi Direct


Из процесса в процесс


Из процесса в главное меню


Реализовано это так, что оба устройства одновременно поднимают точки доступа и являются клиентами, чтобы сделать обмен одноранговым. Обмен может быть инициирован из любого бизнес процесса из кода, т.е. можно подготовить данные в коде обработчика, запустить командой окно обмена в котором выполняется поиск устройств рядом, и на устройстве приемнике также запустить функцию обмена для приема из процесса или просто из общего меню приложения. На получение данных есть соответственно тоже свое событие и можно написать обработчик чтобы его записать например в СУБД как в примере.

Report Page