Всем привет, стоит ли тут это спрашивать? но попробую.
Проблема такая: есть stm32f429i-disco. Делаю одно приложение там по лику по чекбоксу все окна перестают отвечать на сообщения.
Вот так создается этот элемент
{ CHECKBOX_CreateIndirect, "Check", ID_CHECKBOX_0, 126, 223, 80, 26,0, 0x0, 0 },
собирал GUI GUIbuilder-ом. после клика по чекбоксу появляется галочка но на сообщения перестают отвечать все окна.
приходит только этому чекбоксу сообщение WM_NOTIFY_PARENT с id-шником чекбокса и нотификационным кодом 0, при клике по любой части экрана. Что может быть?
библиотека emWin виджет checkbox
- Реклама
Re: библиотека emWin виджет checkbox
Подобная проблема не только с чекбоксом и еще у DROPDOWN см
Re: библиотека emWin виджет checkbox
а где скачивал Gui bilder?
Re: библиотека emWin виджет checkbox
он вместе с кубом от stm, куб качал тут http://www.st.com/web/en/catalog/tools/PF259243
gui builder https://yadi.sk/d/xxNhRwVYf2vr7
собранный GUI https://yadi.sk/i/waWOMjrDf2vxy
emWin версии 5,26
gui builder https://yadi.sk/d/xxNhRwVYf2vr7
собранный GUI https://yadi.sk/i/waWOMjrDf2vxy
emWin версии 5,26
- Вложения
-
- calendarDLG.c
- (31.25 КБ) 190 скачиваний
Re: библиотека emWin виджет checkbox
а проект можно посмотреть как все это впихнуто
- Реклама
Re: библиотека emWin виджет checkbox
спасибо что обратили внимание, вот проект лежал в папке \STM32Cube_FW_F4_V1.4.0\Projects\STM32F429I-Discovery\Templates
https://yadi.sk/d/l4Zdb_ZQf2zeR
среда разработки keil 5
там сначала из main вызывается CreateWindow() в ней создается окно main, в обработчике сообщения WM_INIT_DIALOG этого окна вызывается Createcalendar(). А в потоке РТОС периодически вызывается GUI_Delay(1)
https://yadi.sk/d/l4Zdb_ZQf2zeR
среда разработки keil 5
там сначала из main вызывается CreateWindow() в ней создается окно main, в обработчике сообщения WM_INIT_DIALOG этого окна вызывается Createcalendar(). А в потоке РТОС периодически вызывается GUI_Delay(1)
Re: библиотека emWin виджет checkbox
Нашел в чем дело. Ошибка была в апдейте тачскрина, ошибка вроде у производителя в кубе, нужно поменять код функции так:
static void BSP_Pointer_Update(void)
{
GUI_PID_STATE TS_State;
static TS_StateTypeDef prev_state;
TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState(&ts);
TS_State.Pressed = ts.TouchDetected;
xDiff = (prev_state.X > ts.X) ? (prev_state.X - ts.X) : (ts.X - prev_state.X);
yDiff = (prev_state.Y > ts.Y) ? (prev_state.Y - ts.Y) : (ts.Y - prev_state.Y);
//if(ts.TouchDetected)
//{
if((prev_state.TouchDetected != ts.TouchDetected )|| (ts.TouchDetected &&
((xDiff > 3 )||
(yDiff > 3))))
{
prev_state = ts;
TS_State.Layer = 0;
TS_State.x = ts.X;
TS_State.y = ts.Y;
GUI_TOUCH_StoreStateEx(&TS_State);
if(ts.TouchDetected)
osDelay(50);
}
//}
}
то что закомментировал нужно убрать, и задержку добавить
static void BSP_Pointer_Update(void)
{
GUI_PID_STATE TS_State;
static TS_StateTypeDef prev_state;
TS_StateTypeDef ts;
uint16_t xDiff, yDiff;
BSP_TS_GetState(&ts);
TS_State.Pressed = ts.TouchDetected;
xDiff = (prev_state.X > ts.X) ? (prev_state.X - ts.X) : (ts.X - prev_state.X);
yDiff = (prev_state.Y > ts.Y) ? (prev_state.Y - ts.Y) : (ts.Y - prev_state.Y);
//if(ts.TouchDetected)
//{
if((prev_state.TouchDetected != ts.TouchDetected )|| (ts.TouchDetected &&
((xDiff > 3 )||
(yDiff > 3))))
{
prev_state = ts;
TS_State.Layer = 0;
TS_State.x = ts.X;
TS_State.y = ts.Y;
GUI_TOUCH_StoreStateEx(&TS_State);
if(ts.TouchDetected)
osDelay(50);
}
//}
}
то что закомментировал нужно убрать, и задержку добавить


