LINUX.ORG.RU

Выбор способа взаимодействия с пользователем

 , ,


0

2

Здравствуйте. Сделал измеритель тока и соединился с ним по ком-порту. Т.е. могу принимать и передавать данные между пк open suse leap 42.2 и этим устройством. Ну и между пк с минт 12 на livecd. Надо как то отображать данные и передавать команды управления. Думаю какие инструменты для этого выбрать. 1 браузер - JavaScript. Но нет доступа к ком порту, можно питон для этого применить, но как то муторно получается. Web server, HTML, script. 2 qt или gtk, но не знаю что выбрать и возможно ли будет это запускать из системы с livecd и будет ли работать и в минт с гномом и в опенсуза с кде. Поделитесь советами.

Перемещено beastie из desktop


В development.

ЯННП, при чём здесь веб-сервер? Раз общение идёт по COM-порту, то бери termios и не вводи лишние абстракции. Можешь, если хочешь попроще, использовать QSerialPort, заодно гуй какой напишешь. Ну или я вообще не понял сути вопроса

XMs ★★★★★
()
Ответ на: комментарий от XMs

Termios как бы и не нужен. Я на Питоне это сделал и все работает. Питон есть и на лайв сиди и я думаю в большинстве дистрибутивов, с которыми могу столкнуться. А вот с гуи не знаю что выбрать.

GDK
() автор топика

Сделал измеритель тока и соединился с ним по ком-порту

Ничего не понял. Опиши более точно.

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

BceM_IIpuBeT ★★☆☆☆
()
Ответ на: комментарий от BceM_IIpuBeT

Чтение и отправку уже сделал. Но сейчас все работает через командную строку. Хочется чего-то более удобного, напр. Гуи. Но не знаю что лучше применить и какие будут особенности в плане последующего использования.

GDK
() автор топика

возможно ли будет это запускать из системы с livecd

Для доступа к COM нужно добавить пользователя в группы tty/uucp. В остальное проблем быть не должно.

Qt + QSerialPort.

RazrFalcon ★★★★★
()
Ответ на: комментарий от GDK

Ну так и прикрути к своему пистону гуй на pyQt или pyGtk, делов-то.

Zhbert ★★★★★
()

Тебе нужно самому определиться, что ты хочешь от измерителя тока. Если это переносное единичное устройство и пользоваться им предполагается как тестером - то можно морду нарисовать на pyQt либо pyGTK (что ближе или лучше знаешь). Если таких устройств будет несколько (каждое на своем компе) - то лучше взаимодействовать по сети: добавить, например, cgi(fcgi) интерфейс в каждый экземпляр и опрашивать их из www-сервера (отображая в браузере). Или прямо встроить простой http.server в каждый экземпляр.
Или использовать mqtt протокол и mosquitto - http://i-o-t.ru/protokol-mqtt/

sigurd ★★★★★
()
Последнее исправление: sigurd (всего исправлений: 1)

CLI чем не устраивает?

А если нужно веб-морду, то быстренько пишется все на С. У меня на гитхабе есть несколько примеров.

anonymous
()
Ответ на: комментарий от XMs

Я и хотел убрать воду... И поэтому начал было пробовать HTML и javascript. Получилось бы очень просто все и работало бы везде где есть браузер, и даже в винде. Засада оказалась в том, что JavaScript не дано доступа к ком порту.

GDK
() автор топика

Устройство будет в одном экземпляре.но может его понадобится присоединять к разным 'незнакомым' компам. Тогда может помочь лайв сиди. Веб морду не принципиально. CLI - просто не знал о таком способе.

GDK
() автор топика

измеритель тока и соединился с ним по ком-порту

Привет. У меня точно такая же задача. Сейчас есть прибор с управлением через телнет. Дальше думаю поставить штук 8 ардуинок и управлять ими через ком порты. Задачу гуи буду решать следующим образом. Сначала хотела написать приложение на яве, а затем загружать его через веб на компы пользователей. Потом поняла, что javaFX на телефонах работать не будет. Тогда решила использовать кложу. Есть такой пакет Luminus, там шаблон готового сайта + встроенный веб-сервер jetty, работает все прямо из коробки и офигенно быстро. У клиента морда на кложескрипте, там дофига всяких библиотек из самой яваскрипт. Т.е. можно рисовать графики и все управление. Все получается очень классно, можно смотреть и управлять откуда угодно, с чего угодно, с телефона или планшета пофигу.

Eva
()
Ответ на: комментарий от Shadow

Но я бы Tk или wx использовал. Но это не модно.

Это просто говно.

RazrFalcon ★★★★★
()
Ответ на: комментарий от Eva

Вот кстати посмотри, как можно классно сделать гуй в браузере.

https://grafana.com, я хочу что-то похожее.

Eva
()
Ответ на: комментарий от XMs

Дело в том, что ни о Qt ни о GTK я пока не имею представления совсем. Отсюда и вопрос появился. Если я буду делать на Qt, что в итоге получится, как я это получившееся буду должен разворачивать, где смогу развернуть, где нет? Например на минте с гномом будет Qtшное приложение работать? В этом плане CLI предпочтительнее, если правильно понял CLIшное приложение будет работать в любом линуксе. Но вот тут опять вопрос что проще/быстрее освоить? Где будет быстрее идти процесс написания ГУИ GTK, Qt, CLI? Где при прочих равных будет меньший объём кода, его читаемость?

GDK
() автор топика
Ответ на: комментарий от Eva

Ну задачи достаточно сильно разные. Кроме того мне не надо чтобы классно, нужен минимализм, простота, надёжность, простая переносимость по возможности. 8+ ком-портов это жесть. Имхо лучше i2c, SPI поставить или например rs485, ethernet, wifi, bluetooth в зависимости от средств, целей, условий.

GDK
() автор топика
Ответ на: комментарий от anonymous

Ну да, если не нужны мониторинг, анализ, хранение данных, изменчивость...

GDK
() автор топика
Ответ на: комментарий от GDK

Пиши обычный демон, который будет работать с датчиком и в сокет выплевывать по запросу данные. К нему можно будет уже клиентов каких угодно наделать — хоть CLI'шных, хоть веб, хоть GUI!

Последним, что я по этому принципу делал, были демоны для работы с болтвудовским датчиком облачности и SBIG'овской древней all-sky камерой. Собираемые ими данные попадают как в архив (SBIG'овский клиент все в кучу собирает и складывает), так и в веб-морду информационных панелей.

anonymous
()
Ответ на: комментарий от GDK

Если я буду делать на Qt, что в итоге получится

Приложение. ВрИОКО.


как я это получившееся буду должен разворачивать

Также, как и любое другое приложение: прописать зависимости при сборке пакета, а потом обеспечить их разрешение и установку у конечного пользователя.


где смогу развернуть, где нет?

Сможешь развернуть везде, где есть Qt используемой версии, python и COM-порт. Версия Qt не обязательно будет жёстко привязана, скорее всего, будет довольно большой разброс версий, где обеспечена совместимость на уровне исходного кода. А с небольшими правками этот разброс резко увеличится.


Например на минте с гномом будет Qtшное приложение работать?

Если сам Qt будет установлен — разумеется, так же, как и GTK-шное приложение в KDE, например. Возможно, потребуется настроить тему оформления, чтобы приложение не выглядело пришельцем времён Windows 95.


что проще/быстрее освоить?

С точки зрения программиста — Qt. С точки зрения пользователя однозначного ответа нет, всё зависит от того, насколько хорошо спроектирован гуй, и это уже от тулкита не зависит.


Где будет быстрее идти процесс написания ГУИ GTK, Qt, CLI?

Зависит исключительно от степени владения инструментами. Хотя, если сравнивать Qt и GTK, на Qt побыстрее будет, как по мне. Но я могу быть необъективен в силу личных предпочтений.


Где при прочих равных будет меньший объём кода, его читаемость?

Если сравнивать Qt и GTK — Qt. Если сравнивать GUI и CLI, скорее всего в CLI будет меньше кода, хотя всё зависит от интерфейсов (как гуёвого, так и консольного)

XMs ★★★★★
()
Ответ на: комментарий от Eva

Ну так ведь было: 'от средств, целей, условий', а во вторых почему бы и нет. Пару мес. назад купил мк с WiFi на платке за примерно 300 деревянных, ардуино нано в том же магазинчике 250 стоила.

GDK
() автор топика
Ответ на: комментарий от XMs

Также, как и любое другое приложение: прописать зависимости при сборке пакета, а потом обеспечить их разрешение и установку у конечного пользователя.

то же самое и с CLI? обожымой. Срипт на питоне - текстовый файловый, - принёс, скопировал запустил...

GDK
() автор топика
Ответ на: комментарий от GDK

А зачем ты liveCD запускаешь?

Демон твой будет на какой-нибудь «малинке» крутиться. Там же можешь nginx поставить и веб-морду сделать.

Ну, а дальше — хоть с планшета открывай веб-страничку и смотри.

anonymous
()
Ответ на: комментарий от GDK

И на 99% машин он нихрена не запустится: либо пхытона нет, либо версия пхытона не та, либо какой-нибудь пхытоноприблуды нет.

Пхытон — говно. Не нужно с этой дрянью связываться.

anonymous
()
Ответ на: комментарий от anonymous

А зачем ты liveCD запускаешь?

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

Демон твой будет на какой-нибудь «малинке» крутиться.

О нет. Вместо малинки PIC16LF1823 на 4 МГц, там будет «легонькая» прошивка, а всё «тяжёлое» - работа для ПК. С планшета - отдельный вопрос, т.к. для работы с переходником usb-ttl(serial) надо рута, как я понимаю, а сия процедура для некоторых ведроидов - обожымой, это раз, да и ради такого подкл . заниматься рутованием - да ну его нафих, это два. Если такое планировать, лучше сделать на bluetooth-ttl(serial).

GDK
() автор топика
Ответ на: комментарий от anonymous

И на 99% машин он нихрена не запустится: либо пхытона нет, либо версия пхытона не та, либо какой-нибудь пхытоноприблуды нет.

Пхытон — говно. Не нужно с этой дрянью связываться.

На 2х из 2х запустился однако и без проблем позволил всё протестировать через консоль. Кроме того ещё запустил встроенный веб сервер без всяких проблем, получилось поиграться.

GDK
() автор топика
Ответ на: комментарий от GDK

принёс, скопировал запустил

Совершенно необязательно. Может не быть питона, может не быть каких-нибудь модулей, может не соответствовать версия как питона, так и модулей… В общем, если приложение хоть чуть-чуть сложнее, чем «Hello, world», то всё как у больших проектов

XMs ★★★★★
()

и возможно ли будет это запускать из системы с livecd

Вот кстати далеко не факт что в произвольной «ливке» будет стоять полный и правильный комплект pyqt. Опять же в процессе переход с 4-го на 5ый qюt. я бы задумался.

А как сугубо практик отмечу то tcl/Tk наиболее переносим из gui-зоопарка имени *nix и Линуса. Плюс он прекрасно пробрасывается по сети на манер веба. А вот с Qt ты в этом плане маленько потрахаешся:(

antares0 ★★★★
()

если у тебя на питоне, то можно Flask/Tornado в проект воткнуть и наваять быстро хтмл морду. В контроллерах дергай методы своего класса-синглтона, управляющего железкой.

bvn13 ★★★★★
()

Мда, ну тут и срач развели... Вебморда? Для простого вывода измерений тока? Серьезно? Зачем еще разворачивать вебсервер(!) для простой программулины для вывода нескольки строк?

Короче, есть два выбора: C++ и Python. С питоном дела посложнее, думаю. Как уже говорили, не факт, что не запустится из-за несовместимости версий пакетов, самого питона.

Далее, C++. Делится на GTK и Qt. Правда, не знаю, что там у GTK для работы с ком портами, но у Qt есть QSerialPort, появившийся с 5.1. Можно сделать программу, запускающуюся хотя бы с 5.5 (это Mint 18.2 (с ним сложнее, там раньше стоял 4.8, если верить дистровотчу), убунту 16.04 LTS и полный зоопарк дистрибутивов. Это как бы я делал.

Release
()
Ответ на: комментарий от Release

Как уже говорили, не факт, что не запустится из-за несовместимости версий пакетов, самого питона.

Что? Какие будут несовместимости, если не играть в игру «2/3», не тянуть кучу сторонних либ и не писать на версии, которая выйдет завтра?

Deleted
()
Ответ на: комментарий от antares0

А как сугубо практик отмечу то tcl/Tk наиболее переносим из gui-зоопарка имени *nix и Линуса.
Python + Tkinter
Tkinter является стандартным модулем Python и входит в состав его стандартной библиотеки.

В общем решил пробовать... Поскольку livecd с минтом и гномом у меня не под руками проверить Qt не получится. А вот gtk у себя на компе...

tester@linux-sv7y:~> python python python2 python2.7 python3 python3.4 python3.4m

2.7 оказалось вообще ничего не знает про ткинтер 3 знает, но предлагает установить пакет python3-tk

Зато 2.7 умеет import gtk

GDK
() автор топика
Ответ на: комментарий от Release

Мда, ну тут и срач развели... Вебморда? Для простого вывода измерений тока? Серьезно? Зачем еще разворачивать вебсервер(!) для простой программулины для вывода нескольки строк?

Его разворачивать не особо сложно, встроенный питон делает это одной строкой. Остаётся на флешку сделать структуру папок и всё, через «любой» браузер можно его дёргать. А морду я что на html, что на Qt и др. делать не умею абсолютно одинаково )).

GDK
() автор топика
Ответ на: комментарий от GDK

наврал 3й питон тоже из коробки знает про gtk, но надо импортировать другой пакет...

GDK
() автор топика
Ответ на: комментарий от GDK

А на Qt и не особо надо уметь делать морды. Пару кликов в Qt Designer, описал слот и готово. Зачем мучаться с этим вебом, когда можно запустить программку и не париться. Но, дело твоё.

Release
()
Ответ на: комментарий от Release

Это да. Я даже не раздумывал бы, если бы предполагал пользоваться только на своем ПК, т.е. там где есть инет, установить нужные пакеты - не проблема, тем более есть кде, и инструменты Qt5 прямо из коробки. Но это не так, поэтому извращаюсь вот.

Кроме умения делать морды, надо ведь потом ещё ими будет пользоваться. И вот тут уже не совсем так всё легко. Что я буду делать в случае, если Qt не заработает? Если будет на питоне, html, js, то я могу что-либо поправить в текстовом редакторе, который наверняка найдётся где угодно и хоть как то, но пользоваться.

GDK
() автор топика
Ответ на: комментарий от GDK

Как я уже говорил, на большинстве дистрибутивов (Mint 18.2, Ubuntu 16.04 LTS) уже стоит Qt.

Но как я говорил, дело твоё. Учти, питон тоже скорее всего не у всех есть. Да если и есть, то разнятся версии (2.6 / 3.5), а отличий в версиях предостаточно.

Release
()

Раз оно уже на питоне можно попробовать запилить web-GUI на каком-нибудь Flask (рекомендовали как-то, сам не сталкивался) в виде REST-сервиса, отдающего по 'GET / HTTP 1/1' общающееся с собственно REST-сервисом JS-приложение для исполнения в броузере клиента. Для мультиплексирования (питон однопоточный) можно заюзать multiprocessing.

illy
()
Ответ на: комментарий от Release

ТС хочет гуйню, а это значит либо вебморда, либо лепить на OpenGL. Вариант с говнотыками-культями сразу шлем в анус.

Еще как вариант — Tcl/Tk, ну или openmotif...

есть два выбора: C++ и Python

Да что ты говоришь!

Делится на GTK и Qt.

При чем здесь говнотык и кресты?

не знаю, что там у GTK для работы с ком портами

Ты с Луны упал? Т.е. про termios ты никогда не слыхал? Хренасе...

И это тело будет советы давать...

anonymous
()
Ответ на: комментарий от GDK

Termios как бы и не нужен

Это с каких пор пхытон научился с портами работать средствами языка? Кто-то написал «библиотеку» для этого говна, и ты ее вызываешь. И работает эта «библиотека» как раз средствами термиоса. Хотя, если автор «библиотеки» был совсем долбанутым гомосеком, может и на культях работать (которые, в свою очередь, используют термиос)...

anonymous
()
Ответ на: комментарий от anonymous

Будто твой гуй нельзя построить и в Qt/GTK. Не неси ерунды, можно в этих тулкитах написать GUI меньше, чем за 2 минуты.

лепить на OpenGL

ага, чтобы объемные значения перекатывались по экрану меняя цвет.

termios

О да, ты бы еще сказал на асме написать. Твой терминос еще та низкоуровневая (и еще платформозависимая) штучка, по этому не нужно.

Анонимы-анонимушки.

Release
()
Ответ на: комментарий от anonymous

Про С++, Python, GTK и Qt - я так понял писалось с учётом того что я не профессиональный софтостроитель. Собственно я прекрасно всё понял. Попытки докопаться до слов нецелесообразны. Про работу питона с serial port - думается стоит сравнить рабочий код на «говне» и на «неговне». Когда на «говне» это несколько строк в сравнении с простынёй, я уж лучше его предпочту, и мне по*. Кстати да, таки юзал 3 live cd, во всех питон был... И да, в двух из них (в третьем не проверял) успешно выполнилось...: import termios , и на Open SuSE тоже, да. В общем состряпал нечто на Qt, точнее на PyQt4. Утащил на ноут с виндой, на нём пробовал liveCD mint12, mint17.3, ubuntu16. Питон есть везде, в минте12 есть удобнейший serial, но нет PyQt, в mint17 есть PyQt, но нет serial и похоже нет и QtSerialPort (не знаю как проверить наличие). Но зато на нём запустилась моя поделка. В ubuntu вообще нифига не оказалось. Нарыл ещё nCurses, она есть точно в минте17 и SuSE, интересно насколько хлопотно с ними разбираться и потом использовать.

GDK
() автор топика
Ответ на: комментарий от GDK

С планшета - отдельный вопрос, т.к. для работы с переходником usb-ttl(serial) надо рута, как я понимаю, а сия процедура для некоторых ведроидов - обожымой, это раз, да и ради такого подкл . заниматься рутованием - да ну его нафих, это два. Если такое планировать, лучше сделать на bluetooth-ttl(serial)

Рекомендую попробовать использовать звуковой тракт. По моему есть готовые библиотеки для ардуинки и андроида, чтобы обмениваться информацией через разъем наушников. Я как-то читал об этом.

ult
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.