Python, модульный ГУЙ, ОРФА и т.д.

В этом разделе обсуждаются вопросы по использованию ПК и КПК в робототехнике.
Программирование, настройка, аппаратная часть.

Python, модульный ГУЙ, ОРФА и т.д.

Сообщение dccharacter » 09 мар 2012, 15:06

Ребята, прошу помощи. Есть, как мне кажется, неплохая идея и неплохой концепт ее реализации. Итак, нам всем рано или поздно становится нужен ГУЙ (гусары, вашу мать!!!! молчать!). Я для своих прошлых побрякушек пользовался ORFA-terminal - брал с репы исходники, модифицировал, использовал. В частности, приделывал к ОРФЕ ТСП-сокет, делал ПИД-управение и т.д. Тема не сильно плохая, но дохлая. Под каждую задачу многоночное переписывание, тестирование, ограниченное использование и все по новой в каждом новом проекте.

Идея как "переломить" эту хреновую практику простая, навела на нее меня тема про питон на СТМ32 - чем больше играюсь с питоном, тем больше мне нравится парадигма (прости господи, если это не то, что я хотел сказать). Я все чаще использую питон для решения простых задач на ПК, особенно если речь о пакетной обработке и т.п. Один из проектов - визуализация ПИД-регулирования у меня в блоге.

Хотелось бы создать расширяемый и настраиваемый ГУЙ. Но ума и знаний не хватает (возможно, просто требуется пинок небольшой - не знаю). Например, пишем модуль на питоне, который отвечает за работу с ком-портом. Если есть готовый модуль, то, вероятно, должно быть возможно включить его в некий больший гуй. Т.е. начали проект. Создали большой фрейм, а потом простым подключением модулей наполнили этот фрейм. Т.е. подтянули модуль serial-gui с минимумом параметров, в нашем фрейме отрисовался labelFrame с названием Serial Port, там ком-порт, скорость, кнопки отключиться/подключиться. Подтянули модуль, например, PS2-controller - отрисовались нужные контролы управления джойстиком. И т.д Т.е. как конструктор - надергал модулей, заполнийл главное окно, запустил и поехал.

Можно сделать модули редакиторования команд, посылаемых по сериалу. Т.е. описать протокол коммуникации с контроллером робота. Модуль визуализации картинки с камеры. Модуль управления. Джойстик. Модуль управления питанием. Модуль статуса - вольтаж, токи, алармы. И т.д.

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

Давайте, други - кто за?

И теглайн: "ORFA - такая, какая она должна быть!" :-)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение =DeaD= » 09 мар 2012, 19:14

Ээээ, чего? :) такое ощущение, что описывается типичная IDE для любого языка с готовыми визуальными компонентами.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение Angel71 » 09 мар 2012, 20:50

я не знаю, какой именно у вас питон и какие у него особенности - есть ли уже в нём подходящие паттерны гуи, насколько легко работать с сообщениями, нужно ли будет прикручивать либы для многопоточности (какие у неё +- будут), есть ли механизмы привязки данных и т.д. :) но боюсь работы там или по самое нихачу или это будет что-то жутко примитивное. mvvm в самом примитивном виде это порядка 2-3сотни строк кода +- особенности языка и библиотек, только имхо толку. делать что-то серьёзное тож не сильно прикольно - гарантированно начнётся "а мне вот тут неудобно с этим работать", "а вот для такой-то задачи этот паттерн вообще лучше не использовать", "та блин у тебя даже нет системы плагинов", "ой, ну и гадость твоя система плагинов",.. так что как вариант или заюзать вижуал студию или чтот попроще, тот же эклипс или еще что. по крайней мере без особой надобности не нужно будет велосипед изобретать. :) поверьте, вам и без этого работы хватит, для начала с интерфейсами модулей и протоколами общения.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение elmot » 09 мар 2012, 22:39

Я за LUA, а не за питон. Питон, имхо, тяжеловат.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение Angel71 » 10 мар 2012, 08:53

тяжеловат это про lua jvm. а если серьёзно, питон не настолько печален.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение dccharacter » 10 мар 2012, 12:38

=DeaD= писал(а):Ээээ, чего? :) такое ощущение, что описывается типичная IDE для любого языка с готовыми визуальными компонентами.

Ну наверное, только компонентов, нужных нам не то чтобы много. Вот ORFA-terminal он же в QT сделан. Т.е. ты брал контролы и набрасывал на форму. Но ты форму компоновал из кнопок, лейблов, инпутов и т.д. А было бы неплохо имхо компоновать из блоков - ком-порт, протокол общения с МК, холст с видео с камеры, джойстик и т.д.

Ангел, я не то, чтобы озадачился разработкой супер-пупер программного продукта, который решит проблему голода и нехватки пресной воды на земле :-). Просто вижу что несколько человек на форуме занимается похожими вещами и каждый сидит что-то свое пишет... Че б не попытаться немножко организоваться. Твой аргумент про "у тебя чего-то нет" - ну нет у меня чего-то, возьми да напиши, или перепиши существующее. Как-то опен сорс работает - получается у людей...

А еще - не стоило мне вчера писать на форум :-))) Ну вы понимаете, да?

Добавлено спустя 23 минуты 1 секунду:
comport.jpg
comport.jpg (18.66 КиБ) Просмотров: 3731

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

Эта штука должна:
-энумировать порты
-отдавать хендл порта
-енейблить/дисейблить контролы в зависимости от статуса порта
-подключаться/отключаться от порта

Это минимум сто строк кода, которые каждый раз надо написать заново/скопипастить.
Если бы я умел, я бы написал класс и все заменил одной строкой:
comPort = comPortGUI(self, parent, controlDisableAction, style)
Но не умею :cry: Но это пока :-)
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение =DeaD= » 10 мар 2012, 13:34

Так давайте для QT компонентов налепим? :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение dccharacter » 10 мар 2012, 13:57

=DeaD= писал(а):Так давайте для QT компонентов налепим? :)

Да тяжелая она. С установкой - гемор. С настройкой - гемор. Со статической компиляцией - гемор. С, прости господи, языком - гемор :-)
Питон - запустил екзешник, прокликал по кнопочкам, запустил модуль, все. Запустил тот же модуль где угодно - даже на айфоне. Про луа - не знаю...
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение dccharacter » 10 мар 2012, 18:02

Хо-хо, а ведь у меня получилось:
comportWidget = comPortWidget(self.frame, text = "Serial settings", labelanchor="nw")
Получается объект, наследующий методы классов LabelFrame и serial.Serial, его можно отрисовать упаковщиком, например comportWidget.pack, с ним работают все методы ком-порта, например comportWidget.isOpen()
ае?
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение elmot » 10 мар 2012, 18:03

Angel71 писал(а):тяжеловат это про lua jvm. а если серьёзно, питон не настолько печален.

Какая связь между LUA и JVM?
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение dccharacter » 10 мар 2012, 18:09

Приложил скрипт, если есть желание попробовать.
Скрипт для тестирования:
Код: Выделить всё
from tkinter import *
from tkinter.ttk import *
from robowidgets import *

def main():
    root = Tk()
    serW = comPortWidget(root, text="Serial port settings")
    serW.pack()
    root.mainloop()

if __name__ == '__main__':
    main()


UPDATE: Все, довел до ума компортовый виджет, можно пользоваться. Авто-рефреш и все такое...
Вложения
robowidgets.py
(4.84 КиБ) Скачиваний: 395
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение Angel71 » 11 мар 2012, 01:16

elmot, если забыть, что язык это язык, а конкретная реализация компилятора, интерпретарота или коннектора это совсем другое, то никакой. а так http://sourceforge.net/projects/luaj/, http://www.keplerproject.org/luajava/index.html, http://code.google.com/p/kahlua/
dccharacter, да яж не против, только от прочтения первого поста сложилось впечатление, что вы хотите "слегка" посложней, чем простенькие компоненты, виджеты, сниппеты,...
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение elmot » 11 мар 2012, 10:11

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


именно. Берем оригинальный луа, который нативный, и пусть работает. главное есть позитивный пример - вебгуй в прошивках openwrt написан именно на луа. Естественно, никакая ява в роутер не влезет.
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение Angel71 » 11 мар 2012, 10:45

тогда не вижу вообще никаких трудностей с выбором. :) питон для десктопа, а луа для роутера и тогда можно будет согласовано работать по двум направлениям.
Последний раз редактировалось Angel71 11 мар 2012, 10:57, всего редактировалось 1 раз.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Python, модульный ГУЙ, ОРФА и т.д.

Сообщение elmot » 11 мар 2012, 10:56

Мб на десктоп тоже луа. Зачем 2 языка? надо бы взглянуть, что у луа с гуями десктопными. И, подозреваю, очень быстро встанет вопрос про opencv на десктопе. Интересно, что там с фасадами для с++ библиотек?
Аватара пользователя
elmot
 
Сообщения: 5691
Зарегистрирован: 10 ноя 2011, 12:02
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья

След.

Вернуться в Компьютеры в роботостроении

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0