реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Помогите разобраться с ГУЯми.
zheka
сообщение Jul 31 2012, 17:39
Сообщение #31


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



stm32stm32 пароль
Go to the top of the page
 
+Quote Post
loreal1970
сообщение Jul 31 2012, 19:30
Сообщение #32


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 3-04-12
Пользователь №: 71 164



Сенкс! догадался, но поздно. Пора на море.
Go to the top of the page
 
+Quote Post
kan35
сообщение Aug 2 2012, 05:23
Сообщение #33


Знающий
****

Группа: Участник
Сообщений: 537
Регистрация: 22-02-06
Пользователь №: 14 594



Цитата(zheka @ Jul 31 2012, 19:33) *
kan35, все лучше и лучше! В проекте, что вы выложили уже всего 30 ошибок. И все ищет core_cm3.h

Я только что проверил - полная перекомпиляция:
Total number of errors: 0
Total number of warnings: 48
IAR 6.30

Сообщение отредактировал kan35 - Aug 2 2012, 05:24
Go to the top of the page
 
+Quote Post
zheka
сообщение Aug 2 2012, 14:38
Сообщение #34


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Скомпилировалось. Я просто увлекся и удалил файл там где не надо.
Go to the top of the page
 
+Quote Post
zheka
сообщение Aug 4 2012, 07:20
Сообщение #35


Гуру
******

Группа: Участник
Сообщений: 2 072
Регистрация: 14-01-06
Пользователь №: 13 164



Возвращаясь к SPI - вот даташит на дисплей - в упор не вижу, где в нем выведены линии SPI. Дисплей китайский, 12 баксов стоит, может там просто не разведен SPI?
http://electronix.ru/forum/index.php?showt...30&start=30

Прикрепленные файлы
Прикрепленный файл  2.8TP.zip ( 2.06 мегабайт ) Кол-во скачиваний: 86
 
Go to the top of the page
 
+Quote Post
AndreyKar
сообщение Aug 23 2012, 15:06
Сообщение #36


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 17-01-07
Пользователь №: 24 508



Последние два года работал выдирая нужный исходный код из ГУИ. Требования все растут и растут... Думаю полностью перейти на emWin. С ней кто нибуть работал? Много рисурсов отжирает?
Go to the top of the page
 
+Quote Post
PanovAU
сообщение Sep 10 2012, 17:21
Сообщение #37





Группа: Новичок
Сообщений: 9
Регистрация: 12-01-05
Из: Екатеринбург
Пользователь №: 1 905



emWin смог прикрутить от NXP. Они ее бесплатно распространяют, правда уже в откомпилированном виде. Но STM это ведь тот же Cortex. Пришлось только дрова ему свои подсунуть (GUIDRV_CompactColor_16.C). Исходники дров переделывал из примеров от PSoC5/PSoC3. Я делал STM32F4 с внешним ОЗУ и соломоновским контроллером SSD1963. Динамика на 640х480 иногда подтормаживает, сказывается скорость обмена по мультиплексированной параллельной шине.

Недавно Томаш (представитель STM, который с семинарами ездит) сболтнул, что STишники тоже с Segger договариваются. И вероятно emWIN для тех кто работает на этом процессоре станет доступна легально и бесплатно. Я думаю, они это приурочат к выходу проца с TFT контроллером на борту и DDR (обещали такой).
Go to the top of the page
 
+Quote Post
jt777
сообщение Sep 11 2012, 07:03
Сообщение #38


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 612



Всем доброго времени суток. Я использую графику от Seggera (emWin). Что касается Micrium-а (ucGUI) это тот же самый сегер.
Что касается проекта emWin под Visual Studio, то этот проект сделан для отладки, причем довольно хорошей отладки( Пишу код в вижуале, смотрю что получается на экране отладчика потом этот же самый код уже заливаю в микроконтроллер). Довольно удобно при начале работы с либой.

Если использовать графику от сеггера (микриума) то низкоуровневыце функции нужно писать самому(я брал примеры и правил под свою плату). Для сеггера (микриума) есть драйвера для работы с дисплеем по SPI (см. доку) но низкоуровневые функции все равно нужно писать самому.
Кстати говоря где то я читал что Keil начал включать либу сеггера в свою MDK.

Что касается опыта работы с emWin в принципе либа неплохая, если не предъявлять к графике серьезных требований. Немного не доработан модуль Memory Device, из-за чего, при большом нагромождении виджетов видно как отрисовываеться окно и виджеты на нем. Также есть нарекания к дизайну самих виджетов, в основном писал свои Callback функции для прорисовки( требовалось "навести красоту")))). Писать Callback функции особой сложности не составляет, но в начале повозился пока разобрался что и как)))

Пользуюсь довольно долго (года 2 так точно). Проц LPC2478. Версия enWin 3.90 - старая, но свежее не нашел. Пробовал скомпиленую либу которую парят NXP под свои процы, не понравилась- сильные тормоза, но особо копаться времени не было - возможно это можно вылечить, да и под кортексы возможно тормозов не будет.

Если необходимы исходники enWin 3.90 могу выложить.
Go to the top of the page
 
+Quote Post
MEXAHuK
сообщение Sep 21 2012, 08:20
Сообщение #39





Группа: Новичок
Сообщений: 5
Регистрация: 28-01-12
Пользователь №: 69 934



Добрый день!

Тоже приобрел плату Mini-STM32-V3.0 c STM32F103RB и дисплеем 2.8" с контроллером ILI9320.
Такая же проблема, как и у zheka: 16-битная шина дисплейного контроллера раскидана пополам на два порта.
Если смотреть соответствия ног процессора битам шины по обозначениям на платах получается такая картина:

Бит шины->Бит порта

1 DB00->PC00
2 DB01->PC01
3 DB02->PC02
4 DB03->PC03
5 DB04->PC04
6 DB05->PC05
7 DB06->PC06
8 DB07->PC07

9 DB10->PB08
10 DB11->PB09
11 DB12->PB10
12 DB13->PB11
13 DB14->PB12
14 DB15->PB13
15 DB16->PB14
16 DB17->PB15

Таким образом, видно, что у контроллера дисплея задействованы биты DB0-DB7 и DB10-DB17.
Хотя, согласно даташиту на ILI9320, при 16-битном режиме передачи используются биты DB1-DB7 и DB10-DB17.
Я хотел изготовить переходник, чтобы повесить шину контроллера дисплея на один порт процессора, но вот теперь не знаю, как быть с несоответствием битов. Есть у кого нибудь соображения по этому поводу?


--------------------
Представители этой профессии производят разнообразные инструменты, необходимые другим ремесленникам. Кроме того, только они способны создавать сложные механизмы наподобие часов или секстантов, а также ловушки для защиты сундуков и жилищ. Поскольку механикам требуется дерево и железо, они умеют обращаться с топором и киркой.
Go to the top of the page
 
+Quote Post
MEXAHuK
сообщение Sep 21 2012, 12:13
Сообщение #40





Группа: Новичок
Сообщений: 5
Регистрация: 28-01-12
Пользователь №: 69 934



Извиняюсь, опечатался в предыдущем сообщении. Надо читать как:
"Хотя, согласно даташиту на ILI9320, при 16-битном режиме передачи используются биты DB1-DB8 и DB10-DB17."


--------------------
Представители этой профессии производят разнообразные инструменты, необходимые другим ремесленникам. Кроме того, только они способны создавать сложные механизмы наподобие часов или секстантов, а также ловушки для защиты сундуков и жилищ. Поскольку механикам требуется дерево и железо, они умеют обращаться с топором и киркой.
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 13 2012, 23:44
Сообщение #41


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Подскажите пожалуйста, мне в предкомпиленном emWIN нехватает функциональности видгета graph. Типа нужны дополнительные курсоры и другие плюшки. Если с доп курсорами я надеюсь справится с помощью GRAPH_SetUserDraw- дорисовывать курсоры ручками, то для функционала типа логарифмической сетки или полярных координат требуется полностью переписать видгет. Смогу ли я скомпилить свой собственный видгет, например взяв за основу исходники того же Grap из ucGUI 3.98? Есть ли примеры от seggera реализации таких самописных видгетов?
Go to the top of the page
 
+Quote Post
бомж
сообщение Oct 18 2012, 09:41
Сообщение #42





Группа: Новичок
Сообщений: 5
Регистрация: 18-11-10
Из: Нюренберг
Пользователь №: 60 993



Цитата(jt777 @ Sep 11 2012, 09:03) *
Если необходимы исходники enWin 3.90 могу выложить.


Выложите, пожалуйста, очень интересно.
Go to the top of the page
 
+Quote Post
jt777
сообщение Oct 22 2012, 06:11
Сообщение #43


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 612



Выкладываю две версии 3.9 и 3.98. В версии 3.98 не хватает некоторых модулей- 3.9 вроде бы полная. Если мне были необходимы виджеты или функции которых не хватет в версии 3.9 находил нужные файлы с функциями в версии 3.98 и добавлял из в проект. Что касается написания собственных виджетов то получалось написать самому взяв за основу стандартные. Но писал для самых простых виджетов: кнопой и скролбаров. Получалось довольно симпатично. С кнопками было довольно просто со скролбаром пришлось повозиться)).


Сообщение отредактировал jt777 - Oct 22 2012, 06:11
Прикрепленные файлы
Прикрепленный файл  ucGUI_3.9.zip ( 3.76 мегабайт ) Кол-во скачиваний: 260
Прикрепленный файл  uC_GUI_V3_98.zip ( 2.09 мегабайт ) Кол-во скачиваний: 240
 
Go to the top of the page
 
+Quote Post
khach
сообщение Oct 22 2012, 08:53
Сообщение #44


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Спасибо, наконец все лежит в одном месте. А во поводу самописных виджетов вопрос- можно ли виджет, написанный "по мотивам" исходников 3.98 заставить работать с предкомпиленной версией emWIN из Кейла (4.16 кажется сейчас)? заголовочные h-файлы для LIBов есть. Можете ли поделится примером простейшего самописного виджета, чтобы это проверить?
Go to the top of the page
 
+Quote Post
jt777
сообщение Oct 24 2012, 06:50
Сообщение #45


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 612



>можно ли виджет, написанный "по мотивам" исходников 3.98 заставить работать с предкомпиленной версией emWIN из Кейла (4.16 кажется сейчас)
Не могу ответить на этот вопрос т.к не пробовал. Что касается самописного виджета то я довольствовался написанием собственной функции для отрисовки виджета. Код привожу ниже.

CODE


/*********************************************************************
*
* CallBackBut.c
*
*/
#include "GUI.h"
#include "WM.h"
#include "FRAMEWIN.h"
#include "BUTTON.h"
#include "BUTTON_Private.h"
#include "GUI_Protected.h"
#include "mystyle.h"

/*********************************************************************
*
* Defines
*
*/
#define Style_Dark_Blue 1
#define Style_Dark_Blue_1 1+1
#define Style_Light_Blue 3
#define Style_Light_Blue_1 3+1
#define Style_Silver 5
#define Style_Silver_1 5+1
#define Style_Yellow 7
#define Style_Yellow_1 7+1
#define Style_Red 9
#define Style_Red_1 9+1
#define Style_Green 11
#define Style_Green_1 11+1

#define BUTTON_FLASHING_ENABLE WIDGET_STATE_USER1
#define BUTTON_FLASHING_UP WIDGET_STATE_USER2




/*********************************************************************
*
* GetColorPalette
*
*/

static t_2Colors GetColorPalette(int _Style)
{
t_2Colors RetPalette;
switch (_Style)
{
case Style_Dark_Blue:
case Style_Dark_Blue_1:
RetPalette.Col_1=0xFFD192;
RetPalette.Col_2=0xFFB146;
break;
case Style_Light_Blue:
case Style_Light_Blue_1:
RetPalette.Col_1=0xFFF4E5;
RetPalette.Col_2=0xFFE8C9;
break;

case Style_Silver:
case Style_Silver_1:
RetPalette.Col_1=0xECECEC;
RetPalette.Col_2=0xCECECE;
break;

case Style_Yellow:
RetPalette.Col_1=0x86CDE8;
RetPalette.Col_2=0x22C0F1;
break;
case Style_Yellow_1:
RetPalette.Col_2=0x86CDE8;
RetPalette.Col_1=0x22C0F1;
break;
case Style_Red:
RetPalette.Col_1=0x0000ff;
RetPalette.Col_2=0x0000D9;
break;
case Style_Red_1:
RetPalette.Col_2=0x0000ff;
RetPalette.Col_1=0x0000D9;
break;
case Style_Green:
RetPalette.Col_1=0x3Dff3D;
RetPalette.Col_2=0x00D600;
break;
case Style_Green_1:
RetPalette.Col_2=0x3Dff3D;
RetPalette.Col_1=0x00D600;
default: // серый
RetPalette.Col_1=0xEAEAEA;
RetPalette.Col_1=0xEAEAEA;
break;
}
return RetPalette;
}

/*********************************************************************
*
* _WIDGET_EFFECT_3D_DrawDownRec
*
*/

static void _WIDGET_EFFECT_3D_DrawDownRect(const GUI_RECT* pRect) {
GUI_RECT r;
r = *pRect;
LCD_SetColor(0x0); /* TBD: Use halftone */
GUI_DrawHLine(r.y0, r.x0, r.x1);
GUI_DrawVLine(r.x0, r.y0 + 1, r.y1);
GUI_DrawHLine(r.y1, r.x0 + 1, r.x1);
GUI_DrawVLine(r.x1, r.y0 + 1, r.y1);
}

/*********************************************************************
*
* _WIDGET_EFFECT_3D_DrawDown
*
*/

static void _WIDGET_EFFECT_3D_DrawDown(void) {
GUI_RECT r;
WM_GetClientRect(&r);
_WIDGET_EFFECT_3D_DrawDownRect(&r);
}



/*********************************************************************
*
* _OnPaint_1
*
*/

#ifndef BUTTON_BKCOLOR0_DEFAULT
#define BUTTON_BKCOLOR0_DEFAULT 0xAAAAAA
#endif

static void _OnPaint(BUTTON_Handle hObj, int _Style,int Effect)
{
int Index;
const char* s = 0;
GUI_RECT Rect,rInside;
GUI_RECT Rect1;
GUI_RECT Rect2;
t_2Colors Palette;
int height;
BUTTON_Obj * pObj;
GUI_MEMDEV_Handle hMem;
pObj = BUTTON_H2P(hObj);
Index = (WIDGET_GetState(hObj) & BUTTON_STATE_PRESSED) ? 1 : 0;
WM_GetClientRect(&Rect);
if (pObj->hpText) {
s = (const char*) GUI_ALLOC_h2p(pObj->hpText);
}
Palette=GetColorPalette(_Style);

rInside=Rect;
Rect1=Rect;
height=Rect1.y1-Rect1.y0;
Rect1.y1=Rect1.y1-height/2;
Rect2=Rect;
Rect2.y0=Rect2.y0+height/2;


hMem=0;
if(hMem)
{
GUI_MEMDEV_Select(hMem);
}

WM_SetUserClipRect(&rInside);
if(WM__IsEnabled(hObj)) // Если кнопка включена
{
if(Index==0)// кнопка отжата
{
if ((pObj->Widget.State & BUTTON_FLASHING_ENABLE))
{
if ((pObj->Widget.State & BUTTON_FLASHING_UP))
{
Palette=GetColorPalette(_Style+1);
}
else
{
Palette=GetColorPalette(_Style);
}
}

GUI_SetColor(Palette.Col_1);
GUI_FillRect(Rect1.x0,Rect1.y0,Rect1.x1,Rect1.y1);
GUI_SetColor(Palette.Col_2);
GUI_FillRect(Rect2.x0,Rect2.y0,Rect2.x1,Rect2.y1);
}
else
{
GUI_SetColor(Palette.Col_2);
GUI_FillRect(Rect1.x0,Rect1.y0,Rect1.x1,Rect1.y1);
GUI_SetColor(Palette.Col_1);
GUI_FillRect(Rect2.x0,Rect2.y0,Rect2.x1,Rect2.y1);
}
if(_getbitL(Effect,__BORDER_DISABLE)==1)
{
if(Index==0)
{
WIDGET_EFFECT_3D_DrawUp();
}
else
{
_WIDGET_EFFECT_3D_DrawDown();
}
}
}
else
{
GUI_SetColor(BUTTON_BKCOLOR0_DEFAULT);
GUI_FillRect(Rect.x0,Rect.y0,Rect.x1,Rect.y1);
WIDGET_EFFECT_3D_DrawUp();
}

if(_getbitH(Effect,__IS_FOCUS)==1)
{
GUI_RECT Focus;
Focus.x0=Rect2.x0+__LEFT_OFFSET;
Focus.y0=Rect2.y1-__BOTTOM_OFFSET-__SIZE_FOCUS_LINE ;
Focus.x1=Rect2.x1-__RIGHT_OFFSET;
Focus.y1=Rect2.y1-__BOTTOM_OFFSET;
if((Focus.x0>0)&&(Focus.y0>0)&&(Focus.x1>0)&&(Focus.y1>0) && (Focus.x0<Focus.x1)&&(Focus.y0<Focus.y1))
{
GUI_SetColor(GUI_YELLOW);
GUI_FillRect(Focus.x0,Focus.y0,Focus.x1,Focus.y1);
}

}


GUI_SetColor(BUTTON_GetTextColor(hObj, Index));
GUI_SetFont(BUTTON_GetFont(hObj));
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DispStringInRect(s, &rInside, pObj->Props.Align);
if(hMem)
{
GUI_MEMDEV_CopyToLCDAt(hMem, pObj->Widget.Win.Rect.x0,pObj->Widget.Win.Rect.y0);
GUI_MEMDEV_Delete(hMem);
}
WM_SetUserClipRect(0);
}


/*********************************************************************
*
* BUTTON_Callback_Dark_Blue
*
*/
void BUTTON_Callback_Dark_Blue(WM_MESSAGE *pMsg)
{
switch (pMsg->MsgId) {
case WM_PAINT:
_OnPaint(pMsg->hWin,Style_Dark_Blue,0); //<!!!!!!!!!!- самописная функция для отрисовки виджета
break;
default:
BUTTON_Callback(pMsg);
break;
}

}


далее в калбэк функции диалогового окна где используеться эта кнопка я подставляю свою калбэк функцию кнопки

CODE

static const GUI_WIDGET_CREATE_INFO _aDialogMainMenu[] = {
/* Function Text Id Px Py Dx Dy */
{ WINDOW_CreateIndirect, 0, 0, 0, 229, 480, 43,WM_CF_MEMDEV},
{ BUTTON_CreateIndirect, 0, GUI_ID_USER + 0, 2, 0, 83, 38},
{ BUTTON_CreateIndirect, 0, GUI_ID_USER + 1, 87, 0, 83, 38},
{ BUTTON_CreateIndirect, 0, GUI_ID_USER + 2, 172, 0, 83, 38},
{ BUTTON_CreateIndirect, 0, GUI_ID_USER + 3, 257, 0, 83, 38},
{ BUTTON_CreateIndirect, 0, GUI_ID_USER + 4, 342, 0, 83, 38},
{ BUTTON_CreateIndirect, 0, GUI_ID_USER + 5, 427, 0, 50, 38}

};


static void _cbDialogMainMenu(WM_MESSAGE * pMsg) {
WM_HWIN hDlg, hItem;
hDlg = pMsg->hWin;
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
hItem = WM_GetDialogItem(hDlg, GUI_ID_USER + 0); // получаю хэндл кнопки
WM_SetCallback(hItem, BUTTON_Callback_Dark_Blue); // устанавливаю свою калбэк функцию
break;

case WM_PAINT:
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc); /* Id of widget */
NCode = pMsg->Data.v; /* Notification code */
switch (NCode) {
case WM_NOTIFICATION_CLICKED: break;

case WM_NOTIFICATION_RELEASED: break;
}
break;


default:
WM_DefaultProc(pMsg);
}
}

}



Эта функция вместо стандартной кнопки отрисовывает кнопку разделенную по горизонтали пополам разными оттенками заданного цвета(в данном случае синим). При нажатии на кнопку оттенки меняются местами. Ну примерно так))). Для более полной информации покопайтесь на сайте сегера. Там, если я не ошибаюсь, были примеры написания собственных калбэк функций)))
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 18:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01474 секунд с 7
ELECTRONIX ©2004-2016