Все дело в том , что RNDIS позволит нам реализовать управление контроллером через вэб интерфейс.
Remote Network Driver Interface Specification.
То есть мы не имеет аппаратной реализации Ethernet, но мы можем сэмулировать ее через USB.
А поскольку скорость передачи данных по USB как-то совсем не маленькая, и к тому же USB ну везде есть , то поехали реализуем эту технологию на STM32 и Atollic True Studio.
Итак , что нам нужно
Нам нужно все бесплатно созданное хорошими людьми для нас (начинающих и не очень программистов) .
Это бесплатная среда Atollic True Studio со всеми нужными плюшками (отладка, трассировка).
Бесплатный конфигуратор Cube MX для создания начального набора файлов проекта.
Недорогой SWD программатор / отладчик JLink или ST Link2 .
Какой-нибудь контроллер STM32 лучше серии STM32F4хх (отладочная плата 500-800р.).
Настройка сетевого соединения на Android-устройствах при подключении через USB к ПК
Для того, чтобы при проводном соединении через USB устройство могло подключиться к локальной сети для обмена данными с сервером Mobile SMARTS, следует использовать режим RNDIS. К сожалению, не все версии Android имеют поддержку данного режима. Кроме того, даже если поддержка есть, на ПК может потребоваться установка специального драйвера USB RNDIS, если стандартный драйвер, входящий в состав Windows, не подойдет для вашего устройства.
Как установить соединение в режиме RNDIS:
- На Android-устройстве необходимо включить режим разработчика. Для этого необходимо перейти в «Настройки» → «О телефоне», и семь раз подряд нажать на пункт «Номер сборки».
Для Android 4.4: В разделе настроек «Беспроводные сети» нажмите на пункт «Еще…» и поставьте галочку «USB Internet».
Далее вам будет предложено выбрать версию Windows на ПК. Самая старшая из предложенных версий — Windows 8. Если используется версия старше, также выберите Windows 8. Нажмите «Готово».
Для Android 7.0: В разделе «Для разработчиков» (Developer Options) выберите «Конфигурацию USB»:
- Далее на ПК войдите в «Панель управления» → «Центр управления сетями и общим доступом» → «Изменение параметров адаптера». Откроется окно со списком сетевых адаптеров:
Если подключение выполнено успешно, добавится новый сетевой адаптер с типом устройства Remote NDIS based Internet Sharing Device.
- Для того, чтобы устройство, подключенное через виртуальный канал Ethernet могло устанавливать соединения с машинами в локальной сети, в свойствах основного сетевого подключения следует разрешить использование подключения другим участникам сети:
- На этом настройка завершена. Запустите клиентское приложение Mobile SMARTS на ТСД. При наличии соединения с сервером кнопка «Обмен с сервером» будет активна.
Значок Wi-Fi перечеркнут, т.к. подключения к Wi-Fi сети нет, соединение с сервером выполняется через виртуальный канал Ethernet.
USB Over Ethernet: How to Connect Remote USB Devices
Была ли статья полезна?
Установка связи по RNDIS с кассовыми аппаратами Штрих-М
После установки Тест драйвера ФР от ШТРИХ-М и подключению онлайн кассы к компьютеру через USB, требуется запустить драйвер и установить драйвера сетевого интерфейса для RNDIS.
- Скачайте с Драйвер сетевого интерфейса NDIS для USB, ver. WinXP, Win7, Win10.
- Драйвер виртуального СОМ-порта (VCOM) — при необходимости
Для настройки онлайн кассы с ПК:
- В случае если сетевые параметры в кассе не заданы, необходим кабель USB 2.0 на RS232 COM/DB9F
- Кабель USB 2.0 USB A(m) — USB B(m), 1.5 м,
1) Подключить выбранным выше кабелем кассовый аппарат к ПК
2) Далее выбрать Настройка свойств
3) В открывшемся окне выбрать Поиск оборудования
4) Далее нажать кнопку Начать
5) Дождаться окончания поиска оборудования и нажать ОК
Если во время поиска ни одно устройство не было найдено — проверьте соединение ККТ с ПК.
Как прописан COM порт в диспетчере устройства на ПК.
После того, как проверка соединения пройдена успешно, требуется зайти в сетевые настройки устройства.
Делается это таким образом:
1. В Настройках свойств ККТ нажать кнопку Таблицы
2. В таблицах найти строчку 21 — Сетевые интерфейсы
3. Нажать клавишу Открыть
4. Откроется окно редактирования параметров сети.
Запишите значение из строки 4 (Порт tcp-сервера) — 7778, это TCP- порт фискального регистратора.
В этом окне в самом последнем поле (9) будет указано значение Rndis — 0. Требуется поменять значение на 1 и нажать Enter два раза, таким образом мы активируем возможность передачи фискальных данных в ККТ через USB.
Вы можете заметить строчки с 5 по 8 в которых указаны параметры беспроводной сети Wi-Fi. Если Ваш аппарат не «вооружен» подобным беспроводным модулем, то какие бы Вы настройки в строчки не вводили — толку будет ноль. Наличие модуля беспроводной связи смотрите в документации, поставляемой с устройством.
Если все настроилось хорошо, то в Сетевых подключениях Windows должно отобразиться сетевое подключение RNDIS в тот момент, когда ККМ Штрих-М подключена к компьютеру через USB.
В свойствах подключения открываем свойства IP версии 4. Установим «Использовать следующий IP-адрес» и укажем адрес подобный такому:
192.168.137.1 и маску подсети 255.255.255.0.
Это мы настроили сетевой адрес на — сеть RnDIS (локальной сетевой карты).
Выходим из этой сетевой карты и нажимаем ОК .
Для передачи данных в ОФД через Вашу сетевую карту которая подключена к интернету ВАША СЕТЬ (как на примере).
Откройте раздел Центр управления сетями и общим доступом. Выберите ВАШУ СЕТЬ, через которую выходите в интернет.
Нажмите Свойства → Доступ. Поставьте флажок в пункте Разрешить другим пользователям сети использовать подключение к интернету данного компьютера.
Нажмите ОК. В случае если с кассы чеки не уходять необходимо повторить процедуру отключения и включения «Разрешить другим пользователям сети . » два раза и данные с чека обязательно должны уйти в ОФД. Не забудьте перезагрузить Вашу кассу.
Далее запускаем Тест Драйвер ФР(4.15.0.833) и переходим Настройка свойств, → далее к Таблицы.. → далее Сетевой адрес..
Если в сети используется статический адрес, то в графе Static ip ставим 1, если поставим 0, то ip адрес пропишется автоматически.
Важно, что бы не искать какой ip адрес присвоен, в графе Static ip ставим 1 , как на скриншоте снизу пункт 4
а в графе Статус dhcp 255, пункт 5
и далее прописываем ip адрес 192.168.137.111 — как на скриншоте снизу
Далее заходим еще раз в Сетевые интерфейсы и проверяем все ли у нас стоит правильно,а именно Rndis — 1, как на скриншоте с низу пункт 4
Далее перезагружаем ккт, чтоб настройки вступили в силу.
Запустите утилиту Тест драйвера ФР. Нажмите кнопку Настройка свойств, затем — кнопку Дополнительные параметры.
Слева выберите строку ОФД.
Установите флажок в пункте Передавать данные ФН на сервер ОФД. Укажите сервер ОФД и порт сервера.
Данные для подключения к Первому ОФД:
Сервер ОФД — k-server.1-ofd.ru.
Порт — 7777.
Нажмите ОК. В окне Свойства в поле Подключение выберите из списка TCP сокет
Укажите IP-адрес и TCP сокет — порт фискального регистратора, которые скопировали на шаге 5 и 6. Нажмите кнопку Проверка связи: устройство должно определиться. Если подключение не работает, проверьте наличие драйверов RNDIS.
Проверка обмена данными с ОФД
- Запустите утилиту Тест драйвера ФР.
- Пройдите в раздел ФН → ОФД → Получить статус инф. обмена. Вы увидите параметры обмена данными.
Запускаем DHCP-сервер
Добавление DHCP-сервера в состав библиотеки связано с необходимостью инициализировать сетевой интерфейс на стороне host-а. По умолчанию, создаваемый при подключении устройства интерфейс настроен на автоматическое получение ip-адреса. Библиотека также успешно работает и при статической адресации, но это является не совсем удобным.
К сожалению, среди поставляемых lwip средств, DHCP-сервер отсутствует.
Однако, это не является существенной проблемой, т.к. в своей минимальной реализации DHCP-сервер весьма минималистичен.
В сети присутствует, пожалуй, единственный пример DHCP-сервера, работающего со стеком lwip. Данный источник оказался весьма полезным для изучения, хоть и не пригодным для встраивания по принципу «as-is» по причине отсутствия возможности конфигурирования и использования socket-api.
Поэтому было принято решение написать DHCP сервер.
И вот его скромные возможности:
— выдача адресов на произвольное время
— резервирование адресов по MAC адресу
— настройка DNS-сервера
Подключение сервера в тестовом проекте:
#define NUM_DHCP_ENTRY 3 static dhcp_entry_t entries[NUM_DHCP_ENTRY] = < // mac ip address subnet mask lease time < , , , 24 * 60 * 60 >, < , , , 24 * 60 * 60 >, < , , , 24 * 60 * 60 > >; static dhcp_config_t dhcp_config = < , 67, // server address, port , // dns server «stm», // dns suffix NUM_DHCP_ENTRY, // num entry entries // entries >; int main(void)
Запускаем DNS-сервер
Желаемый нами результат работы — отображение web-страницы при вводе в браузере некоторого имени ресурса. Однако, это возможно только при наличии DNS-сервера, который будет «знать» о нашем хосте. Конечно, этот результат доступен, если в адресной строке напрямую ввести ip-адрес: 192.168.7.1. Такой адрес имеет по умолчанию наше устройство. Однако, будем более искусны и запустим DNS-сервер.
В отличии от DHCP, текущая реализация DNS-сервера ещё «тоньше». На данный момент она позволяет обработать только стандартные DNS-запросы на одну запись.
Запуск сервера в проекте:
bool dns_query_proc(const char *name, ip_addr_t *addr) < if (strcmp(name, «run.stm») == 0 || strcmp(name, «www.run.stm») == 0) < addr->addr = *(uint32_t *)ipaddr; return true; > return false; > int main(void)
Что такое MTP, PTP, RNDIS (USB Ethernet), источник аудио и MIDI на Android?
О том, что в разделе Для разработчика или Режим разработчика на смартфоне Android можно найти массу всевозможных пунктов меню, многие пользователи уже осведомлены. Один из пунктов называется Конфигурация USB и содержит в себе различные режимы подключения. В этой статье мы хотели бы рассказать вам немного об этих режимах.
Но для начала давайте вспомним о том, как попасть в раздел Конфигурация USB. Первым делом вам необходимо открыть настройки:
Тапнуть по строке Для разработчиков или Режим разработчика. Если такого пункта меню вы не наблюдаете, включите его с помощью этой инструкции (по умолчанию режим скрыт).
В разделе Для разработчиков нажмите на строку Конфигурация USB.
Перед вами выбор режимов.
Теперь немного о каждом из этих режимов.
- Зарядка. Здесь все понятно, этот режим только заряжает устройство.
- MTP. Media Transfer Protocol или протокол передачи медиа контента. Протокол для передачи файлов, включая изображения, видеоролики, музыкальные композиции, файлы и т.д.
- PTP. Picture Transfer Protocol или протокол передачи изображений. В этом режиме позволяет переносить только изображения на компьютер или на принтер для печати.
- RNDIS (USB Ethernet). Remote Network Driver Interface Specification или спецификация интерфейса удаленного сетевого драйвера. Позволяет создать виртуальный канал Ethernet, используя сеть.
- Источник аудио. Использование интерфейса USB для вывода звука с компьютера, например, через внешний ЦАП.
- MIDI. Использование смартфона в качестве MIDI-устройства, например, клавиатуры.
Как вам статья?
Что такое MTP, PTP, RNDIS (USB Ethernet), источник аудио и MIDI на Android?
О том, что в разделе Для разработчика или Режим разработчика на смартфоне Android можно найти массу всевозможных пунктов меню, многие пользователи уже осведомлены. Один из пунктов называется Конфигурация USB и содержит в себе различные режимы подключения. В этой статье мы хотели бы рассказать вам немного об этих режимах.
Но для начала давайте вспомним о том, как попасть в раздел Конфигурация USB. Первым делом вам необходимо открыть настройки:
Тапнуть по строке Для разработчиков или Режим разработчика. Если такого пункта меню вы не наблюдаете, включите его с помощью этой инструкции (по умолчанию режим скрыт).
В разделе Для разработчиков нажмите на строку Конфигурация USB.
Перед вами выбор режимов.
Теперь немного о каждом из этих режимов.
- Зарядка. Здесь все понятно, этот режим только заряжает устройство.
- MTP. Media Transfer Protocol или протокол передачи медиа контента. Протокол для передачи файлов, включая изображения, видеоролики, музыкальные композиции, файлы и т.д.
- PTP. Picture Transfer Protocol или протокол передачи изображений. В этом режиме позволяет переносить только изображения на компьютер или на принтер для печати.
- RNDIS (USB Ethernet). Remote Network Driver Interface Specification или спецификация интерфейса удаленного сетевого драйвера. Позволяет создать виртуальный канал Ethernet, используя сеть.
- Источник аудио. Использование интерфейса USB для вывода звука с компьютера, например, через внешний ЦАП.
- MIDI. Использование смартфона в качестве MIDI-устройства, например, клавиатуры.
Как вам статья?
Конфигурация USB на Android — что это и как настроить?
Зачем нужен и как настроить раздел конфигурация USB на смартфоне?
В операционной системе Android есть много полезных опций и настроек, которые часто скрыты от рядовых пользователей. Одна из них — конфигурация USB. Функция расположена в изначально закрытом разделе смартфона — «Для разработчиков«. Также меню выбора конфигурация USB открывается сразу после того, как мы подсоединяем смартфон к компьютеру, используя стандартный кабель USB.
Конфигурация USB — раздел, где расположены дополнительные режимы подключения смартфона по USB. Когда мы подключаем гаджет к компьютеру через USB-кабель, можно выбрать одну из следующих конфигураций:
- Зарядка. Аккумулятор смартфона начнет заряжаться от компьютера. Больше ничего не произвойдет.
- MTP (Media Transfer Protocol). Режим, который используется для передачи файлов (изображений, текстовых документов, музыки) со смартфона на компьютер и наоборот.
- PTP (Picture Transfer Protocol). Это специальный протокол, который используется для передачи изображений. В этом режиме можно переносить изображения со смартфона на компьютер или принтер для печати.
- RNDIS (USB Ethernet). Это спецификация интерфейса удаленного сетевого драйвера. С помощью этого режима можно создать виртуальный канал Ethernet. Для этого используется сеть.
- Источник аудио. Режим, который использует интерфейс USB для вывода звука с компьютера.
- MIDI. Этот режим дает возможность использовать смартфон в качестве MIDI-устройства: например, MIDI-клавиатуры для создания музыкальных композиций в специализированных программах.
В разделе «Конфигурация USB» можно выбрать, какой из режимов будет использоваться по умолчанию при подключении к ПК, ноутбукам и другим устройствам. Выбор здесь за каждым пользователем — кому-то нужна только зарядка, а кто-то планирует переносить данные с телефона на ПК (или обратно). Изменить настройку можно в любой момент.