Шаблон оконного hal приложения

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Шаблон оконного hal приложения

Сообщение torvn77 »

Есть вот такое пояснение к утилите halcompile:
Compile .comp and .c files into .so or .ko HAL realtime components (the --compile flag)
Файлы со .so,в отличии от .ko,как я понимаю работают на стороне приложения.
И вот мысль,а можно из этого .so файла создать окно,и не просто окно,а с полноценным циклом обработки сообщении?

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

Кто как предложит делать такое приложение?
Можно реализовать обработку событии окна,или придётся делать пин close_window?
Опыт рисования регтангла в винапи у меня есть,хотелось бы получить шаблон похожего приложения для Linux.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение Serg »

Можно. Изучай Python и Tk.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение torvn77 »

Мне надо пример на С для написания своих компонентов,
а о ...VCP я написал для подачи идеи,я ими заниматься не буду(да и не могу).
Ну и чтобы мой скептицизм стал понятнее поставьте deluge и нагрузите в него торентов и посмотрите на получивщиеся тормоза.
По крайней мере три года назад,когда у меня было более 300 торрентов его морда жрала 100% мошьности процессора,
уводя в тормоза 3Ггц двуядерный процессор с оверклокерским ОЗУ.
Зачем завязываться на язык,который какуюто таблицу в 300 строк нормально обслужить не может?
Плюс работа питона зависит от форматирования кода.
ИМХО Python для приложении с перспективой роста объёма вычислении это тупик и я бы хотел по возможности обойтись без него.
(Мастера всё сложнее,а вкладок всё больше)

Ну и не хотелось бы вылезать за пределы уютного halcompile

И ещё,из мануальника к halcompile я не понял,как задать,будет компонент .ko , .so или отдельной программой загружаемой через loadusr?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение Serg »

Понятно. Тему можно закрывать - у вас ничего не получится.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение torvn77 »

.UAVpilot,вчера тема набрала 38 просмотров,сейчас их уже 57.
Вы не одному мне поможете.

И ещё вопрос,в компонентах можно использовать тулкиты отличные от тулкита основного интерфейса,GTK3 там,или QT?
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение Serg »

Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение torvn77 »

А я вот искал "linux цикл обработки сообщении" и " linux обработка событии окна
Проблема в том что не находились достаточно понятные объяснения аналогичные GetMessage/CreateWindow из Виндовса.
Сейчас вроде сто-то нашлось,буду смотреть,подходит или нет.
( http://rus-linux.net/MyLDP/BOOKS/Linux- ... UI_01.html )

П.С.
А вообще мог не флудить,а сразу отправить на эту страницу.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Шаблон оконного hal приложения

Сообщение torvn77 »

По факту таже ерунда,приложение и отрисовка находятся в одной функции,а надо чтобы каждое находилось в своей.

Код: Выделить всё

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
#include <errno.h> 
#include <X11/Xlib.h> 

extern int errno; 

int main( void ) { 
   Display *d; 
   Window w; 
   XEvent e; 
   char *msg = "Hello, World!"; 
   int s; 

   if( ( d = XOpenDisplay( getenv("DISPLAY" ) ) ) == NULL ) {  // Соединиться с X сервером, 
      printf( "Can't connect X server: %s\n", strerror( errno ) ); 
      exit( 1 ); 
   } 
   s = DefaultScreen( d ); 
   w = XCreateSimpleWindow( d, RootWindow( d, s ),     // Создать окно 
                            10, 10, 200, 200, 1, 
                            BlackPixel( d, s ), WhitePixel( d, s ) ); 
   XSelectInput( d, w, ExposureMask | KeyPressMask );  // На какие события будем реагировать? 
   XMapWindow( d, w );                                 // Вывести окно на экран 
   while( 1 ) {                                        // Бесконечный цикл обработки событий 
      XNextEvent( d, &e ); 
      if( e.type == Expose ) {                         // Перерисовать окно 
         XFillRectangle( d, w, DefaultGC( d, s ), 20, 20, 10, 10 ); 
         XDrawString( d, w, DefaultGC( d, s ), 50, 50, msg, strlen( msg ) ); 
      } 
      if( e.type == KeyPress )                         // При нажатии кнопки - выход 
         break; 
   } 
   XCloseDisplay( d );                                 // Закрыть соединение с X сервером 
   return 0; 
} 
Ответить

Вернуться в «LinuxCNC»