linux下minigui移植与软键盘

合集下载

MiniGUI利用触摸屏实现屏幕键盘驱动输入法的设计

MiniGUI利用触摸屏实现屏幕键盘驱动输入法的设计

MiniGUI利用触摸屏实现屏幕键盘驱动输入法的设计MiniGUI利用触摸屏实现屏幕键盘驱动输入法的设计思想:1、利用MiniGUI的coolbar控件来创建一个屏幕键盘的外观;其代码以后会贴上;#include "common.h"#define ITEM_NUM1 14 /* coolbar */#define ITEM_NUM2 14 /* coolbar */#define ITEM_NUM3 12 /* coolbar */#define ITEM_NUM4 12 /* coolbar */#define ITEM_NUM5 8 /* coolbar */#define IDC_NovaSKB1 1001 /* ime */#define IDC_NovaSKB2 1002 /* ime */#define IDC_NovaSKB3 1003 /* ime */#define IDC_NovaSKB4 1004 /* ime */#define IDC_NovaSKB5 1005 /* ime */#define HEIGHT_SKB 115 /* 软键盘 */#define WIDTH_SKB 240 /* 软键盘 */static const char* caption1[] ={" ` ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 "," 6 ", " 7 ", " 8 ", " 9 ", " 0 ", " - ", " = ", " <- "};static const int SCANCODE1[] ={SCANCODE_GRAVE, SCANCODE_1, SCANCODE_2, SCANCODE_3, SCANCODE_4,SCANCODE_5, SCANCODE_6, SCANCODE_7, SCANCODE_8, SCANCODE_9,SCANCODE_0, SCANCODE_MINUS, SCANCODE_EQUAL,SCANCODE_BACKSPACE};static const char* caption2[] ={"Tab", " q ", " w ", " e ", " r ", " t "," y ", " u ", " i ", " o ", " p ", " [ ", " ] ", " \\ "};static const int SCANCODE2[] ={SCANCODE_TAB, SCANCODE_Q, SCANCODE_W, SCANCODE_E, SCANCODE_R,SCANCODE_T, SCANCODE_Y, SCANCODE_U, SCANCODE_I, SCANCODE_O,SCANCODE_P, SCANCODE_BRACKET_LEFT, SCANCODE_BRACKET_RIGHT, SCANCODE_BACKSLASH };static const char* caption3[] ={"Shift ", " a ", " s ", " d ", " f ", " g "," h ", " j ", " k ", " l ", " ; ", " ' "};static const int SCANCODE3[] ={SCANCODE_LEFTSHIFT, SCANCODE_A, SCANCODE_S, SCANCODE_D, SCANCODE_F,SCANCODE_G, SCANCODE_H, SCANCODE_J, SCANCODE_K, SCANCODE_L,SCANCODE_SEMICOLON, SCANCODE_APOSTROPHE};static const char* caption4[] ={"Ctrl ", " z ", " x ", " c ", " v ", " b "," n ", " m ", " , ", " . ", " / ", " Enter "};static const int SCANCODE4[] ={SCANCODE_LEFTCONTROL, SCANCODE_Z, SCANCODE_X, SCANCODE_C, SCANCODE_V,SCANCODE_B, SCANCODE_N, SCANCODE_M, SCANCODE_COMMA, SCANCODE_PERIOD,SCANCODE_SLASH, SCANCODE_ENTER};static const char* caption5[] ={"Del ", " 英 ", " 中 ", " Space "," | ", " | ", " -> ", " <- "};static const int SCANCODE5[] ={SCANCODE_REMOVE, -1, -1, SCANCODE_SPACE, SCANCODE_CURSORBLOCKDOWN,SCANCODE_CURSORBLOCKUP,SCANCODE_CURSORBLOCKLEFT,SCANCODE_CURSORBLOCKRIGHT};static void create_novaskb1 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;static BITMAP del_bmp;if (LoadBitmap (HDC_SCREEN, &del_bmp, "./little/del.bmp") != ERR_BMP_OK)exit(1);cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB1,0, 0, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData = 0;for (i = 0; i < ITEM_NUM1-1; i++) {item.insPos = i;item.id = i;item.Caption = caption1[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);}/* del 按键 */item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp = &del_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData= 0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }static void create_novaskb2 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB2,0, 22, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData = 0;for (i = 0; i < ITEM_NUM2; i++) {item.insPos = i;item.id = i;item.Caption = caption2[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }}static void create_novaskb3 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB3,0, 44, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData = 0;for (i = 0; i < ITEM_NUM3; i++) {item.insPos = i;item.id = i;item.Caption = caption3[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }}static void create_novaskb4 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB4,0, 66, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData = 0;for (i = 0; i < ITEM_NUM4; i++) {item.insPos = i;item.id = i;item.Caption = caption4[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);}}static void create_novaskb5 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;static BITMAP down_bmp;static BITMAP up_bmp;static BITMAP left_bmp;static BITMAP right_bmp;if (LoadBitmap (HDC_SCREEN, &down_bmp, "./little/down.bmp") != ERR_BMP_OK)exit(1);if (LoadBitmap (HDC_SCREEN, &up_bmp, "./little/up.bmp") != ERR_BMP_OK)exit(1);if (LoadBitmap (HDC_SCREEN, &left_bmp, "./little/left.bmp") != ERR_BMP_OK)exit(1);if (LoadBitmap (HDC_SCREEN, &right_bmp,"./little/right.bmp") != ERR_BMP_OK)exit(1);cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB5,0, 88, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData = 0;for (i = 0; i < ITEM_NUM5 - 4; i++) {item.insPos = i;item.id = i;item.Caption = caption5[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);}#if 1/* down 按键 */item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp = &down_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData= 0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);/* up 按键 */i++;item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp = &up_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData= 0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); /* left 按键 */i++;item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp = &left_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData= 0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); /* right 按键 */i++;item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp = &right_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData= 0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);#endif}static int NovaSKBProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){switch (message){case MSG_CREATE:create_novaskb1(hWnd);create_novaskb2(hWnd);create_novaskb3(hWnd);create_novaskb4(hWnd);create_novaskb5(hWnd);break;case MSG_COMMAND:{int id = LOWORD (wParam);int code = HIWORD (wParam);switch (id){case IDC_NovaSKB1:SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE1[code], 0);break;case IDC_NovaSKB2:SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE2[code], 0);break;case IDC_NovaSKB3:SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE3[code], 0);break;case IDC_NovaSKB4:SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE4[code], 0);break;case IDC_NovaSKB5:if (code == 1){/* 英文 */SetIMEStatus(IS_ENABLE, 0);/* 刷新输入窗口 */ShowWindow(hIMEWnd, SW_HIDE);ShowWindow(hIMEWnd, SW_SHOWNORMAL);}else if (code == 2){/* 中文 */SetIMEStatus(IS_ENABLE, 1);/* 刷新输入窗口 */ShowWindow(hIMEWnd, SW_HIDE);ShowWindow(hIMEWnd, SW_SHOWNORMAL);}else{SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE5[code], 0);// Send2ActiveClient (MSG_KEYDOWN, SCANCODE_CURSORDOWN, 0);// Send2ActiveClient (MSG_KEYUP, SCANCODE_CURSORDOWN, 0);}break;}}break;case MSG_KEYDOWN:Send2ActiveClient (MSG_KEYDOWN, wParam, lParam);break;case MSG_DESTROY:DestroyAllControls (hWnd);return 0;case MSG_CLOSE:DestroyMainWindow (hWnd);PostQuitMessage (hWnd);return 0;}return DefaultMainWinProc(hWnd, message, wParam, lParam);}static void InitNovaSKBCreateInfo (PMAINWINCREATE pCreateInfo, int x, int y){pCreateInfo->dwStyle = WS_ABSSCRPOS | WS_BORDER | WS_VISIBLE;pCreateInfo->dwExStyle = WS_EX_TOOLWINDOW;pCreateInfo->spCaption = "NovaSKB" ;pCreateInfo->hMenu = 0;pCreateInfo->hCursor = GetSystemCursor(IDC_ARROW);pCreateInfo->hIcon = 0;pCreateInfo->MainWindowProc = NovaSKBProc;pCreateInfo->lx = x;pCreateInfo->ty = y;pCreateInfo->rx = x + WIDTH_SKB;pCreateInfo->by = y + HEIGHT_SKB;pCreateInfo->iBkColor = PIXEL_lightwhite ;pCreateInfo->dwAddData = 0;pCreateInfo->hHosting = HWND_DESKTOP;}HWND NovaSKBWindow(HWND hosting, int x, int y){HWND hwnd_novaskb;MAINWINCREATE CreateInfo;InitNovaSKBCreateInfo(&CreateInfo, x, y);CreateInfo.hHosting = hosting;hwnd_novaskb = CreateMainWindow (&CreateInfo);if (hwnd_novaskb == HWND_INVALID)return -1;ShowWindow(hwnd_novaskb, SW_HIDE);return hwnd_novaskb;}//不要认为这段代码可以直接编译通过,但没有思想上的和语法上的错误;次程序只是位了说明一下思想,//要是真想学,琢磨下,我以后在贴上测试过的代码;2、在MSG_CREATE消息中利用GBIMEWindow来创建一个IME 窗口;3、在coolbar的proc中用SendMessage(hIMEWnd,MSG_KEYDOWN,SCANCODE,0)来向IME窗口发送模拟键盘的消息;4、IME接收到MSG_KEYDOWN后会把此消息当做键盘消息来做;进而屏幕键盘实现。

MiniGUI3.0.12安装与移植

MiniGUI3.0.12安装与移植

MiniGUI3.0.12及组件下载地址/downloads/index.html libmgplus-1.2.4下载地址/download/yong_f/40628071. 需要下载的组件libminigui-gpl-3_0_12.tar.gzmg-samples-3_0_12.tar.gzfreetype-1_3_1.tar.gzjpegsrc_v7.tar.gzlibpng-1_2_37.tar.gzminigui-res-be-3_0_12.tar.gzzlib-1_2_2.tar.gzqvfb2-2.0libmgplus-1.2.4(可以在csdn上下载到)(qvfb所需要的包)libqt3-mtlibqt3-mt-devalienqt-devel-3.3.8-4.fc7.i386.rpm2.安装各组件<1>libminigui-gpl-3_0_12.tar.gz(库)./configure --prefix=/usr/local --enable-qvfbial --disable-splash --disable-screensaver sudo makesudo make install<2>minigui-res-be-3_0_12.tar.gz(资源包)./configure --prefix=/usr/localsudo makesudo make install<3>freetype-1_3_1.tar.gz./configure --prefix=/usr/localsudo makesudo make install(在安装时会有ftdump.c的预处理标识符错误,修改./test/ftdump.c里的Print_Mem( memory_footprint.##field, string )改为: Print_Mem( memory_footprint.field, string )#define FOOTPRINT( field ) Save_Memory( &memory_footprint.##field )修改为:#define FOOTPRINT( field ) Save_Memory( &memory_footprint.field )<4>安装PNG库./configure --prefix=/usr/localsudo makesudo make install<5>安装JPEG库./configure --prefix=/usr/local --enable-sharedsudo makesudo make install<6>安装zlib库./configure --prefix=/usr/localsudo makesudo make install<7>libmgplus-1.2.4./configure --prefix=/usr/localsudo makesudo make install将/usr/local/lib加入到.bashrc中<8>安装qvfb2(因为需要qt-3.3作支持,所以需要先安libqt3-mt,libqt3-mt-dev,下载qt-devel-3.3.8-4.fc7.i386.rpm,然后用alien转为deb,再用dpkg -i --force-overwrite 来安装此包) sudo apt-get install libqt3-mtsudo apt-get install libqt3-mt-devsudo apt-get install aliensudo alien qt-devel-3.3.8-4.fc7.i386.rpmdpkg -i --force-overwrite qt-devel-3.3.8-4.fc7.i386.deb(开始安qvfb)cd qvfb2-2.0./configure --with-qt-includes=/usr/lib/qt-3.3/include --with-qt-libraries=/usr/lib/qt-3.3/lib --with-qt-dir=/usr/lib/qt-3.3sudo makesudo make install(qvfb2与1不同,没有文件输入是不会显示出框图的)<9>修改MiniGUI.cfg[system]# GAL engine and default optionsgal_engine=pc_xvfb(修改此处)defaultmode=640x480-16bpp(修改此处)# IAL engineial_engine=qvfbmdev=/dev/input/micemtype=IMPS2[fbcon]defaultmode=1024x768-16bpp[qvfb]defaultmode=640x480-16bppwindow_caption=QVFB-for-MiniGUI-3.0exec_file=/usr/local/bin/qvfbdisplay=0#{{ifdef _MGGAL_PCXVFB[pc_xvfb]defaultmode=640x480-16bppwindow_caption=XVFB-for-MiniGUI-3.0-(Gtk-Version)exec_file=/usr/local/bin/qvfb2(修改此处)display=0#}}<10>mg-samples-3.0.12 并运行./configure --prefix=/usr/localsudo makesudo make install./same/same问题1:执行示例出现Wrong JPEG library version: library is 70, caller expects 62原因:在编译libminigui的时候用的库是62,而在编示例时用的是70,导致版本不对解决办法:将/usr/lib/libjpeg.so /usr/local/libjpeg.so.62 全指向libjpeg.so.7.0.0 然后修改/usr/include/jpeglib.h 中的版本号为70,然后重新编译libminigui(若是坚持用libjpeg7的话用此办法)(关于miniGUI在2440上的移植会在下篇更新)以下是关于minigui的移植,认为是最详细的一篇,经本人实验也已经成功,转自/forum/showtopic-3899.aspx采用交叉编译方式【软件环境】PC:ubuntu 10.04开发板:Linux 2.6.32.2@2440Target: arm-none-linux-gnueabigcc version 4.4.3编译minigui3.0并移植需要的文件有(基本上都是比较新的版本,有些库文件在我尝试后还是选择了比较旧的版本):FreeType库:minigui字体引擎freetype-1_3_1.tar.gzJPEG库:minigui显示jpeg图片jpegsrc.v8c.tar.gzpng库:minigui显示png图片libpng-1.0.59.tar.gzzlib库:minigui数据压缩函数库zlib-1.2.6.tar.gzminigui所用到的资源minigui-res-be-3_0_12.tar.gzminigui核心库libminigui-gpl-3_0_12.tar.gzminigui样例mg-samples-3_0_12.tar.gzStep1:建立工作目录,如/home/profiles/minigui,将上述*.tar.gz放入该目录,并解压tar xzf freetype-1_3_1.tar.gztar xzf jpegsrc.v8c.tar.gztar xzf libpng-1.0.59.tar.gztar xzf zlib-1.2.6.tar.gztar xzf minigui-res-be-3_0_12.tar.gztar xzf libminigui-gpl-3_0_12.tar.gztar xzf mg-samples-3_0_12.tar.gzStep2:[编译Freetype库]cd freetype-1.3.1/(A)./configure --host=arm-linux --enable-static --prefix=/usr/local/minigui修改Makefile第12行all: ttlib ttest ttpo为all: ttlib ttpo第34行注释(或删)掉,即#cd $(FTTESTDIR); $(MAKE) -f $(MAKEFILE) install 否则make就会出现下面的错误ftdump.c:172:1: error: pasting "." and "glyph_object" does not give a valid preprocessing tokenftdump.c:182:1: error: pasting "." and "first_instance" does not give a valid preprocessing tokenftdump.c:191:1: error: pasting "." and "second_instance" does not give a valid preprocessing tokenftdump.c:201:1: error: pasting "." and "face_object" does not give a valid preprocessing tokenftdump.c:202:1: error: pasting "." and "glyph_object" does not give a valid preprocessing tokenftdump.c:203:1: error: pasting "." and "second_instance" does not give a valid preprocessing token(B)make(C)make install[编译JPEG库]cd jpeg-8c/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar如(后面的库的编译修改configure亦如此):## M4sh Initialization. #### -------------------- ### Be more Bourne compatibleCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arDUALCASE=1; export DUALCASE # for MKS shif test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux --enable-shared(C)make(D)make install[编译PNG库]cd libpng-1.0.59/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux(C)make(D)make install[编译zlib库]cd zlib-1.2.6/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui --shared(C)make(D)make install[编译资源库]cd minigui-res-be-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAR=arm-linux-ar(B)./configure --prefix=/usr/local/minigui(C)make(D)make install[编译核心库]cd libminigui-gpl-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arCFLAGS="-I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CPPFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CXXFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "(此处要特别注意,我用的编译器所在目录为/opt/FriendlyARM/toolschain/4.4.3,注意跟自己环境的差异,下面的示例库编译亦然)(B)./configure --prefix=/usr/local/minigui --host=arm-linux \--target=arm-linux --build=i386-linux --with-osname=linux \--with-style=classic --with-targetname=fbcon --enable-autoial \--enable-rbf16 --disable-vbfsupport --enable-tslibial(上面的--enable-tslibial选项是minigui支持触摸屏必选的选项,后面会讲到)(C)make(D)make install[编译示例库]cd mg-samples-3.0.12/(A)修改configure(vi configure)在文件开始的位置加上CC=arm-linux-gccCXX=arm-linux-g++LD=arm-linux-ldAS=arm-linux-asAR=arm-linux-arCFLAGS="-I/usr/local/minigui/include-I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CPPFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "CXXFLAGS="-g -I/usr/local/minigui/include -I/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi/include "(B)./configure --prefix=/usr/local/minigui --build=i386-linux \--host=arm-linux --target=arm-linux(C)make这里应该会出错,是因为Makefile里的参数不对,程序找不到链接库,这么多Makefile,需要修改哪一些呢?查看根目录下的Makefile(vi Makefile),(line 204)会发现:COMMON_SUBDIRS = same graphics housekeeper minesweeper ctrl_dlg \lf_skin font_text look_feel dbuff notebook same graphics ... notebook这几个目录会按顺序依次被make,查看刚才出错的信息,肯定是same首先没被编译通过。

MiniGUI的软键盘快速设计方法

MiniGUI的软键盘快速设计方法
第 3 卷 第2 期 4 4
V 14 o. 3






20 08年 1 2月
De e e 0 8 c mb r2 0
No. 24
Co mp t rEn i e rn u e gn e i g
开发研究与设计技术 ・
文 编 o — 4 ( 02_ 2 2 文 标 码 A 章 号t o -2 2 84_ 7 1 0 3 8o ) 0 4 献 识 :
CTRL

具栏 上依 次创建能显示对应字符 的多个按钮 。本文软键盘面
板如图 1 所示 。
C O B O L AR 来创建 一个 酷工具 栏控件 ,就 可 以使 用 AD I E 消息 向 已创 建 的酷 工具 栏 内添 加按 钮 项 DT M
ZHANG n LUO i Bi , Gu - e
( l g f noma o cec n n ier g Cet l o t ies yC agh 10 3 Col e fr t nSin eadE gn ei , nr uhUnvri , h n s a 0 8 ) e oI i n aS t 4
到的按键并进行符合 习惯的布局。本文 先在 Mii U 的一个 nG I 窗 V( 以是主窗 口或对话框) I 可 上设计了包括 5行按键值的软 键盘面板 ,其 中每一行是一个酷工具栏 ,然后在 这 5个酷工
软键盘有助于众多用到 Mii I nGU 的嵌入式项 目的开发。
1 Mi G I C o a 控件及输入法窗 口 n U 的 ol r i b
酷工具栏( o la) C obr 是栏 。因为它包含在 Mii U 的 mgx 扩展库 中,所以 nG I et 必须初始化 mg x 库才能使用该控件 。 o la et C obr的使用方法很 简便 ,通过调 用 CetWid w ) rae n o (函数 ,并指 定控件 类名 称

1_MiniGUI移植实验

1_MiniGUI移植实验

广州致远电子有限公司
MagicARM2410教学实验开发平台
4.实验预习要求
必须先做<< 实验指导>> 必须先做 <<… 实验指导>> 第 5 、6 章的实验 ,在 RedHat <<… >>第 章的实验, 操作系统上建立交叉编译环境, Linux 9.0操作系统上建立交叉编译环境,掌握交叉编译 和下载Linux应用程序到MagicARM2410上并运行 Linux应用程序到MagicARM2410上并运行; 和下载Linux应用程序到MagicARM2410上并运行; <<… 仔 细 阅 读 <<… 实 验 指 导 >> 第 1 章 的 内 容 , 了 解 MagicARM2410 实验箱的硬件结构, 2410实验箱的硬件结构 MagicARM2410 实验箱的硬件结构 , 注意彩色液晶屏驱动 电路; 电路; 阅读MiniGUI的文档<<MiniGUI用户手册>> MiniGUI的文档<<MiniGUI用户手册>>、 阅读MiniGUI的文档<<MiniGUI用户手册>>、<<MiniGUI 编程指南>> 了解MiniGUI的基本特点和应用配置选项, >>, MiniGUI的基本特点和应用配置选项 编程指南>>,了解MiniGUI的基本特点和应用配置选项, 以及应用程序的编写。 以及应用程序的编写。
广州致远电子有限公司
MagicARM2410教学实验开发平台
2.实验设备
硬件: 硬件: PC机 PC机 1台 MagicARM2410教学实验开发平台 MagicARM2410教学实验开发平台 1台 USB鼠标 USB鼠标 1个 USB键盘 USB键盘 1个 软件: 软件: 9.0操作系统 安装有Autoconf 操作系统( Autoconf和 RedHat Linux 9.0操作系统(安装有Autoconf和 Automake工具 工具) Automake工具) 嵌入式Linux Linux开发环境 嵌入式Linux开发环境 MiniGUILinux)软件 MiniGUI-STR(for Linux)软件

Linux下面Minigui、mSQL的安装与配置以及Makefile的使用

Linux下面Minigui、mSQL的安装与配置以及Makefile的使用
[fbcon]
defaultmode=1024x768-16bpp
[qvfb]
defaultmode=640x480-16bpp
display=0
---------------------------------------------------
/bin/sh ../../libtool --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../../include -I../include -g -O2 -D__MINIGUI_LIB__ -D_REENTRANT -O2 -Wall -Wstrict-prototypes -pipe -DNDEBUG -c -o varbitmap.lo `test -f 'varbitmap.c' || echo './'`varbitmap.c
[system]
# GAL engine
gal_engine=qvfb
# IAL engine
ial_engine=qvfb
mdev=/dev/mouse
mtype=IMPS2
1>安装minigui-res-str-1.3.3.tar.gz (这个是minigui所使用的一些资源,比如字体等等)
安装命令:
[root@localhost]#tar -zxf minigui-res-1.3.3.tar.gz (解压)
initrd /initrd-2.6.21-1.31Array4.fc7.img
这里的root(hd0,0)以及kernel,initrd段需要结合自己的系统和分区情况填写,kernel项后面的vga=0x0317 fb:on是设置显示器分辨率,打开帧缓冲。

MiniGui安装和移植

MiniGui安装和移植

MiniGui安装和移植一MiniGui的安装首先从MiniGui官网上下载安装文件。

一共需要下载三个压缩文件:libminigui-1.6.10.tar.gz、minigui-res-1.6.10.tar.gz、mg-samples-1.6.10.tar.gz。

安装步骤如下:一:解压缩安装包。

# tar xzvf libminigui-1.6.10.tar.gz二:运行配置程序。

# cd libminigui-str-1.6.10#./configure –disable-jpgsupport –disable-pngsupport三:编译MiniGui源代码# make四:安装MiniGui函数库# su –c “make install”五:查看安装好的库文件MiniGui的动态库文件和静态库文件都被安装到了/usr/local/lib目录下:#ls –l /usr/local/lib而MiniGui相关的头文件则被安装到了/usr/local/include/minigui/目录下Ls –l /usr/local/include/minigui运行时需要配置文件在/usr/local/etc/目录下Ls –l /usr/local/etc这样便完成了MiniGui函数库libminigui-1.6.10.tar.gz的安装接下安装资源包资源包minigui-res-1.6.10.tar.gz并不需要编译,直接安装即可。

解压缩文件#tar xzvf minigui-res-1.6.10.tar.ga打开minigui-res-1.6.10文件#cd minigui-res-1.6.10安装函数库# su –c ”make install”默认情况下,这些资源文件被安装在/usr/local/lib/minigui/res目录下# la /usr/local/lib/minigui/res解压示例代码包# tar mg-samples-1.6.10.tar.gz 打开mg-samples-1.6.10文件# cd mg-samples-1.6.10#./configure编译#make成功编译完成后,就可以在mg-samples-1.6.10/src目录下看到一些被编译好的可执行程序。

嵌入式Linux环境下MiniGUI的研究与移植

嵌入式Linux环境下MiniGUI的研究与移植

嵌入式Linux环境下MiniGUI的研究与移植前言近年来随着嵌入式设备与市场需求的广泛结合,手机、PDA、DVD 播放机等产品的应用对可视化操作界面的简洁和方便提出了更高的要求,这都需要一个稳定可靠的高性能GUI 系统来提供支持。

图形用户界面(Graphic User Interface,简称GUI)的广泛流行是当今计算机技术的重要成就之一,它极大地方便了非专业用户的使用,人们可以通过窗口、菜单方便地进行操作。

由于嵌入式系统实时性要求高,同时嵌入式系统硬件配置又有限,所以对轻型GUI 的需求更加突出。

另外,嵌入式系统往往是一种订制设备,它们对GUI 的需求也各不相同,因此GUI 也必须是可订制的。

综上所述,嵌入式系统对GUI 的基本要求应包括轻型、占用资源少、高性能、高可靠性以及可配置。

MiniGUI 是目前比较常用的几种GUI 系统之一,与其他的GUI 相比,MiniGUI 最显著的特点就是轻型、占用资源少,而且在这几年的发展里,MiniGUI 已经非常成熟和稳定了,在许多产品和项目中都已得到了实际应用。

1 MiniGUI 的特点和体系结构1. 1 MiniGUI 的特点MiniGUI 是由原清华大学教师魏永明主持开发的轻量级图形系统,是一种面向嵌入式或实时系统的图形用户界面支持系统。

它遵循GPL 公约,是基于SVGALib 及LinuxThread 库的多窗口GUI 支持系统。

能跨多种操作系统,主要运行于linux 及一切具有POSIX 线程支持的POSIX 兼容系统,包括普通嵌入式Linux、eCos、uC/OS-II、VxWorks 等系统,是国内最早的自由软件之一。

MiniGUI 的主要特点有:(1) 遵循GPL 条款的纯自由软件;(2) 提供了完备的多窗口机制;。

嵌入式Linux的MiniGUI研究和移植

嵌入式Linux的MiniGUI研究和移植

嵌入式Linux的MiniGUI研究和移植摘要:分析嵌入式操作系统下典型的图形用户界面MiniGUI的结构和特点,并提出将其移植到SUNPLUS的DVD720上的方案。

关键词:图形用户界面(GUI) 嵌入式系统Frame Buffer引言1 嵌入式Linux下的GUI概况1.1 GUI在嵌入式系统中的地位随着嵌入式系统的广泛应用,PDA、机顶盒、DVD/VCD播放机及WAP手机已经迅速普及。

图形用户界面(GUI)的广泛流行,是当今计算机技术的重大成就之一。

它极大地方便了非专业用户的使用,因此实时嵌入式系统对GUI的需求越来越明显,而这一切均要求有一个高性能、高可靠的GUI 的支持。

由于嵌入式系统实时性要求非常高,对GUI的要求也更高。

这些系统一般不希望建立在庞大累赘的、非常消耗系统资源的操作系统和GUI之上,比如Windows或X Window,太过庞大和臃肿。

这样,这些系统对轻型GUI的需求更加突出。

另外嵌入式系统往往是一种定制设备,它们对GUI的需求也各不相同。

有些系统只要求一些图形功能,而有些系统要求完备的GUI支持,因此,GUI也必须是可定制的。

嵌入式系统对GUI的基本要求包括轻型、占用资源少、高性能、高可靠性及可配置[1]。

1.2 目前嵌入式系统中GUI的实现尽管实时嵌入式系统对GUI的需求越来越明显,但目前GUI的实现方法各有不同[1]:①某些大型厂商有能力自己开发满足自身需要的GUI系统。

②某些厂商没有将GUI作为一个软件层从应用程序中剥离,GUI的支持逻辑由应用程序自己来负责。

③采用某些比较成熟的GUI系统,比如Mini GUI、MicroWindows 或者其它GUI系统。

比较常用的有如下几种GUI系统:紧缩的X Window 系统、MiniGUI、MicroWindows、OpenGUI及QT/Embedded 等。

下面简单介绍这些系统。

(1)MiniGUIMiniGUI[2]由原清华大学教师魏永明先生开发,是一种面向嵌入式系统或者实时系统的图形用户界面支持系统。

MiniGUI的移植

MiniGUI的移植

在AT91SAM9261EK上移植MiniGUI当前流行的图形用户界面有MiniGUI、ucGUI、QT/Embedded等,ucGUI需要付费才能使用,QT/Embedded占用资源多,内存消耗大。

MiniGUI是遵循GPL条款发布的自由软件,目标是为基于Linux的实时嵌入式系统提供一个轻量级的图形用户界面支持系统,与其他GUI比,MiniGUI的特点是轻型、占用资源少。

交叉编译工具:arm-linux-gcc-4.3.2宿主机:fedora7 ——linuxLinux kernel: 2.6.21开发平台:A T91SAM9261EK一、准备相关资源Libminigui-1.6.10.tar.gz MiniGUI函数库源代码Miniguires-1.6.10.tar.gz MiniGUI所使用的资源,包括基本字体、图标、位图等。

Mg-samples-str-1.6.10.tar.gz MiniGUI的演示程序。

Mde-1.6.10.tar.gz MiniGUI 图像界面应用程序二、建立相关目录、解压缩文件⑴mkdir /mtemp/minigui 存放源文件⑵展开各个文件:tar –xvzf libminigui-1.6.10.tar.gztar –xvzf miniguires-1.6.10.tar.gztar –xvzf mg-samples-str-1.6.10.tar.gztar –xvzf mde-1.6.10.tar.gz在/mtemp/minigui/下面会生成四个对应的文件。

三、交叉编译MiniGUi在宿主机上建立/usr/local/minigui用于存放编译安装生成的库文件⑴libminigui的编译安装cd libminigui-1.6.10运行配置脚本文件:./configure –prefix=/usr/local/minigui –build=i386-linux –target=arm-linux –host=arm-linux执行完后生成Makefile文件,然后依次执行make make install命令,如果没有错误出现,那么成功,MiniGUI的函数库和头文件以及配置文件等资源被安装在/usr/local/minigui下面。

minigui在uclinux上的移植心得

minigui在uclinux上的移植心得

M i n i g u i在u C l i n u x上的移植心得-标准化文件发布号:(9556-EUATWK-MWUB-WUNN-INNUL-DDQTY-KIIMinigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子2、把源码文件复制到/home/liu/minigui目录下,解开源码3、[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tarzxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建首先你需要一个 Linux 环境,我安装的是 RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。

这里搭建的环境是让 MiniGUI 在你的 PC 上可以跑起来,这样以后你开发程序就可以只在 PC 上开发,调试好,最后交叉编译一下放到板子上就行了。

把 1.3.3 解开[user]# tar zxf[user]# tar zxf编译 libminigui ,这个是 minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure . yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是 yes ,不然后面你的程序肯定会有问题,如果这里不是 yes 的话,肯定是你的 Redhat 9 安装不对,告诉过你安装时选 everything ,你选了吗其中 ttf 库是对 TrueType 字体的支持,png 库是对 png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。

Minigui在uClinux 上的移植心得

Minigui在uClinux 上的移植心得

Minigui在uClinux 上的移植心得1、下载minigui源码1.3.31.3.3这两个包的下载需要你在上注册过才可以下载,免费注册的,自己去下吧1.3.0 图形界面程序1.3.0 一些小例子把源码文件复制到/home/liu/minigui目录下,解开源码[root@localhost minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.3 minigui]#tar zxvf 1.3.0 minigui]#tar zxvf 1.3.0环境的搭建首先你需要一个Linux 环境,我安装的是RedHat 安装时记着选everything,这样可以避免到时候编译少了东西。

这里搭建的环境是让MiniGUI 在你的PC 上可以跑起来,这样以后你开发程序就可以只在PC 上开发,调试好,最后交叉编译一下放到板子上就行了。

把 1.3.3 解开[user]# tar zxf[user]# tar zxf编译libminigui ,这个是minigui 运行所必需的库文件,必须编译成功[user]# cd libminigui-1.3.3[user]# ./configure . yeschecking for pthread library... yeschecking for TT_FreeType_Version in -lttf... yeschecking for T1_InitLib in -lt1... nochecking for jpeg_std_error in -ljpeg... yeschecking for png_check_sig in -lpng... yes其中–lttf –lpng 必须是yes ,不然后面你的程序肯定会有问题,如果这里不是yes 的话,肯定是你的Redhat 9 安装不对,告诉过你安装时选everything ,你选了吗其中ttf 库是对TrueType 字体的支持,png 库是对png 图形的支持,MiniGui 里都需要这两个,在后面为板子交叉编译的时候也需要这两个,不然你的程序跑不起来,切记切记。

简单的MiniGUI软键盘

简单的MiniGUI软键盘

简单的MiniGUI软键盘由于已经购买mGi模块,故而自己写的这个用不着了,留在这里做个记念吧。

以下是关键代码,其实思想蛮简单,就是发送消息给输入法窗口就万事大吉了。

但是有个最重要的bug 就是中文输入无法选择所有的汉字,估计要改一下minigui输入法的源码,mGi的软键盘是利用了两行。

示例图如下,很简陋,如果经过美化,可以做到很漂亮。

#include"common.h"#define ITEM_NUM1 14/* coolbar */#define ITEM_NUM2 14/* coolbar */#define ITEM_NUM3 12/* coolbar */#define ITEM_NUM4 12/* coolbar */#define ITEM_NUM5 8/* coolbar */#define IDC_NovaSKB1 1001/* ime */#define IDC_NovaSKB2 1002/* ime */#define IDC_NovaSKB3 1003/* ime */#define IDC_NovaSKB4 1004/* ime */#define IDC_NovaSKB5 1005/* ime */#define HEIGHT_SKB 115/* 软键盘 */#define WIDTH_SKB 240/* 软键盘 */static const char* caption1[] ={" ` ", " 1 ", " 2 ", " 3 ", " 4 ", " 5 "," 6 ", " 7 ", " 8 ", " 9 ", " 0 ", " - ", " = ", " <- "};static const int SCANCODE1[] ={SCANCODE_GRAVE, SCANCODE_1, SCANCODE_2, SCANCODE_3, SCANCODE_4,SCANCODE_5, SCANCODE_6, SCANCODE_7, SCANCODE_8, SCANCODE_9,SCANCODE_0, SCANCODE_MINUS, SCANCODE_EQUAL,SCANCODE_BACKSPACE};static const char* caption2[] ={"Tab", " q ", " w ", " e ", " r ", " t "," y ", " u ", " i ", " o ", " p ", " [ ", " ] ", " \\ "};static const int SCANCODE2[] ={SCANCODE_TAB, SCANCODE_Q, SCANCODE_W, SCANCODE_E, SCANCODE_R,SCANCODE_T, SCANCODE_Y, SCANCODE_U, SCANCODE_I, SCANCODE_O,SCANCODE_P, SCANCODE_BRACKET_LEFT,SCANCODE_BRACKET_RIGHT, SCANCODE_BACKSLASH};static const char* caption3[] ={"Shift ", " a ", " s ", " d ", " f ", " g "," h ", " j ", " k ", " l ", " ; ", " ' "};static const int SCANCODE3[] ={SCANCODE_LEFTSHIFT, SCANCODE_A, SCANCODE_S, SCANCODE_D, SCANCODE_F,SCANCODE_G, SCANCODE_H, SCANCODE_J, SCANCODE_K, SCANCODE_L,SCANCODE_SEMICOLON, SCANCODE_APOSTROPHE};static const char* caption4[] ={"Ctrl ", " z ", " x ", " c ", " v ", " b "," n ", " m ", " , ", " . ", " / ", " Enter "};static const int SCANCODE4[] ={SCANCODE_LEFTCONTROL, SCANCODE_Z, SCANCODE_X, SCANCODE_C, SCANCODE_V,SCANCODE_B, SCANCODE_N, SCANCODE_M, SCANCODE_COMMA, SCANCODE_PERIOD,SCANCODE_SLASH, SCANCODE_ENTER};static const char* caption5[] ={"Del ", " 英 ", " 中 ", " Space "," | ", " | ", " -> ", " <- "};static const int SCANCODE5[] ={SCANCODE_REMOVE, -1, -1, SCANCODE_SPACE,SCANCODE_CURSORBLOCKDOWN,SCANCODE_CURSORBLOCKUP, SCANCODE_CURSORBLOCKLEFT, SCANCODE_CURSORBLOCKRIGHT};static void create_novaskb1 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;static BITMAP del_bmp;if (LoadBitmap (HDC_SCREEN, &del_bmp,"./little/del.bmp") != ERR_BMP_OK)exit(1);cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB1,0, 0, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData =0;for (i =0; i < ITEM_NUM1-1; i++) {item.insPos = i;item.id = i;item.Caption = caption1[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }/* del 按键 */item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp =&del_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData=0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }static void create_novaskb2 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER, IDC_NovaSKB2,0, 22, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData =0;for (i =0; i < ITEM_NUM2; i++) {item.insPos = i;item.id = i;item.Caption = caption2[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }}static void create_novaskb3 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER, IDC_NovaSKB3,0, 44, 240, 20,hWnd,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData =0;for (i =0; i < ITEM_NUM3; i++) {item.insPos = i;item.id = i;item.Caption = caption3[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }}static void create_novaskb4 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER, IDC_NovaSKB4,0, 66, 240, 20,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData =0;for (i =0; i < ITEM_NUM4; i++) {item.insPos = i;item.id = i;item.Caption = caption4[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);}}static void create_novaskb5 (HWND hWnd){HWND cb;COOLBARITEMINFO item;int i;static BITMAP down_bmp;static BITMAP up_bmp;static BITMAP left_bmp;static BITMAP right_bmp;if (LoadBitmap (HDC_SCREEN, &down_bmp,"./little/down.bmp") != ERR_BMP_OK)exit(1);if(LoadBitmap (HDC_SCREEN, &up_bmp, "./little/up.bmp") != ERR_BMP_OK)exit(1);if (LoadBitmap (HDC_SCREEN, &left_bmp,"./little/left.bmp") != ERR_BMP_OK)exit(1);if (LoadBitmap (HDC_SCREEN, &right_bmp,"./little/right.bmp") != ERR_BMP_OK)exit(1);cb = CreateWindow (CTRL_COOLBAR,"",WS_CHILD | WS_VISIBLE | WS_BORDER,IDC_NovaSKB5,0, 88, 240, 20,0);item.ItemType = TYPE_TEXTITEM;item.Bmp = NULL;item.dwAddData =0;for (i =0; i < ITEM_NUM5 -4; i++) {item.insPos = i;item.id = i;item.Caption = caption5[i];item.ItemHint = NULL;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item); }#if1/* down 按键 */item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp =&down_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData=0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);/* up 按键 */i++;item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp =&up_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData=0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);/* left 按键 */i++;item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp =&left_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData=0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);/* right 按键 */i++;item.insPos = i;item.id = i;item.ItemType = TYPE_BMPITEM;item.Bmp =&right_bmp;item.ItemHint = NULL;item.Caption = NULL;item.dwAddData=0;SendMessage (cb, CBM_ADDITEM, 0, (LPARAM)&item);#endif}static int NovaSKBProc(HWND hWnd, int message, WPARAM wParam, LPARAM lParam){switch (message){case MSG_CREATE:create_novaskb1(hWnd);create_novaskb2(hWnd);create_novaskb3(hWnd);create_novaskb4(hWnd);create_novaskb5(hWnd);break;case MSG_COMMAND:{int id = LOWORD (wParam);int code = HIWORD (wParam);switch (id){case IDC_NovaSKB1:SendMessage (hIMEWnd,MSG_KEYDOWN, SCANCODE1[code], 0);break;case IDC_NovaSKB2:SendMessage (hIMEWnd,MSG_KEYDOWN, SCANCODE2[code], 0);break;case IDC_NovaSKB3:SendMessage (hIMEWnd,MSG_KEYDOWN, SCANCODE3[code], 0);break;case IDC_NovaSKB4:SendMessage (hIMEWnd,MSG_KEYDOWN, SCANCODE4[code], 0);break;case IDC_NovaSKB5:if (code ==1){/* 英文 */SetIMEStatus(IS_ENABLE, 0);/* 刷新输入窗口 */ShowWindow(hIMEWnd,SW_HIDE);ShowWindow(hIMEWnd,SW_SHOWNORMAL);}else if (code ==2){/* 中文 */SetIMEStatus(IS_ENABLE, 1);/* 刷新输入窗口 */ShowWindow(hIMEWnd,SW_HIDE);ShowWindow(hIMEWnd,SW_SHOWNORMAL);}else{SendMessage (hIMEWnd, MSG_KEYDOWN, SCANCODE5[code], 0);// Send2ActiveClient (MSG_KEYDOWN, SCANCODE_CURSORDOWN, 0);// Send2ActiveClient (MSG_KEYUP, SCANCODE_CURSORDOWN, 0);}break;}}break;case MSG_KEYDOWN:Send2ActiveClient (MSG_KEYDOWN, wParam, lParam);break;case MSG_DESTROY:DestroyAllControls (hWnd);return0;case MSG_CLOSE:DestroyMainWindow (hWnd);PostQuitMessage (hWnd);return0;}return DefaultMainWinProc(hWnd, message, wParam, lParam);}static void InitNovaSKBCreateInfo (PMAINWINCREATE pCreateInfo, int x, int y){pCreateInfo->dwStyle =WS_ABSSCRPOS |WS_BORDER |WS_VISIBLE; pCreateInfo->dwExStyle = WS_EX_TOOLWINDOW;pCreateInfo->spCaption ="NovaSKB" ;pCreateInfo->hMenu =0;pCreateInfo->hCursor = GetSystemCursor(IDC_ARROW);pCreateInfo->hIcon =0;pCreateInfo->MainWindowProc = NovaSKBProc;pCreateInfo->lx = x;pCreateInfo->ty = y;pCreateInfo->rx = x + WIDTH_SKB;pCreateInfo->by = y + HEIGHT_SKB;pCreateInfo->iBkColor = PIXEL_lightwhite ;pCreateInfo->dwAddData =0;pCreateInfo->hHosting = HWND_DESKTOP;}HWND NovaSKBWindow(HWND hosting, int x, int y){HWND hwnd_novaskb;MAINWINCREATE CreateInfo;InitNovaSKBCreateInfo(&CreateInfo, x, y);CreateInfo.hHosting = hosting;hwnd_novaskb = CreateMainWindow (&CreateInfo);if (hwnd_novaskb == HWND_INVALID)return-1;ShowWindow(hwnd_novaskb, SW_HIDE);return hwnd_novaskb;}创建于:2006-05-07 15:30:30,修改于:2006-05-07 15:34:22,已浏览1264次,有评论20条网友评论网友:本站网友时间:2006-05-09 08:57:54 IP地址:218.87.41.★非常感谢,别人找了n久,功夫不负有心人啊网友:朋友时间:2006-05-18 08:30:43 IP地址:60.183.132.★你的版本是free的吗?我的1.3.3版的汉字显示效果实在是差,后来加上了TT 好看,不知道您的字体是怎么弄的(在font配置的时候一般选哪些字体?),到您的指点网友:er 时间:2006-05-18 09:38:31 IP地址:211.71.95.★刚开始就是用的1.3.3,也试过1.6.8都差不多,也没有啥特殊配置.就是1.3.3在显示两个竖线,不过在开发板上没事.网友:阿布时间:2006-05-18 10:19:22 IP地址:222.171.7.★谢谢你提供的源码,好奇怪,我用的是1.3.3,在redhat中用qvfb没事,但是显示两个竖线,和你的情况正好相反,不知道是为什么网友:guan 时间:2006-06-23 16:29:36 IP地址:219.131.185.★不错,先谢谢了网友:本站网友时间:2006-09-14 20:15:23 IP地址:219.137.116.★太好了,谢谢网友:本站网友时间:2006-09-14 20:18:41 IP地址:219.137.116.★在windows,vc++6.0调试出错error C2065: hIMEWnd' : undeclared identifiererror C2065: 'Send2ActiveClient' : undeclared identifier网友:本站网友时间:2006-11-03 14:36:52 IP地址:222.92.76.★我想问一下把这代码放到哪里去哈我现在初学不知道怎么搞谢谢网友:本站网友时间:2006-11-03 16:33:20 IP地址:222.92.76.★如果可以的话加我QQ158234376我向你学习谢谢网友:er 时间:2006-11-04 10:14:41 IP地址:61.48.72.★这个代码很粗糙,并且只是关键的代码,还有许多要完善的地方,用的话要调用函数NovaSKBWindow.MINIGUI已经好久没用了,水平也停在简单的应用上,用不着网友:本站网友时间:2006-11-06 08:48:19 IP地址:222.92.76.★还是要谢谢你网友:本站网友时间:2006-11-06 12:45:49 IP地址:222.92.76.★我现在在minigui移植方面卡了壳我的mginit 一移到板子上出问题:报内存的错,我也不知道怎么办我也就在以前的基础上加了一个窗体就不指点网友:本站网友时间:2006-11-06 16:52:22 IP地址:222.92.76.★请问mgi 要多少钱网友:er 时间:2006-11-07 09:50:03 IP地址:61.51.179.★请向minigui咨询,我只能说并不便宜^-^网友:本站网友时间:2006-11-14 09:09:55 IP地址:222.92.76.★如果买了mgi请问如何把它添加到程序里谢谢网友:er 时间:2006-11-15 10:32:53 IP地址:221.223.234.★就是个库,调用函数创建输入法容器,再添加相应的输入法网友:本站网友时间:2006-11-18 14:25:11 IP地址:222.92.76.★哦谢谢我们公司现在买了MGI 不过就是现在我不知道怎么写手写的引擎实在不好意思每天都这样问你不知道这引擎究竟怎么搞网友:er 时间:2006-11-20 09:43:54 IP地址:221.223.237.★mgi源代码中有示例代码,你结合文档看下应该没问题的,可以用MSN和我联系网友:richie 时间:2008-01-25 15:43:33 IP地址:222.197.173.★为什么我把它直接用gcc -o keyboard keyboard.c -lpthread -lminigui编译请问er,你用的是哪个版本的minigui,是免费的吗?网友:时间:2008-05-23 11:21:46 IP地址:220.248.226.★hfmedical你的MSN号码多少?有空向你请教。

arm-linux学习笔记之minigui移植

arm-linux学习笔记之minigui移植

arm-linux学习笔记之minigui移植/u3/90065/showart_1793732.htmlminigui-1.6.10在s3c2410平台的移植开发板:SBC2410CPU:S3C2410linux-2.6.25.5fs:jffs2LCD:TFT320 X 240PC:fc8 linux-2.6.25.5(一)准备工作下载软件包libminigui-1.6.10.tar.gzmg-samples-1.6.10.tar.gzminigui-res-1.6.10.tar.gzmg-samples-str-1.6.2.tar.gz在/home/arm/创建一个minigui的目录,然后把这些载在的软件包放在该目录下,在分别解压缩。

再在/home/arm/minigui下创建一个miniguitmp的目录,用于安装编译以后的库文件。

(二)编译libminigui首先修改configure文件,在文件的开头加入交叉编译的路径CC=arm-9tdmi-linux-gnu-gccCPP=arm-9tdmi-linux-gnu-cppLD=arm-9tdmi-linux-gnu-ldAR=arm-9tdmi-linux-gnu-arRANLIB=arm-9tdmi-linux-gnu-ranlibSTRIP=arm-9tdmi-linux-gnu-strip然后执行[root@localhost libminigui-1.6.10]# ./configure --prefix=/home/arm/minigui/miniguitmp/ \--build=x86_64-linux \--host=arm-unknown-linux \--target=arm-unknown-linux[root@localhost libminigui-1.6.10]# make[root@localhost libminigui-1.6.10]# make install这个过程基本上不会有什么错误的执行make install的时候会把编译以后的资源安装到/home/arm/minigui/miniguitmp中,在这之下会有etc include lib usr几个目录产生。

嵌入式Linux环境下MiniGUI的移植

嵌入式Linux环境下MiniGUI的移植

移植 性好 。

2 M1 G 移 植 n U 1 I的


在P C机 上 建立 my ii i目录 ,将开 发所 需 的 四 m ng u 五 源 代码 包 拷 贝 到该 目录 下 ,在 该 目录 中 建立 nsot fro

MDR C PT 0l o OE O UE26 N M R0_ 0
G1 U 支持 系 统 ,让 Mii UI 以应 用在 Widw E nG 可 n o sC 可 以应 用 的任何 场合 。
Mii I 有 以下 特点 : nGU 具
u / S I、 x rsp O 、 he d 等 操 作 系 统 以 及 CO —IV Wok 、S S T raX Wi3 n 2平 台 上 运 行 ;已 验 证 的 硬 件 平 台 包 括 Itr ne
界面支 持 系统 ,9 9年初 遵循 GP 19 L条款 发 布第 一 个 版本以来 , 已广 泛应用 于手持 信息 终端 、 顶盒 、 机 工业
控制系 统及 工业 仪 表 、 携式 多 媒体 播放 器 、 便 查询 终 端 等产 品和领 域 。 目前 , nGU 已成 为跨 操 作 系统 Mii I 的图形用 户界面 支持 系统 , 在 Ln xu Ln x e o 、 可 iu /C i 、C s u
1 M{ G 述 n U 1 I概
由北 京 飞漫 软件技 术 有线 公 司开 发 的 M nGU . ii I
Mii I 目标 是保 持 现 有小 巧 的 特点 . Ln x控 nGU 的 在 iu 制 台上 提供 一个 小 的窗 口系统 支持 .小 ” Mii I “ 是 nGU
x 6 A M( R /RM9s gA 8 、 R A M7A /t RM& cl)Pw rC、 mn S ae、o eP

miniGUI在linux环境下安装

miniGUI在linux环境下安装

minigui linux 安装与运行1.首先,从飞漫的网站上下载相关的压缩包:/res.shtml虚拟frambuffer的应用程序,用来调试运行程序qvfb-1.1.tar.gz资源文件:minigui-res-1.6.10.tar.gz示例程序:mg-samples-1.6.10.tar.gz开发库:libminigui-1.6.10.tar.gz在home目录下创建一个minigui的目录# cd /home# mkdir minigui将这些压缩包拷贝到/home/minigui目录下2.安装下载的文件首先安装minigui的资源文件:[root@root minigui]# tar -xvzf minigui-res-1.6.10.tar.gz[root@root minigui]#cd minigui-res-1.6.10[root@root minigui-res-1.6.10]# make install安装minigui的库文件[root@root minigui]#tar -xvzf libminigui-1.6.10.tar.gz[root@root minigui]# cd libminigui-1.6.10[root@root libminigui-1.6.10]# ./configure[root@root libminigui-1.6.10]# make[root@root libminigui-1.6.10]#make install安装minigui的例子库[root@root minigui]# tar -xzvf mg-samples-1.6.10.tar.gz[root@root minigui]#cd mg-samples-1.6.10[root@root mg-samples-1.6.10]# ./configure[root@root mg-samples-1.6.10]# make[root@root mg-samples-1.6.10]# make install安装qvfb[root@root minigui]# tar -xzvf qvfb-1.1.tar.gz[root@root minigui]# cd qvfb-1.1[root@root qvfb-1.1]# ./configure[root@root qvfb-1.1]# make[root@root qvfb-1.1]# make install3.设置参数1.这步要进入#cd /etc/目录下, 修改#vi ld.so.conf文件,再最后一行加入/usr/local/lib 即在系统共享函数库中加入MiniGUI的函数库路径[root@root etc]# gedit /etc/ld.so.conf //注意:不是ld.so.c(至少fedora10下不是)/usr/kerberos/lib/usr/X11R6/lib/usr/lib/sane/usr/lib/qt-3.1/lib/usr/local/lib4、在修改并保存后,执行ldconfig命令,更新系统函数库缓存[root@root etc]#ldconfig5.然后就可以使用qvfb体验miniGUI了,进入qvfb1.1根目录下的qvfb文件夹:输入下面命令:[root@fedora7]# qvfb &//加上&符号使qvfb进程开启后shell立即返回,否则会阻塞shell进程,需要再开一个shell才可以运行minigui程序。

MiniguiV1.3.3在uClinux中的移植经验总结[转]

MiniguiV1.3.3在uClinux中的移植经验总结[转]

MiniguiV1.3.3在uClinux中的移植经验总结[转]Minigui V1.3.3在uClinux中的移植经验总结 [转]经过一个星期的努力,终于将Minigui移植到我的ARM7开发板上了,在这个过程中我遇到了很多困难和问题,但是通过网络,通过以前很多前辈在网络上分享的经验,终于取得成功,也让我更加体会到只有大家都互相帮助,互相分享经验才能使大家都受益。

所以基于这一点,我将我的移植过程分享给大家,并且写得尽量详细点,希望给大家一些帮助,使后来者少走一些弯路。

有不对的地方,欢迎大家板砖!首先说明一下我的开发平台,我用的是Samsung S3C44B0X芯片的开发板,已经移植好的uClinux操作系统和FrameBuffer驱动。

我的uClinux安装在"/s3c44b0fu/uClinux-dist"目录下,交叉编译工具安装在"/usr/local/arm-elf"目录下。

具体步骤:一. 从网站下载libminigui-1.3.3.tar.gz, mde-1.3.0.tar.gz, mg-samples-1.3.0.tar.gz和minigui-res-1.3.3.tar.gz四个压缩文件,并将这四个文件保存到交叉编译环境的目录下,因为我的arm-elf-gcc交叉编译工具安装在"/usr/local/arm-elf"目录下,所以将minigui的四个压缩包同样拷贝到"/usr/local/arm-elf"目录下.二. 在终端中输入"cd /usr/local/arm-elf",进入minigui的四个压缩文件所在目录,然后分别执行"tar zxvf xxxxx.tar.gz"将这四个压缩包解压缩.解压后生成libminigui-1.3.3, mde-1.3.0, mg-samples-1.3.0和minigui-res-1.3.3四个文件夹.三. 1) 进入minigui-res-1.3.3文件夹内,修改config.linux,在prefix = $(TOPDIR)/usr/local/后添加我们的交叉编译安装目录arm-elf,即prefix = $(TOPDIR)/usr/local/arm-elf.2) cd minigui-res-1.3.33) make install四. cd mde-1.3.0./configuremakecd mg-samples-1.3.0./configuremake五. 1) 编写交叉编译minigui函数库的配置脚本domain.sh.domain.sh的具体内容为:#!/bin/shrm config.cache config.status -fCC=arm-elf-gcc \CFLAGS="-I/s3c44b0fu/uClinux-dist/uClibc/include -Dlinux -D__linux__ -D__uClinux__ -Dunix " \LDFLAGS="-Wl,-elf2flt -static -Wl,-move-rodata -Wl,-L/s3c44b0fu/uClinux-dist/lib/uClibc/lib -Wl,-L/s3c44b0fu/uClinux-dist/linux-2.4.x/lib -Wl,-lc -Wl,-lm" \ ./configure --prefix=/usr/local/arm-elf \--build=i686-pc-linux-gnu \--host=arm-elf-linux \--target=arm-elf-linux \--disable-shared \--disable-lite \--disable-standalone \--enable-incoreres \--disable-flatstyle \--enable-newgal \--disable-nativegal \--disable-galcommlcd \--enable-galfbcon \--enable-adsial \--disable-micemoveable \ --disable-cursor \--disable-fblin1r \--enable-fblin8 \--disable-fblin16 \--disable-fblin32 \--disable-textmode \--enable-dummyial \--disable-mc68x328ial \--disable-nativeial \--disable-qvfbial \--disable-qpfsupport \--disable-ttfsupport \--disable-type1support \ --disable-latin9support \ --disable-gbksupport \--disable-big5support \--disable-unicodesupport \ --disable-savebitmap \--disable-imegb2312 \--disable-imegb2312py \ --disable-aboutdlg \--disable-savescreen \--disable-grayscreen \--enable-tinyscreen \--enable-video-fbcon \--disable-video-qvfb \--disable-nativegalqvfb \ --with-osname=uclinux编写好后拷贝到libminigui-1.3.3下.2) cd libminigui-1.3.33) sh domain.sh4) make5) make install6) ldconfig上面六步即完成了用arm-elf-gcc对minigui的函数库的交叉编译.可以进入/usr/local/arm-elf目录中,你会看到新增加了etc和lib两个文件夹,这两个文件夹就是我们刚才用arm-elf-gcc交叉编译minigui 的函数库所产生的结果,以后编译在目标板中运行的应用程序时,就会对这两个文件夹里的内容进行编译,从而产生适合于在arm开发板中运行的应用程序.六. 编写测试minigui的应用程序1) 测试程序miniguidemo.c其实就是从mg-samples-1.3.0中拷贝过来的helloworld.c程序,不过要根据具体的LCD做一点修改,如我的LCD是640x480的256色STN彩色屏,所以要将#ifdef _LITE_VERSIONSetDesktopRect(0, 0, 1024, 768);#endif修改为:#ifdef _LITE_VERSIONSetDesktopRect(0, 0, 640, 480);#endif根据你的不同的LCD修改这个参数,还可以修改这个窗体显示的位置,根据你的喜好修改即可.最后将编写好的miniguidemo.c保存到/s3c44b0fu/uClinux-dist/user/guidemo中(注:guidemo是我在user目录中新建的文件夹)2) 在/s3c44b0fu/uClinux-dist/user/guidemo中编写Makefile 文件,具体内容为:EXEC = miniguidemoOBJS = miniguidemo.oLDFLAGS=-L/s3c44b0fu/uClinux-dist/uClibc/liball: $(EXEC)$(EXEC): $(OBJS)$(CC) $(LDFLAGS) -o $@ $(OBJS) -lminigui -lmgext $(LIBPTHREAD) $(LIBM) $(LDLIBS) -elf2fltromfs:$(ROMFSINST) /bin/$(EXEC)clean:-rm -f $(EXEC) *.elf *.gdb *.o3) 修改user/Makefile为了让编译器编译上述添加的内容,在user/Makefile中添加一句(一般按照字母排列):dir _$(CONFIG_USER_GUIDEMO_MINIGUIDEMO) +=guidemo4) 修改config/config.inconfig/config.in文件中添加的内容会在对用户选项进行配置时反映出来。

基于ARM-Linux的MiniGUI的仿真与移植

基于ARM-Linux的MiniGUI的仿真与移植

基于ARM-Linux的MiniGUI的仿真与移植近几年,随着嵌入式系统的日益发展和32位嵌入式处理器以及图形显示设备的广泛应用,目标产品对GUI(图形用户界面)的需求越来越多。

由于嵌入式系统一般实时性要求很高,所以嵌入式系统下的GUI需要具有轻量级型、占用资源少、高性能等特点。

此外,嵌入式系统往往是一种定制设备,它对GUI的需求各不相同,因此,GUI必须也可以定制。

而MiniGUI是一个非常适合实时嵌入式产品的高效、可靠、可定制、小巧灵活的图形用户界面支持系统,被广泛的应用于高端科技产品中。

利用MiniGUI开发出良好的人机交互界面已成为嵌入式开发中的迫切需求。

本文实现了在ARM-Linux环境下进行基于QVFB的MiniGUI的模拟开发、调试,通过在PC机上的仿真模拟,将应用程序完成之后,利用交叉编译工具编译产生在目标机上运行的代码,然后把MiniGUI和可执行应用程序移植到S3C2410目标板上,这样既节省了开发时间,又提高了开发效率和质量。

1 MiniGUI的特点和体系结构MiniGUI项目的最初目标是为基于Linux的实时嵌入式操作系统提供一个轻量级的图像用户界面支持系统。

作为操作系统和应用程序之间的中间件,MiniGUI将底层操作系统与硬件平台之间的差别隐藏起来,并对上层应用程序提供了一致的功能特性。

1.1MiniGUI的特点(1)占用资源少:MiniGUI本身占用的空间非常小,整个MiniGUI系统占用空间在2~4MB,在某些系统上,MiniGUI系统本身所占用的空间可进一步缩小到1MB以内。

(2)高性能、高可靠性:MiniGUI良好的体系结构及优化的图形接口,可确保最快的图形绘制速度。

(3)可定制配置:和Linux内核类似,MiniGUI也具有大量的编译配置选项,通过这些选项可指定MiniGUI库中包括哪些用户所需要的功能。

(4)跨操作系统支持:MiniGUI支持Linux/uClinux、eCos、uC/OS-II、VxWorks等嵌入式操作系统。

基于ARM和Linux的MiniGUI及其应用程序的移植

基于ARM和Linux的MiniGUI及其应用程序的移植

基于ARM和Linux的MiniGUI及其应用程序的移植赵强;李敬文【期刊名称】《电脑知识与技术》【年(卷),期】2010(006)034【摘要】近年来,随着计算机技术、通讯技术的迅速发展,特别是互联网的迅速普及和3C(计算机、通信、消费电子)合一的咖速,微型化和专业化成为发展的新趋势,嵌入式系统开发已经成为了信息产业的热点.基于ARM硬件平台及Linux操作系统的嵌入式产品应用开发已经成为主流.而在嵌入式的开发过程中,针对目标平台的操作系统及应用软件移植成为影响嵌入式产品开发进度的一个关键因素.该文介绍了MiniGUI在嵌入式Linux平台上的移植过程,从实际出发,详细阐述如何在开发板上移植BootLoader,内核,文件系统,并且对linux部分源码进行了简要的分析和说明,最后将MiniGUI与在其环境下编辑的应用程序移植到ARM目标平台上.【总页数】3页(P9914-9916)【作者】赵强;李敬文【作者单位】兰州交通大学电子与信息工程学院,甘肃兰州,730070;兰州交通大学电子与信息工程学院,甘肃兰州,730070【正文语种】中文【中图分类】TP316【相关文献】1.ARM-Linux环境下MiniGUI在S3C2410开发板上的移植 [J], 李敏2.基于嵌入式ARM-Linux系统的MiniGUI应用设计 [J], 李云松;刘国繁;曹少坤3.基于ARM-Linux环境下MiniGUI的移植 [J], 唐敏;宋杰;王菲露4.基于ARM-Linux的MiniGUI的应用研究 [J], 李旭升;李兵;曲尚勇;李松渊;陈玲;兴佰明5.基于ARM和Linux的MiniGUI及其应用程序的移植 [J], 赵强;李敬文因版权原因,仅展示原文概要,查看原文内容请购买。

嵌入式Linux系统中的GUI系统的研究与移植介绍

嵌入式Linux系统中的GUI系统的研究与移植介绍

嵌入式Linux系统中的GUI系统的研究与移植介绍嵌入式Linux系统中的GUI系统的研究与移植介绍摘要:针对嵌入式Linux系统中几种常见的GUI(Graphic User Interface)系统,讨论嵌入式GUI实现的底层技术方式;详细分析Microwindows、MiniGUI、Qt/Embedded等三种GUI的实现特点、体系结构、API接口。

结合这三种嵌入式GUI在以Motorola i,MX1为核心的实际应用系统中移植开发的问题,讨论移植技术与中文化技术。

引言嵌入式GUI为嵌入式系统提供了一种应用于特殊场合的人们交互接口。

嵌入式GUI要求简单、直观、可靠、占用资源小且反应快速,以适应系统硬件资源有限的条件。

另外,由于嵌入式系统硬件本身的特殊性,嵌入式GUI应具备高度可移植性与可裁减性,以适应不同的硬件条件和使用需求。

总体来讲,嵌入式GUI具备以下特点:*体积小;*运行时耗用系统资源小;*上层接口与硬件无关,高度可移植;*高可靠性;*在某些应用场合应具备实时性。

(收集整理)1 基于嵌入式Linux的GUI系统底层实现基础一个能够移植到多种硬件平台上的嵌入式GUI系统,应用至少抽象出两类设备:基于图形显示设备(如VGA卡)的图形抽象层GAL (Graphic Abstract Layer),基于输入设备(如键盘,触摸层等)的输入抽象层IAL(Input Abstract Layer)。

GAL层完成系统对具体的显示硬件设备的操作,极大程度上隐蔽各种不同硬件的技术实现细节,为诮程序开发人员提供统一的图形编程接口。

IAL层则需要实现对于各类不同输入设备的控制操作,提供统一的调用接口。

GAL层与IAL层的设计概念,可以极大程序地提高嵌入式GUI的可移植性,如图1所示。

目前应用于嵌入式Linux系统中比较成熟,功能也比较强大的GUI系统底层支持库有SVGA lib、LibGGI、Xwindow、framebuffer等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计成果说明书题目:Linux下基于minigui的软键盘程序调试学生姓名:苏腾云/王润志/蒋强/游寺豪/沈龙/陈阳狮学号:0800403220/0800403222/081311128081311101/081311136/0800403109学院:机电工程学院班级:AC08电信指导教师:赵秋亮老师浙江海洋学院教务处2011年07月01日浙江海洋学院课程设计成绩评定表2009 —2010学年第2 学期学院机电工程班级 AC08电信专业电子信息工程学生姓名(学号) 苏腾云/王润志游世豪/蒋强沈龙/陈阳狮课程设计名称嵌入式系统课程设计题目MiniGUI移植指导教师评语指导教师签名:年月日答辩评语及成绩答辩小组教师签名:年月日附2:浙江海洋学院课程设计任务书2010 —2011学年第2 学期学院机电工程班级 AC08电信专业电子信息工程学生姓名(学号) 苏腾云/王润志游世豪/蒋强沈龙/陈阳狮课程名称嵌入式系统课程设计设计题目Linux下基于minigui的软键盘程序调试完成期限自 2011 年 6 月 20 日至 2011 年 7 月 1 日共 2 周设计依据本次设计所需知识1.S3C2410的基本知识2.Linux系统常用命令3.linux编辑器VI的使用方法4.MiniGUI的基本知识5.MiniGUI的移植方法设计要求及主要内容1.熟悉linux系统的常用操作命令2.熟悉VI(或GVIM)的操作方法3.完成虚拟机VM的安装4.完成虚拟机VM下的Linux(RedHat9.0)的安装5.完成交叉编译环境的建立6.完成PC机环境下minigui的安装与配置,QVFB的安装7.完成minniGUI在S3C2410A上的移植8.利用示例程序包中程序验证移植结果,结果能在LCD与QVFB上正常显示9.调试基于minigui的软键盘程序,并能在QVFB和LCD上显示。

10.录制设计结果演示和解说视频11.完成课程设计说明书的撰写。

撰写格式要求按照《机电工程学院毕业设计文本规范》。

参考资料[1]. ARM9嵌入式系统设计――基于S3C2410与Linux.徐英德等.北京航空航天大学出版社.2007年.[2]. 嵌入式系统实验指导书.自编.[3]. 实验指导书-EL-ARM-830型教学实验系统(ARM9).北京精仪达盛科技有限公司.[4]. Minigui实验指导书(for S3C2410).北京精仪达盛科技有限公司.[5]. Minigui编程指南.飞漫公司.[6]. FTP资源:172.16.51.6 用户名:dx 密码:1234. 在/ARM目录下。

指导教师签字日期Linux下基于minigui的软键盘程序调试苏腾云王润志游世豪蒋强沈龙陈阳狮(浙江海洋学院机电工程学院,浙江舟山 316000)摘要MiniGUI是由北京飞漫软件技术有限公司创办的开源Linux图形用户界面支持系统,经过近些年的发展,MiniGUI已经发展成为比较成熟的性能优良的、功能丰富的跨操作系统的嵌入式图形界面支持系统。

“小”是MiniGUI的特色,它目前已经广泛应用于通讯、医疗、工控、电子、机顶盒、多媒体等领域。

目前,MiniGUI 的最新版本为MiniGUI 3.0,所以MiniGUI对中文的支持最好。

它支持GB2312与BIG5字元集,其他字元集也可以轻松加入。

关键字:MiniGUI;Red Hat linux9;qvfb;交叉编译目录前言 (1)1.方案设计 (2)2.虚拟机VM下的Redhat9.0的安装 (3)3.交叉编译环境的建立 (5)4.MiniGui在linux运行环境中的建立: (6)4.1 QVFB的安装: (6)4.2 MiniGui相关文件在linux中QVFB下的安装运行: (7)4.2.1 安装MiniGui的资源文件: (7)4.2.2 配置与安装MiniGUI库文件: (7)4.2.3 在QVFB上显示例样程序: (9)5 Linux下FrameBuffer的驱动运行 (12)5.1 framebuffer驱动的添加 (12)5.2 Framebuffer设备文件的添加 (14)5.3 Framebuffer程序测试 (14)5.3.1 配置NFS网络文件系统 .................. 错误!未定义书签。

5.3.2 用交叉网线把主机和实验系统连接: (14)5.3.3 利用网络烧写软件imagewrite烧写大系统内核和bigroot文件系统 (17)6、MiniGui在S3C2410上的移植 (18)6.1安装MiniGUI的资源文件 (18)6.2配置与安装MiniGUI的库文件 (19)6.3 交叉编译mg-samples-1.6.10中的示例文件 (21)6.4 root文件的生成及NFS的配置与启动 (21)6.4.1 root文件的生成: (21)6.4.2 Linux下NFS的配置及启动: (21)6.4.3 用交叉网线把主机和实验系统连接: (22)6.5 烧写root文件系统并运行MiniGUI程序 (23)7.设计过程中的问题及解决办法 (25)7.1库文件libminigui-1.3.so.3.0.0找不到问题 (25)7.2 配置NFS网络文件系统时出现的问题 (25)8、设计心得 (26)[参考文献] (26)前言MiniGUI 是一款面向嵌入式系统的高级窗口系统(Windowing System)和图形用户界面(Graphical User Interface,GUI)支持系统,由魏永明先生于1998 年底开始开发。

2002 年,魏永明先生创建北京飞漫软件技术有限公司,为MiniGUI 提供商业技术支持,同时也继续提供开源版本,飞漫软件是中国地区为开源社区贡献代码最多的软件企业。

最后一个采用GPL 授权的MiniGUI 版本是 1.6.10,从MiniGUI 2.0.4 开始MiniGUI 被重写并使用商业授权。

历经十余年时间,MiniGUI 已经成为性能优良、功能丰富的跨操作系统嵌入式图形用户界面支持系统,支持Linux/uClinux、eCos、uC/OS-II、VxWorks、ThreadX、Nucleus 、pSOS、OSE 等操作系统和数十种SoC 芯片,已验证的硬件平台包括ARM-based SoCs 、MIPS based SoCs 、IA-based SoCs 、PowerPC、M68K(DragonBall /ColdFire)、Intel x86 等等,广泛应用于通讯、医疗、工控、电力、机顶盒、多媒体终端等领域。

使用MiniGUI 成功开发产品的企业有华为、中兴通讯、大唐移动、长虹、TCL、联想、迈瑞、南瑞、炬力、D2 等。

这些用户广泛分部在中国大陆、台湾、新加坡、韩国、美国、德国、意大利、印度、以色列等国家和地区。

值得一提的是,在中国自主开发的3G 通讯标准TD-SCDMA 中,约有60% 获得入网许可证的TD-SCDMA 手机使用MiniGUI 作为其嵌入式图形平台,以支撑浏览器、可视电话等3G 应用软件的运行,其中有联想TD30t、海信T68、中兴通讯U85 等大家熟悉的TD 手机型号。

在MiniGUI 的基础上,飞漫软件研发了mDolphin (基于开源的浏览器核心WebKit 的嵌入式浏览器,满分通过Acid3 的基准测试)、mPeer (为使用Java 技术的嵌入式设备提供高效的J2SE AWT/Swing 实现支持),并且开发了基于Eclipse CDT 的可视化集成开发环境,为开发人员提供所见即所得(WYSIWYG)的界面设计环境。

2010年,飞漫软件把最新版的MiniGUI、mDolphin、mPeer、mStudio 等系统整合在一起,推出了合璧操作系统(HybridOS)解决方案,是一整套专为嵌入式设备打造的快速开发平台,集成了飞漫软件10年的嵌入式行业研发经验和众多成熟的产品,使众多的希望在嵌入式设备上做开发的中小型企业,摆脱了“不稳定的内核以及驱动程序”、“交叉编译工具链、基础函数库存在大量缺陷”、“不恰当的开源软件”、“高水平嵌入式开发工程师缺乏”等这些问题的困扰,从而能够在一个运行稳定、功能强大的小巧系统内核基础上,专注开发产品。

合璧操作系统(HybridOS)采用新的商业授权模式,性价比颇高。

截止2010年9月,MiniGUI 的最新版本是3.0.10,MiniGUI 将作为合璧操作系统(HybridOS)的一个组成部分而不断演进,推荐新老用户使用合璧操作系统(Hybridos)作为嵌入式开发平台,必将节省大量的开发成本和时间。

1.方案设计根据设计要求基本设计计划按照图2.1所示流程:完成虚拟机VMware Workstation 的安装完成虚拟机VM下的Red Hat Linux9.0的安装完成交叉编译环境的建立PC机环境下MiniGUI的安装与配置,及QVFB的安装在QVFB上显示例程MinniGUI在S3C2410上的移植在LCD上显示例程bmpbkgnd完成课程设计说明书的撰写图1.1 系统设计总框图2.虚拟机VM下的Redhat9.0的安装启动虚拟机VM,新建一个虚拟机(注意在选择客户机操作系统的时候,应该选择LINUX 系统版本应该是RED HAT LINUX)其他的都可以默认进行下一步就可以,如图2.1所示图2.1 选择安装的系统安装界面1图 1.0 vm安装界面进入安装LINUX安装页面,如图2.2所示:点击右面的CD-ROM,进入,并选择使用ISO镜像。

选择第一个镜像文件进行安装。

图2.2 LINUX的安装页面1图2.2 LINUX的安装页面在安装语言选择中,我们可以选择【简体中文】,选择键盘和鼠标的时候,我们选择系统默认的就好了其他的也一直默认安装下去即可。

根口令设置时可简单设置一个,例如12345,自己不会遗忘即可。

再继续安装会出现选择安装软件包(注意在选择安装包的时候应该选择自己所需的安装包进行安装,不太清楚者建议全部安装,以免在后面的实验中会出现错误)点击“下一步“安装。

在安装软件包的时候,注意会让你手动选择第二个和第三个软件包安装(方法:在RED HAT LINUX那里右击,选择设置,在HARDWARE中选择CD-ROM.使用第二个ISO镜像,第三个也是如此)在安装完第三个镜像文件后。

进行用户账号设置。

用户名:root 密码:12345,到这Ret Hat Linux9 就安装完成。

建立交叉编译环境在根目录在创建linuette目录。

将/实验软件/tools/目录中的RPMS文件夹拷贝到linuette目录中。

打开终端,进入RPMS中(指令:# /opt/linuette/RPMS)进行交叉编译库的安装。

相关文档
最新文档