云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Minigui移植uClinux

Minigui移植uClinux

  • 62 次阅读
  • 3 次下载
  • 2025/6/5 11:01:51

TextOut (hdc, 100, 100, \ EndPaint (hWnd, hdc); return 0;

case MSG_CLOSE:

DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; }

return DefaultMainWinProc(hWnd, message, wParam, lParam); }

int MiniGUIMain (int argc, const char* argv[]) {

MSG Msg;

HWND hMainWnd;

MAINWINCREATE CreateInfo;

#ifdef _LITE_VERSION

SetDesktopRect(0, 0, 1024, 768); #endif

CreateInfo.dwstyle = WS_VISIBLE | WS_BORDER | WS_CAPTION; CreateInfo.dwExstyle = WS_EX_NONE; CreateInfo.spCaption = \ CreateInfo.hMenu = 0;

CreateInfo.hCursor = GetSystemCursor(0); CreateInfo.hIcon = 0;

CreateInfo.MainWindowProc = HelloWinProc; CreateInfo.lx = 0; CreateInfo.ty = 0; CreateInfo.rx = 320; CreateInfo.by = 240;

CreateInfo.iBkColor = COLOR_lightwhite; CreateInfo.dwAddData = 0;

CreateInfo.hHosting = HWND_DESKTOP;

hMainWnd = CreateMainWindow (&CreateInfo);

if (hMainWnd == HWND_INVALID) return -1;

ShowWindow(hMainWnd, SW_SHOWNORMAL);

while (GetMessage(&Msg, hMainWnd)) { TranslateMessage(&Msg); DispatchMessage(&Msg); }

MainWindowThreadCleanup (hMainWnd);

return 0; }

#ifndef _LITE_VERSION #include #endif

首先在 PC 上编译,验证通过!

[user]# gcc -o helloword helloword.c -lminigui –lmgext

如果没有错误,运行 qvfb ,按前面说的设置好,然后执行 [user]# ./helloword

一切正常,没有错误,现在就要把它放到我们的 板子上去跑了

[user]# arm-linux-gcc –O2 –o helloword helloword.c –lminigui –lmgext

编译完后,把它烧到板子的某个目录下,就可以在 板子上跑了!

所以这里就是说,minigui 提供了让你在 PC 上就可以调试和运行程序的方法(使用qvfb ),等你保证程序正确了以后,只需要把它重新编译一下,放到板子上去就行了!

5.一些常见的问题

这几天遇到不一些问题,发现论坛上也基本上没人回答我,所以只好自己解决了,这里把一些问题写出来,方便有需要的人:

问题1:在板子上跑的程序都显示 can not find qvfb ? 之类,可是我只是想让它在板子上跑在 FrameBuffer 之上啊?

解决:在编译 libminigui 的时候,把

[ ] Use incore (built-in) resource //建议不要选这个,老有问题

[ ] NEWGAL engine on Qt Virtual FrameBuffer //建议不要选这个,不然老让你用qvfb

问题2:编译的时候老出现 unreferenced to vbf_Courier8x8() 之类的问题

解决:

[ ] Var bitmap font //千万不要选这个,不然会出现 unreferenced vfb_Courier8x8() 之类的错误

问题3:一切都搞定了,可是执行 mginit() 的时候就崩溃了,把所有的寄存器值打印了出来,然后显示了个 Abort() 就退出了!

解决:

[ ] IME (GB2312) Intelligent Pinyin module //千万不要选这个,不然后面你的 mginit 程序一启动就崩溃了

问题4: 为什么我执行 helloword 就显示 “Can not attach shared resource!”

解决:

注意: 因为你的 minigui 是按 Lite 模式编译的,如果必须 mginit 首先运行起来,你其它的程序(比如 bomb ,或是 helloword)才能执行,如果 mginit 没有运行起来你就执行 helloword 的话,就会显示错误

“ Can not attach shared resource ! ”

问题5:怎么把自己的程序加到 minigui 的 taskbar 上去,并且排在前面??

解决:

查看 mginit 目录下的 mginit.rc 文件,里面就是配置,我想你能看明白的 :)

问题6:为什么我的程序显示 can not find libminigui.so ??

解决:你是否忘了在 etc/ld.so.conf 中加入 /usr/local/lib ,并且执行 ldconfig 程序? 看前面说的方法

好了,就写这么多吧,希望对新手有所帮助!

Singlewolfyu (大漠孤狼) 写于 清华 FIT 4-305 2006-11-7

yuqiang0107@126.com

把我写的另一篇关于 IAL 校正的文章也归并到这个贴子里来,算是做个汇总吧,原贴可以在论坛中搜 singlewolfyu 的文章就可以找到,原贴里有一些我上传的附件,有兴趣可以去下载,这里就不上传了! 希望这篇文章能对大家有用!

带屏幕校正功能的 2410 的 IAL

作者:大漠孤狼 E-MAIL:yuqiang0107@126.com

前几天成功的把 MiniGUI 移植到板子上了,顺利的跑起来了。我用的是 SMDK2410 的 IAL 程序,可是还有一些问题,如下:

1:点在触摸屏上不动,可以见到 Cusor 在点的位置附近老是跳动,而且点的位置不准,

2:经常点 MiniGUI 的菜单或是按钮的时候,MiniGUI 没有反应,经printf 出来,发现菜单有时候收不到 MSG_COMMAND 消息,有时候能收到,就是说很不稳定 3:经常点击触摸屏的手离开后,Cursor 就消失了

经过调试后发现了原因,如下:

1:由于用的触摸屏是比较便宜的那种,所谓便宜没好货,触摸屏的采样很不稳定,我的屏是 3 寸屏,分辨率是 240x320 16-pp 的那种,可是我点击触摸屏从驱动读出来的值却是 900 多,800 多,而且还不是简单的线性关系,比如我点 X 轴 120 处,值为 400 ,我点X轴 239 处值为 900 ,晕死,如果用原来的 SMDK 2410 IAL 程序,根本无法正常工作

2:便宜屏还有个问题,就是在刚开始按触摸屏和快要放手时,这一头一尾两种情况下,采样值根本就是错误的,比如我按在 X 轴 120 处,刚开始得到的值是 230 ,然后是 250,400 ,401,398,403 ??402,100,101 ,这样的序号,可以看到,在刚开始和快结束时采到的值根本是错误的,这就是为什么我说“手一离开触摸屏,Cusor就消失”的原因为了,因为这时候 Cusor 跑到错误的坐标值上去了,当然就消失了

3:经常点 MiniGUI 的菜单却没有响应,其实还是上面 2 的原因,菜单的响应是当你的手离开触摸屏后,会产生一个 MSG_LBUTTONUP 消息,在这个消息中会调用 PtInRect()检查这时候的点击位置是否在菜单上,如果在的话,菜单就会触发一个 MSG_COMMAND 消息,于时菜单就会显示出来,其实 MiniGUI 中对所有的点击都是这样处理的。(自己看看 MiniGUI 的源代码就会明白了)。因为我的便宜屏在手快要离开触摸屏时得到的坐标是错误的,所以这时候 PtInRect() 就会返回错误的值,就好像我点在屏的别的地方了一样,所以这时候菜单根本得不到消息。

根据以上原因,我对 MiniGUI 1.3.3 版本中的 2410 的 IAL 程序进行了修改,使得它在我的 便宜屏 上一样可以正常工作。它提供了去抖动功能,就是点击时一头一尾那两下的不准确的值不能要,同时提供了一个方便的屏幕校准程序,你只需要做小小的修改就可以校准让它在你的 便宜屏 上很好的正常工作了。

搜索更多关于: Minigui移植uClinux 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

TextOut (hdc, 100, 100, \ EndPaint (hWnd, hdc); return 0; case MSG_CLOSE: DestroyMainWindow (hWnd); PostQuitMessage (hWnd); return 0; } return DefaultMainWinProc(hWnd, message, wParam, lParam); } int MiniGUIMain (int argc, const char* argv[]) { MSG Msg; HW

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com