Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Написание простого GUI


Автор: umup 17.9.2006, 13:22
 Возможно ли серьёзное использование Ruby для написания несложной программы сбора данных и отображения графиков, если даже старейшая GUI Ruby-Tk не имеет нормальной документации (нужно лезть в исходники, искать нужные классы и их методы). Неужели за столько лет нельзя было потратить день-два и привести доки до уровня Питона и Перла. Да, в книгах есть некоторое описание, но очень поверхностное. В версии 1.8.2 хотя бы примеры запускались, пробовал 1.8.4 и 1.8.5 - ни один не запускается (или виснет после запуска, или сразу закрывается) (запускал в Win98 и WinXP на двух разных компьютерах). Не говоря уже о разных глюках (например, где мышкой рисуются линии). По расширениям - Tix, BWidgets вообще никакой информации.
 - С Fox Toolkit также - почему-то присутствуют версии 1.2 и 1.6, в дистрибутиве 1.8.4 версия примеры запускались, поставил 1.8.5 - не работают.
 - wxRuby - посмотрел - 'early beta stage' - все ясно.

 Думаю, похожая ситуация и с множеством других - FLTK, GTK и т.д.

 Часто на разных форумах вижу ответы авторов этих и других пакетов и даже самого Ruby - типа если хочешь, напиши сам, но неужели я смогу лучше автора написать документацию, роясь в чужих исходниках ? Я, например, использую Doxygen, когда вношу изменения, сразу вношу изменения и в документацию.

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

 Короче, использовал кто-нибудь Ruby для подобных задач ?

 Я сейчас больше склоняюсь к Питону, там с GUI таких проблем нет (Tkinter, wxPython - все примеры работают стабильно).

Автор: max_lapshin 17.9.2006, 14:12
Скорее всего, эта часть неразвита из-за того, что проще всего приложение писать, как веб-приложение. Способа быстрее создать софт еще не придумали.

Автор: umup 17.9.2006, 14:21
> что проще всего приложение писать, как веб-приложение

 А можно подробнее, как это сделать, какие пакеты задействовать и т.п., вообще, в какую сторону копать (еще не сталкивался с этим). И можно ли организовать доступ к просмотру данных и графиков с других компьютеров в таком режиме (по локальной сети или через интернет)?
 Данные будут собираться через последовательный порт (уже работает, написал через вызовы WinAPI), интерфейс начал писать на Ruby-Tk, в версии 1.8.2 шло нормально, поставил 1.8.4, 1.8.5 - Tk вообще не запускается, виснет еще на этапе инициализации (в require 'Tk'), можел кто с этим сталкивался (системы WinXP, Win98).
 Нужна кроссплатформенная переносимость Windows - Linux - BSD.

Автор: max_lapshin 17.9.2006, 17:13
Я бы такое скорее всего делал бы с помощью Ruby on Rails, как фреймворка для веба. Соответственно, ты собираешь данные асинхронно к запросам через веб, их в базу данных кладешь, обрабатываешь, картинки-графики строишь, помечаешь пакет данных о готовности. Пользователь заходит через веб, получает страничку со списком обработанных кусков данных, смотрит то, что ему нужно.

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

Если нужна более детальная помощь, более детально озвучь задачу.

Добавлено @ 17:15 
Да, и автоматически решается вопрос с переносимостью. Не очень, правда, ясно, как же быть с COM-портом. Если нужно считывание данных под linux-ом, то выглядеть это будет по-другому.

Автор: umup 17.9.2006, 18:00
 С ком-портом разберусь (сейчас нужно работать только под Windows, потом разберусь с Linuxом, например как сделано в pyserial, для Ruby из подобных библиотек нашел serialport_win32, но прикрутить его не получилось, написал через вызовы WinAPI).
 В RoR пока не лезу, сначала попробую что-нибудь попроще для ознакомления с Webом, сейчас смотрю Ruby cookbook, The Ruby way, Programming Ruby, Ruby developer's guide - там есть разделы на эту тему.

Автор: max_lapshin 17.9.2006, 22:42
Проще, чем с RoR не будет уже ни с чем =) Любая самостоятельная работа с CGI тебя похоронит.

Но есть одно но. Ты в чем данные собираешься хранить? В SQL таблице, или у тебя специализированней?

Автор: umup 18.9.2006, 02:08
Наверно надо будет организовывать какую-то базу данных. Нужны как минимум 3 таблицы :
 - текущие настройки (какие приборы подключены к каким портам, настройки портов, описание каналов измерения приборов);
 - текущие данные (то, что считано из приборов на данный момент), отображаются в цифровом виде и в виде шкал и стрелок;
 - архив всех данных и аварий на срок до 2-6 месяцев (по этим данным будут строится графики).

  Короче, задача типа промышленного OPC-сервера, сеть-Modbus на несколько портов.

Автор: max_lapshin 18.9.2006, 09:14
Ясно. Вообщем, я бы структуру делал так, что есть один процесс, который асинхронно в базу пишет, а есть веб-сервер, который из базы читает. И не вздумай кидаться и реализовать самостоятельную работу с базой данных, подключение к ней и т.п. Для этого уже есть ActiveRecord.

Автор: Dark Elf 18.9.2006, 10:19
Если сильно хочешь GUI то вот тебе среда разработки с рисовалкой GUI (Ruby + Tk) - там есть выбор версии то есть таких проблем как у тебя

Цитата(umup @  17.9.2006,  13:22 Найти цитируемый пост)
В версии 1.8.2 хотя бы примеры запускались, пробовал 1.8.4 и 1.8.5 - ни один не запускается


юыть не должно

http://www.activestate.com/Products/Komodo/?mp=1

А вообще я бы использовал ROR или если уж хочешь GUI QtRuby

http://rubyforge.org/projects/korundum/

Автор: umup 18.9.2006, 11:18
> юыть не должно

 То есть, вы сами пробовали запускать ? Или это теоретическое рассуждение ?

> http://www.activestate.com/Products/Komodo/?mp=1

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

> если уж хочешь GUI QtRuby

 А QT платный для коммерческого использования, или я неправ ?

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

 Спасибо за ответы.

Автор: max_lapshin 18.9.2006, 11:22
Ну смотрите, ваше дело. Создание гуя — это реальная потеря времени.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)