Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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. |
Автор: 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 |
Ну смотрите, ваше дело. Создание гуя — это реальная потеря времени. |