Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как верблюду пройти сквозь игольное ушко или Способы управления/конфигурирования устройства через единственное SPP-соединение.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
jcxz
Имеется устройство. Устройство имеет bluetooth (BT). Выбор профилей в использованном BT-модуле небогат и, похоже, придётся обходиться одним только SPP.
Через это SPP нужно делать конфигурирование устройства + изредка скачивать с него файлы (а может в будущем и закачивать на него понадобится).
SPP - потому что должна быть возможность конфигурить "в поле", с телефона. Устройство в роли SPP-сервера - принимает входящие подключения, само не инициирует их.
Так как:
1) необходима возможность конфигурирования из разных ОС: винда, линух, Андроид, АйОС, ...;
2) штат команды разработки предельно мал и бюджет соответствующий;
то для конфигурирования нужно использовать только готовое ПО/протоколы, и самый простой путь - написание конфигураторов для всех ОС, работающих через SPP-канал - отпадает.
В свете вышеизложенных соображений решил конфигурирование построить на базе эмулятора ANSI-терминала: устройство будет генерить текстовый вывод, со всеми менюшками, чекбоксами, edit-контролами и прочим. В цвете, мерцаниях и т.д. Реагируя на нажимаемые пользователем клавиши.
Т.е. - интерактивный интерфейс с юзером. Параметров конфигурации не так уж и много - думаю будет 2-3 десятка. Несколько разных экранов.
В принципе всё работает, если не считать того, что хороших эмуляторов терминалов - не так уж и много. А ведь ещё нужно будет подобрать нормальные терминалы для всех ОС.... sad.gif((
Да - ещё нужно будет принимать с устройства файлы. Для этого думал использовать ZModem. Здесь с эмуляторами терминала ещё хуже оказалось.

Но меня посещают мысли, что возможно я не вижу какого-то более удобного варианта, сделать работу по-другому, удобнее и красивше.
В плане удобства пользователя, было бы гораздо лучше использовать HTML. Но как это сделать через SPP (COM-порт)? Причём чтобы даже не продвинутый юзер смог пользоваться.
Я уже думал о таком:
Под виндой - сделать удалённое подключение к сети через этот COM-порт, запустить через него SLIP-протокол, внутри которого - IP-фреймы. Ну и поднять HTTP-сервер в устройстве на этом канале. Возможно так можно сделать. И будет красиво и круто. И с передачей файлов тогда нет проблем. Да и даже графику на странице можно сделать.
Но вот мне кажется, что это будет через одно известное место. И не факт, что будет работать в последующих версиях винды. А тем более - на других ОС.

Вопрос к тем, кто был в аналогичной ситуации: Какое Вы выбрали решение задачи и почему?
megajohn
Цитата(jcxz @ Sep 24 2018, 15:22) *
Вопрос к тем, кто был в аналогичной ситуации: Какое Вы выбрали решение задачи и почему?


вот как раз все что Вы описываете, вижу в одной железке.
реализовано через простой COM-порт, а там на нижнем уровне PPP/LCP/IPCP/IP ну и далее SNMP/TELNET/HTTP:80/FTP
jcxz
Цитата(megajohn @ Sep 24 2018, 14:27) *
вот как раз все что Вы описываете, вижу в одной железке.
реализовано через простой COM-порт, а там на нижнем уровне PPP/LCP/IPCP/IP ну и далее SNMP/TELNET/HTTP:80/FTP

Каким образом осуществляется подключение к этой железке?
megajohn
Цитата(jcxz @ Sep 24 2018, 15:31) *
Каким образом осуществляется подключение к этой железке?


так же, как вы и пишите, через модемное соединение =)

то есть ставится inf + dll. Ну и далее мышкой на соединение или через WinApi RasDial

Цитата(jcxz @ Sep 24 2018, 15:31) *
И не факт, что будет работать в последующих версиях винды.

такой метод изначально работал на WinXP, но так же работает на Win7 и Win8.1 ( на Win10 не пробывал - нет такого под рукой )
AlexandrY
Цитата(megajohn @ Sep 24 2018, 14:45) *
такой метод изначально работал на WinXP, но так же работает на Win7 и Win8.1 ( на Win10 не пробывал - нет такого под рукой )

Никак он не работает.
Нет давно уже под виндой Direct Cable connection через PPP. Так что можно забыть.
megajohn
Цитата(AlexandrY @ Sep 24 2018, 15:58) *
Нет давно уже под виндой Direct Cable connection через PPP. Так что можно забыть.


Ну может в Win10 и нет, но вот скрин из Win7 x64 SP1




P.S. ADD:
это не оно ? Dialup setup for Windows10
AlexandrY
Цитата(megajohn @ Sep 24 2018, 15:11) *
это не оно ? Dialup setup for Windows10

Нет, то было именно Direct Cable connection через PPP.
Оно не требовало никакого номера и могло активизироваться самим дивайсом.
megajohn
Цитата(AlexandrY @ Sep 24 2018, 16:18) *
Оно не требовало никакого номера и могло активизироваться самим дивайсом.


но автору нужно "Устройство в роли SPP-сервера - принимает входящие подключения, само не инициирует их."
_pv
Цитата(jcxz @ Sep 24 2018, 17:22) *
В свете вышеизложенных соображений решил конфигурирование построить на базе эмулятора ANSI-терминала: устройство будет генерить текстовый вывод, со всеми менюшками, чекбоксами, edit-контролами и прочим. В цвете, мерцаниях и т.д. Реагируя на нажимаемые пользователем клавиши.
Т.е. - интерактивный интерфейс с юзером. Параметров конфигурации не так уж и много - думаю будет 2-3 десятка. Несколько разных экранов.
Да - ещё нужно будет принимать с устройства файлы. Для этого думал использовать ZModem. Здесь с эмуляторами терминала ещё хуже оказалось.

имхо менюшки/чекбоксы в цвете и мерцаниях - как раз лишнее,
сделайте минимум командную строку:

>read paramname\n
>write paramname value\n
>upload filename <base64_encoded_data><EOF> с проверкой контрольной суммы.
если файлы не особо большие, чтобы в случае ошибки просто переслать заново целиком.

совсем тупых терминалов, без zmodem, под любую платформу думаю куда больше чем хотя бы тех кто разные цвета и vt100 умеет.
потом уже, на жалобы юзеров, под самые ходовые платформы поверх этого можно будет и морду покрасивее нарисовать.


Цитата(megajohn @ Sep 24 2018, 18:11) *
Ну может в Win10 и нет, но вот скрин из Win7 x64 SP1

ага, а теперь то же, для iOS ещё продемонстрируйте sm.gif
AlexandrY
Цитата(megajohn @ Sep 24 2018, 15:22) *
но автору нужно "Устройство в роли SPP-сервера - принимает входящие подключения, само не инициирует их."

Тогда делайте полный эмулятор AT команд настоящего модема. Желаю удачи. biggrin.gif
jcxz
Цитата(megajohn @ Sep 24 2018, 14:45) *
то есть ставится inf + dll. Ну и далее мышкой на соединение или через WinApi RasDial
...
такой метод изначально работал на WinXP, но так же работает на Win7 и Win8.1 ( на Win10 не пробывал - нет такого под рукой )

Мне нужен метод работающий не только под виндой (см. первый пост). А dll уже намекает, что "win only" sad.gif
Можно ли такое соединение создать под Андроид например?

Цитата(_pv @ Sep 24 2018, 15:32) *
имхо менюшки/чекбоксы в цвете и мерцаниях - как раз лишнее,
сделайте минимум командную строку:

Нет - кондовой командной строки точно не будет. на дворе давно уже не 1980-е гг.
Конфигурирование должно быть интерактивным, как можно более user-frendly. Так как клиентом надо дорожить.
Менюшки и в цвете - уже есть и работают. И ничего сложного в этом нет. Почти. "Почти" - потому что выбор нормальных терминалок бедный.

Цитата(AlexandrY @ Sep 24 2018, 15:40) *
Тогда делайте полный эмулятор AT команд настоящего модема. Желаю удачи. biggrin.gif

Если-б проблема была только в этом, это была бы ерунда...
megajohn
Цитата(AlexandrY @ Sep 24 2018, 16:40) *
Тогда делайте полный эмулятор AT команд настоящего модема. Желаю удачи. biggrin.gif


этого вообще не требуется !
вот так кратко выглядит иннициализация dialup




>Можно ли такое соединение создать под Андроид например?
увы, это проморгал. Посчитал что по Linux уж должно быть dial, поэтому и написал. Тогда больше не вмешиваюсь
jcxz
Цитата(megajohn @ Sep 24 2018, 16:09) *
>Можно ли такое соединение создать под Андроид например?
увы, это проморгал. Посчитал что по Linux уж должно быть dial, поэтому и написал. Тогда больше не вмешиваюсь

Линух нам не настолько критичен как Ведроид и Яблокофон. Так как устройство обязательно должно иметь возможность конфигурирования со смартфонов. sad.gif
amaora
Цитата(jcxz @ Sep 24 2018, 15:57) *
Нет - кондовой командной строки точно не будет. на дворе давно уже не 1980-е гг.
Конфигурирование должно быть интерактивным, как можно более user-frendly. Так как клиентом надо дорожить.
Менюшки и в цвете - уже есть и работают. И ничего сложного в этом нет. Почти. "Почти" - потому что выбор нормальных терминалок бедный.


Давно не видели командной строки? В зависимости от задачи она бывает и удобнее, с дополнениями, подсказками и историей. И требует при этом лишь самого примитивного эмулятора терминала. Файлы я бы передавал в base64 или другом подобном кодировании.

Делать PPP через SPP это как-то уж слишком странно, много возни для пользователя может оказаться.

+ Под сматрфоны решение только в написании своего приложения, так у них там устроено.
_pv
Цитата(jcxz @ Sep 24 2018, 18:57) *
Нет - кондовой командной строки точно не будет. на дворе давно уже не 1980-е гг.
Конфигурирование должно быть интерактивным, как можно более user-frendly. Так как клиентом надо дорожить.
Менюшки и в цвете - уже есть и работают. И ничего сложного в этом нет. Почти. "Почти" - потому что выбор нормальных терминалок бедный.

cisco об этом расскажите.
да сложного конечно ничего нет, но в текстовом режиме все эти цветные менюшки если у пользователя только экранная клавиатура в смартфоне очень вероятно будут ещё хуже простой командной строки.
ну и я это "почти" и имел ввиду, что даже цветной терминал может оказаться не очень доступен, а вся ваша цветная/мигающая красота нарисованная в обычном терминале который этого не понимает выглядеть будет так себе sm.gif
и на простую командную строку свою отдельную морду поверх сделать потом всегда можно которая в порт команды посылать будет, а вот если там уже цветные мигающие менюшки, с ними уже будет гораздо сложнее.

з.ы.
а если взять и рядом поставить ещё отдельный esp32 за 3$ только с питанием, чтобы он подсоединялся к девайсу по BT, а сам при этом по wifi раздавал красивую веб-морду?
AlexandrY
Цитата(megajohn @ Sep 24 2018, 16:09) *
этого вообще не требуется !
вот так кратко выглядит иннициализация dialup

Я знаю отлично как делается dialup при прямом кабельном соединении.
Вы мне под Win 10 покажите именно фазу AT обмена.
jcxz
Цитата(_pv @ Sep 24 2018, 16:43) *
да сложного конечно ничего нет, но в текстовом режиме все эти цветные менюшки если у пользователя только экранная клавиатура в смартфоне очень вероятно будут ещё хуже простой командной строки.

Да главное - не цветность. И без неё можно.
Главное - интерактивность и дружественный интерфейс! Неужто непонятно?: меню из нескольких пунктов, юзер двигает по нему курсор (подсвеченная любым способом строка) до нужного пункта, это например чекбокс - жмёт на него включая и выключая. Или это какой-то слайдер - двигает его меняя значение. И т.п.
Т.е. - конфигурирование интерактивное. И на экране видна вся текущая конфигурация (или её часть, относящаяся к этому экрану). Можно оглядеть её, переместиться к нужному пункту и исправить.
А не вводом каких то команд в командной строке, которые нужно ещё запоминать, запоминать их формат, набирать и т.д.

Цитата(_pv @ Sep 24 2018, 16:43) *
а если взять и рядом поставить ещё отдельный esp32 за 3$ только с питанием, чтобы он подсоединялся к девайсу по BT, а сам при этом по wifi раздавал красивую веб-морду?

Это уже конкретный костыль. Если уж делать WiFi, то подключать его по проводному интерфейсу. Но и так есть BT - хотелось бы через него. Тем более что свободных интерфейсов уже не осталось почти. Да и все эти ESP - очень ненадёжная вещь для наших условий эксплуатации.
AlexandrY
Цитата(_pv @ Sep 24 2018, 16:43) *
ну и я это "почти" и имел ввиду, что даже цветной терминал может оказаться не очень доступен, а вся ваша цветная/мигающая красота нарисованная в обычном терминале который этого не понимает выглядеть будет так себе sm.gif

Красивую веб-морду делать затратно, особенно под разные варианты и разрешения экранов. Сизифов труд.
Под терминал правильное решение. Я сам так делаю.
Не понял только проблему с Андроидом. Под него же туча есть эмуляторов терминалов с поддержкой VT100. У меня отлично работает через BT

И еще, в RAD студио есть компонент Bluetooth с одинаковым API под Win, Android, iOS.
Так что универсальное приложение можно сделать из одной кодовой базы за пару дней.
Сергей Борщ
putty есть под андроид. Мой начальник так на наши устройства заходит. У меня "телефон здорового человека", мне это не актуально, я через minicom хожу из-под линуха или через тот же putty из-под винды.
Arlleex
В догонку хочу поинтересоваться.
Обычно если мне нужна локальная сеть, я беру МК с Ethernet MAC и работаю с ним.
Но эта тема натолкнула на давно интересующий меня вопрос: можно ли как-то перенаправлять данные из COM-порта ПК в сетевые сообщения... Не знаю как правильно выразиться. Ну, допустим, хочу веб-морду из браузера для девайса, а Ethernet-а нет. UART только торчит. Нужно же как-то сказать ОС, что вот такой-то COM-порт это полноценная сетевая карточка. Пусть звучит наивно, конечно, но вопрос чисто спортивного интереса (из разряда "поиграться на выходных"). Вернее, я знаю, что это сделать можно. Но как? Windows 7, XP, браузер Chrome, Mozilla, Opera, да разные.
Сергей Борщ
QUOTE (Arlleex @ Sep 24 2018, 20:09) *
Windows 7, XP,
Гуглите "поднять PPP на этих виндовсах", что-то должно быть. В линухе точно есть.
jcxz
Цитата(AlexandrY @ Sep 24 2018, 17:40) *
Под терминал правильное решение. Я сам так делаю.
Не понял только проблему с Андроидом. Под него же туча есть эмуляторов терминалов с поддержкой VT100. У меня отлично работает через BT

Проблема именно в куче: трудно в ней найти что-то работающее. Уже поставил с десяток разных - ни один нормально не работает.
Тестирую на простой менюшке из 4 строк (серым на чёрном), одна строка подсвечена яркостью и синим фоном + заголовок + текущее время в правом верхнем углу.
Putty и TeraTerm (винда) нормально отображают, ни один из опробованных терминалов не смог: или пустой экран, или в углу что-то мелькает, или esc-последовательности не понимает. Даже без всяких UTF-8. Самый лучший понимает только esc-последовательности установки курсора. Может я плохо ищу, но как искать в этой куче? Если у всех в описании указано: VT100, а не воспринимаются даже esc-последовательности. Цветовые esc вообще ни один не отработал. sad.gif((
Вот такая менюшка оказалась не по зубам ни одному: Нажмите для просмотра прикрепленного файла

Цитата(AlexandrY @ Sep 24 2018, 17:40) *
И еще, в RAD студио есть компонент Bluetooth с одинаковым API под Win, Android, iOS.
Так что универсальное приложение можно сделать из одной кодовой базы за пару дней.

Пока есть сильное желание использовать готовое. Может даже заплатим.

Цитата(AlexandrY @ Sep 24 2018, 17:40) *
Красивую веб-морду делать затратно, особенно под разные варианты и разрешения экранов. Сизифов труд.

Не сизифов. Юзер сейчас привык к браузерам и веб-мордам. Я говорю про обычного, не программиста или ардуинщика.
И удобный и привычный интерфейс конфигурирования - это сильное конкурентное преимущество устройства.

Цитата(Arlleex @ Sep 24 2018, 20:09) *
Нужно же как-то сказать ОС, что вот такой-то COM-порт это полноценная сетевая карточка. Пусть звучит наивно, конечно, но вопрос чисто спортивного интереса (из разряда "поиграться на выходных"). Вернее, я знаю, что это сделать можно. Но как? Windows 7, XP, браузер Chrome, Mozilla, Opera, да разные.

Вы прочитайте сначала - я ещё в самом первом сообщении писал как. И многие сообщения в начале треда были посвящены этому.
Нужно просто создать удалённое подключение к сети. На целевом компе делаете такое подключение в режиме "сервер". Оно открывает COM-порт и ждёт входящих соединений. В начале темы люди выкладывали скриншоты даже.
Лет 20-30 назад многие так и выходили в инет. sm.gif

Цитата(Сергей Борщ @ Sep 24 2018, 17:50) *
putty есть под андроид. Мой начальник так на наши устройства заходит. У меня "телефон здорового человека", мне это не актуально, я через minicom хожу из-под линуха или через тот же putty из-под винды.

Ну есть. Bluetooth он не понимает, только TCP.
AlexandrY
Цитата(Arlleex @ Sep 24 2018, 20:09) *
В догонку хочу поинтересоваться.
Обычно если мне нужна локальная сеть, я беру МК с Ethernet MAC и работаю с ним.
Но эта тема натолкнула на давно интересующий меня вопрос: можно ли как-то перенаправлять данные из COM-порта ПК в сетевые сообщения... Не знаю как правильно выразиться. Ну, допустим, хочу веб-морду из браузера для девайса, а Ethernet-а нет. UART только торчит. Нужно же как-то сказать ОС, что вот такой-то COM-порт это полноценная сетевая карточка. Пусть звучит наивно, конечно, но вопрос чисто спортивного интереса (из разряда "поиграться на выходных"). Вернее, я знаю, что это сделать можно. Но как? Windows 7, XP, браузер Chrome, Mozilla, Opera, да разные.

Раньше было можно.
На заданный COM порт устанавливался слушающий драйвер в Win XP и как только к порту подключали дивайс с PPP протоколом
драйвер сразу устанавливал через него TCP соединение, получали выход в сеть.
Т.е. просто втыкали дивайс и дальше оставалось только кликнуть на браузер. Никаких dialup-ов и проч возни не требовалось.
Но теперь все COM порты соединяются через USB, а USB имеет свои классы (CDC-RNDIS, CDC-ECM) для автоматической организации TCP соединения.
Поэтому рудимент COM порта стал ненужен.
Т.е. по сути кто до сих пор использует чисто COM для связи с PC немного как бы отстал от времени.
jcxz
Цитата(AlexandrY @ Sep 25 2018, 07:53) *
Раньше было можно.
На заданный COM порт устанавливался слушающий драйвер в Win XP и как только к порту подключали дивайс с PPP протоколом
драйвер сразу устанавливал через него TCP соединение, получали выход в сеть.

Думаю что и сейчас можно, только нужно что-то дополнительно поставить. Какой-нить драйвер.
AlexandrY
Цитата(jcxz @ Sep 25 2018, 14:30) *
Думаю что и сейчас можно, только нужно что-то дополнительно поставить. Какой-нить драйвер.

Я подозреваю это можно в enterprise версии, которая для предприятий.
Специально так сегментировали юзеров. И если это так, то они в home edition никак не дадут этому драйверу работать.

А сторонние платные драйвера конечно есть, на том же RAD studio написать не проблема.
Я юзаю VT100 без разукрашек и не знаю проблем.
Пошло нормально на первом же попавшемся эмуляторе под андроидом.
Просто сейчас не в этой теме и сказать конкретней ничего не могу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.