Перейти к содержанию
    

Доброго дня.

Нужна помощь. Первый проект, stemwin с менеджером окон. Без OS.

Как правильно сделать вывод значения переменной (к примеру температуру),

чтоб stemwin периодически само обновляло его на экране (к примеру каждую секунду).

И подскажите где можно почитать о менеджере окон stemwin, желательно на русском.

Спасибо.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а зачем нужен менеджер окон если выводится тоько одно значение?

+1 Наверно, чтобы одно окно и нарисовать с label-ом :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго дня.

Нужна помощь. Первый проект, stemwin с менеджером окон. Без OS.

 

Без OS будет больно.

 

Я делал так в свое время:

Организовывал массив с указателями на виджеты окна при создании окна, в этом же массиве связывал их с указателями на переменные и их аттрибуты.

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

GUI_Exec имеет вложенность в десятки вызовов, так что надо иметь хороший наблюдатель стека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Первый проект, stemwin с менеджером окон. Без OS.

Как правильно сделать вывод значения переменной (к примеру температуру),

 

Если это "спортивный интерес", то я понимаю, но если все, что требуется, это нарисовать прямоугольник с рамкой, в котором будет несколько текстовых строк, то зачем вообще связываться с емвином??

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я делал что-то подобное (панельку с часами, значками наподобие виндозного трея) следующим образом:

 

1. Создаю окно:

    WM_HWIN hStatusWin;
.................................
    hStatusWin = WM_CreateWindowAsChild ( 0, 0, 800, 25, WM_GetDesktopWindowEx ( 1 ),
            WM_CF_SHOW | WM_CF_HASTRANS | WM_CF_MEMDEV | WM_CF_STAYONTOP, _cbStatus, 0 );

 

2. В его оконной функции пишу:

hWin = pMsg -> hWin;

 switch ( pMsg->MsgId )
 {
case WM_CREATE:						// Создание окна
	hTimerTime = WM_CreateTimer ( hWin, ID_TIMER_TIME, 1000, 0 );
.............
break;

case WM_DELETE:						// Удаление окна
	WM_DeleteTimer ( hTimerTime );
	break;

case WM_TIMER:						// Таймер обновления окна
	WM_InvalidateWindow ( hWin );
	WM_RestartTimer ( pMsg->Data.v, 0 );
	break;

case WM_PAINT:					// Перерисовка
break;

 

hTimerTime - либо глобальная, либо локальная с модификатором static.

Идея в следующем - Вы создаёте простое окно, которое сами же и перерисовываете по таймеру в событии WM_PAINT.

 

Работает и под FreeRTOS, и без неё. от этого вообще ничего не зависит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...