Внимание! Горячие новости проекта Usb2Kbd
    10.09.2017 ВНИМАНИЕ! Вышла версия 5.0 девайса Usb2kbd (версия с Dll)! Подробнее в разделе "Новости Usb2kbd"!
    22.07.2017 В раздел "Примеры обращения к Dll" добавлен пример обращения из C#
    13.02.2017 Usb2kbd_LAN отныне на Arduino! Подробнее - в разделе сайта "Usb2kbd_LAN + примеры".
Архив новостей здесь

Usb2kbd_LAN


Уважаемые друзья!

Многие из Вас пишут о том, что неплохо было бы подключить к девайсу LAN-модуль (аналог сетевой карты), чтоб получить возможность управлять девайсом через сеть. Представляю Вашему вниманию мою очередную разработку - Usb2kbd_LAN.

Usb2kbd_LAN

В основе нового девайса лежит знаменитая платформа Arduino Leonardo + штатный Ethernet shield W5100 для Arduino, работающий по UDP-протоколу.

Важно помнить, что Usb2kbd_LAN управляется исключительно по сети, функции управления через Dll (как было в usb2kbd) в нем нет, да и эта функция не нужна по сути, т.к. LAN-модуль как нельзя лучше заменит управление девайсом через DLL.

При подключении в USB-порт компьютера, Usb2kbd_LAN автоматически определится системой как стандартная USB-HID клавиатура и мышь (комбо-девайс. 2-в-одном), никаких дополнительных драйверов устанавливать не нужно!

Принцип работы Usb2kbd_LAN заключается в том, что LAN-модуль девайса может принимать управляющие сигналы из сети по UDP-протоколу (причём неважно, откуда пришел пакет, главное, чтобы он прошел подлинность), и, получив такой сигнал, LAN-модуль передает его уже в микроконтроллер, который, в свою очередь, через USB-протокол уже нажимает клавишу клавиатуры или управляет мышью. Как Вы видите, теперь девайсу не нужны никакие DLL, Вам достаточно знать, как из Вашей программы, написанной на любом известном Вам языке программирования, составить и отправить простой UDP-пакет девайсу по сети (локальной или интернет).

Итак, для чего нужен девайс Usb2kbd_LAN, в чем его главное отличие от Usb2kbd, какая основная функция и есть ли применение на практике?
- Теперь можно управлять любым компьютером или даже планшетом (на базе Android с поддержкой OTG) в локальной сети (включая самим собой) или через интернет безо всяких DLL!!. Dll теперь не нужно подгружать в память Windows и обращаться к ней.

- через Usb2kbd_Lan можно без труда управлять мышкой и клавиатурой в системах DOS, BIOS, Linux (т.е. Usb2kbd_LAN может выступать своего рода аналогом бюджетного KVM-свитча);

- Usb2kbd_LAN работает на 10% быстрее, чем Usb2kbd (так как не тратиться время на работу с DLL). Проверено лично!

- Usb2kbd_LAN выполнен на всемирно известной платформе Arduino и Ethernet Shield W5100, что обеспечивает стабильность работы и помехоустойчивость.

Ниже рассмотрим более детально основную функцию Usb2kbd_LAN - функцию управления по сети.

Как управлять компьютером/планшетом в локальной сети (или же своим компьютером):

а) Подключите LAN-разьем девайса Usb2kbd_LAN в локальную сеть (например, в свободный разъем LAN вашего домашнего маршрутизатора или же свитча).

б) Подключите USB-разъем девайса Usb2kbd_LAN в управляемый компьютер/планшет, которым хотите управлять (или же в свой компьютер).

в) Убедитесь, что девайс Usb2kbd_LAN виден в сети, т.е. пропингуйте его с компьютера, с которого Вы хотите управлять (управляющий компьютер) - по умолчанию IP-адрес девайса - (клавиатура+мышь) - 192.168.0.222, порт - 12345. (IP-адрес и порт девайса могут быть заданы любыми при покупке).

г) Попробуйте в своей программе (скрипте) на управляющем компьютере составить и отправить первый управляющий UDP-пакет девайсу (мыши+клавиатуре) в локальной сети. Если пока не готова Ваша программа для теста - не беда! Используйте штатную программу проекта (раздел навигации сайта "Программа проверки Usb2kbd"). Структура самого отправляемого UDP-пакета будет рассмотрена ниже.

д) Если Вы все сделали правильно, то LAN-модуль девайса получит Ваш UDP-пакет и исполнит его (нажмет клавишу клавиатуры или переместит мышь) на управляемом компьютере/планшете.

Для управления компьютером/планшетом через сеть интернет - Вам нужно будет сделать настройку маршрутизатора удаленной сети - осуществить "проброс порта" 12345 из вне на девайс в сети -  IP-адрес девайса Usb2kbd_LAN по умолчанию, как мы уже говорили, 192.168.0.222, порт 12345.

Ниже - пример проброса портов для роутера TPLINK-WR841N:

Usb2kbd_LAN

Если Вы не хотите (или не умеете) программировать, но хотите дистанционно управлять дистанционным компьютером (не своим) через Usb2kbd_LAN безо всяких скриптов , то для Вас я написал специальную программу Usb2kbd_LAN, вот такую:

Usb2kbd_LAN

и в ней прописываете настройки соединения, соединяетесь с удаленным компьютером через любую программу дистанционного управления (teamviewer, Radmin и т.д) в режиме просмотра (чтоб видеть, чем же Вы там управляете) и жмете "Старт" в программе. И вот Вы управляете удаленным компьютером как будто Вы возле него! Причем все нажатия клавиатуры и мыши будут настоящими, а не эмулированными! Кроме того, и это важно, если запущена эта программа, теперь на компьютере, откуда идет управление,  можно запустить любой скрипт с любыми эмулированными (!!!!) нажатиями клавиатуры и мыши, и программа Usb2kbd_LAN с управляющего компьютера автоматически будет передавать эти "показания" в сеть девайсу на удаленном компьютере, которые станут для него "настоящими" нажатиями, благодаря девайсу Usb2kbd_LAN . Т.е. автоматизация скриптами никуда не пропадет.

Внимание! Для корректного управления мышью через Usb2kbd_Lan Вам понадобится вручную отключить "ускорение мыши" на компьютере, которым Вы хотите управлять через Usb2kbd_lan. Что такое "отключение ускорения Widnows" и зачем его отключать? Дело в том, что по умолчанию такое ускорение включено в Windows и если, например, Вы отправите девайсу Usb2kbd_Lan команду, напаример, сместить курсор на 100 пикселей по оси X, то девайс, конечно выполнит команду и отправит уже в Windows смещение на те же 100 пикселей по оси X. Но вот Windows, получив такое смещение, самостоятельно "ускорит" мышь - и курсор мыши сместиться не на 100 пикселей, а на большую величину (например 159 пикселей).  Так вот чтоб такого не произошло, Вам необходимо будет самостоятельно отключить ускорение мыши в настройках мыши Windows (смотрите рисунок ниже) на компьютере, которым Вы хотите управлять посредством Usb2kbd_Lan..На управляемом компьютере (№2) войдите в раздел панели управления "Мышь" и выставите настройки как на рисунке.

Usb2kbd_LAN

Давайте рассмотрим детальнее параметры b1, b2, b3, b4, необходимые для работы Usb2kbd_LAN (параметры b5 и b6 в Usb2kbd_LAN не используются!):

b1 - Управляющий символ (целое число) - определяет действие, которое необходимо выполнить устройством Usb2kbd_Lan. Его возможные значения Вы сможете увидеть в таблице ниже

b2 - Вспомогательный символ, который дополняет символ b1. Может означать:

а) Код клавиши (целое число, значения от 4 до 231) - определяет код нажатой или отжатой клавиши клавиатуры для случаев, когда b1 = 1 или 2 (коды клавиш Вы сможете скачать в разделе сайта "Загрузки");

ИЛИ

б) Код нажатия кнопок мыши (целое число, значения от 0 до 7) - определяет код нажатой или отжатой кнопки мыши для случаев, когда b1 = 4 (для Usb2kbd_Lan используется только относительный метод смещения курсора мыши).

... т.д. Подробнее - в таблице ниже.

Usb2kbd_LAN

Очень важно! Обратите внимание на параметры b3 и b4 - это передаваемые смещения по осям X и Y. Как видно, за один пакет в Usb2kbd_LAN можно максимально передать смещение в 127 пикселей (от -127 до +127). Подробнее мы коснемся этого ниже.
Как же корректно составить UDP-пакет для отправки? Для этого рассмотрим структуру управляющего UDP-пакета для отправки в Usb2kbd_LAN.

Usb2kbd_LAN

Как видно, структура управляющего UDP-пакета очень простая и состоит строго из 14 цифровых символов.
Для примера рассмотрим UDP-пакет  вида "11141004100100" (видно в примере на картинке), где
"1114" - ID девайса (написан маркером на девайсе, у каждого девайса уникален);
"1" - управляющий символ b1 - в данном случае - 1 - "нажатие клавиши клавиатуры" (все варианты символов смотрите в таблице выше);
"004" - вспомогательный символ b2 - в данном случае 4 -  "код клавиши для клавиатуры" (4 - код клавиши "а",  все коды клавишь можно скачать в разделе сайта "загрузки");
"100" - b3 (смещение по оси X), в данном случае задано 100;
"100" - b4 (смещение по оси Y), в данном случае задано 100;
Как видно, данный пример пошлет команду "нажать" клавишу клавиатуры а. (параметр X и Y для нажатия клавиши не обязательны, но показаны для примера).
Обратите внимание на структуру UDP-пакета - для перемешения мыши в девайс Usb2kbd_LAN отправляются команды НЕ абсолютных координат (например - переместить мышь в координаты экрана X=100, Y=100), а посылаются координаты смещения мыши относительно текущего положения курсора мыши (например X=X+100 или Y=Y-50). Ну а как отправлять положительные или отрицательные смещения - смотрите на картинке выше в структуре управляющего UDP-пакета. Приведу пример - Вы хотите отправить команду смещения мыши на X=-100 Y=-50. Согласно двум таблицам выше составим пакет - "11144000156206", где
"1114" - ID девайса;
"4" - управляющий символ b1, здесь равен 4, т.е. - событие мыши (относительные координаты), будем смещать относительно текущего положения курсора мыши;
"000" - вспомогательный символ b2, в данном случае равен 0, т.е. "Ни одна из кнопок мыши не нажата/отжаты все кнопки мыши (используется для движения мыши без нажатия или для отжатия всех кнопок мыши". Т.е. будем просто двигать мышь без нажатий/отжатий кнопок;
"156" - b3 (смещение по оси X), в данном случае задано -100 = 256 - 100;
"206" - b4 (смещение по оси Y), в данном случае задано -50 = 256 - 50;
Я уверен, что Вы разберетесь! :)
Хватит теории, пошла практика:

ВНИМАНИЕ! ВАЖНО! Для стабильной и бесперебойной работы Usb2kbd_LAN ОБЯЗАТЕЛЬНО используйте минимальные паузы в 1 мс между событиями, иначе возможны потери UDP-пакетов!

Перед началом написания программы отправки UDP-пакета в устройство помните, что сначала в Вашей программе Вам нужно будет задать исходные параметры сети:

- IP адрес локального компьютера (откуда будет посылаться UDP-пакеты), в примерах - 192.168.0.50, проставьте свой;

- IP-адреса подключенных устройств Usb2kbd_LAN (по умолчанию 192.168.0.222 для клавиатуры и 192.168.0.223 для мыши);

- Порты назначения (12345 для клавиатуры и 12346 для мыши);

затем вызвать функцию формирования и отправки UDP-пакета на указанные IP-ардеса и порты).

Autohotkey:

Здесь можно скачать пример отправки управляющего UDP-пакета в Usb2kbd_LAN через Autohotkey.

Как видно в примере, пример пошлет три UDP-управляющие команды:

- нажать клавишу 1 на клавиатуре;

- отжать клавишу 1 на клавиатуре;

- команда СМЕЩЕНИЯ курсора мыши на координаты X + 100 и Y +100 относительно текущего положения курсора мыши.

Autoit:

Здесь можно скачать пример формирования и отсылки UDP пакета в Usb2kbd_LAN посредством Autoit.

Пример нажимает клавишу А на клавиатуре и затем отжимает ВСЕ клавиши клавиатуры.

Borland C++:

Здесь можно скачать пример отправки управляющего UDP-пакета в Usb2kbd_LAN через Borland C++. В примере - отправка смещения мыши на X=X+100 и Y=Y+100.

Delphi 7:

Исходный проект примера для Delphi 7 можно скачать здесь. В примере - отправка смещения мыши на X=X+100 и Y=Y+100.

 

ВНИМАНИЕ! Если в примерах Вы не нашли пример на Вашем любимом языке программирования, не печальтесь, а попробуйте упорно погуглить (пояндексить), как можно отправить UDP-пакет в сеть при помощи Вашего языка программирования. Если Вы самостоятельно найдете решение, то поделитесь своей радостью с другими, написав решение мне на e-mail, указанном в разделе сайта "КОНТАКТЫ". Так Вы значительно облегчите жизнь другим и поможете развитию проекта.

КСТАТИ!

Usb2kbd_LAN

Если Вы уже получили долгожданный девайс Usb2kbd_LAN и Вам не терпится его опробовать, то В этом Вам поможет специальная программа для проверки работоспособности Вашего устройства (Программу любезно предоставил проекту Сергей sergey.zinovkin@gmail.com. Разработка десктопного ПО для Ваших нужд, пишите Сергею).

Итак, после того, как Вы получили по почте устройство Usb2kbd_LAN, распаковали его и подключили в usb-разъём компьютера, а также подключили LAN-модуль устройства к локальной сети, Вам необходимо написать на e-mail usb2kbd@gmail.com и Вам будет выслана также Вышеуказанная программа для проверки работоспособности устройства.

Или же программу можно будет скачать отдельно отсюда.

Получив Файлы:

- Сохраните программу USB2KBD.exe и usb2lancf.xm в какую-нибудь папку на компьютере (например, на рабочем столе);

- Убедитесь, что девайс Usb2kbd_LAN подлючен в usb-разъём компьютера, а также LAN-разъёмом - в локальную сеть. Проверить, что Usb2kbd_LAN подключен корректно в локальную сеть, можно командой cmd -> ping 192.168.*.*, где 192.168.*.*  - IP адрес девайса, который Вы заказывали. Убедитесь, что девайс отвечает и виден в локальной сети;

- Запустите программу USB2KBD.exe. Конфигурировать программу дополнительно не нужно, это уже будет сделано за Вас;

- Выберите в программе вкладку Usb2kbd_LAN;

- Измените задержку между событиями - проставьте 1 мс;

- Выберите действие для клавиатуры - нажать кнопку "А", например, (обратите внимание, программа автоматически составит корректную команду для Вашего устройства) и затем нажмите "Добавить команду в очередь" (команда должна отобразиться на панели справа). После чего также выберите событие "Отжать кнопку А" и добавьте также на панель справа;

- По желанию можете добавить по аналогии команды перемещения/нажатия кнопок мыши;

- Запустите блокнот Windows;

- В программе нажмите"Пуск" и быстро активируйте окно с блокнотом;

- Если Вы все правильно сделали, то программа должна послать в Usb2kbd_LAN по сети (по IP-адресу и порту) команды - нажать клавишу "А", которая должна напечататься в открытый Вами блокнот.

Проверка успешно завершена!