随着嵌入式系统的不断发展,处理器性能的不断提升,存储系统容量的不断扩大,各种多媒体应用程序被移植到嵌入式系统中,多媒体组件成为其不可或缺的重要组成部分。本文在比较如今流行的几种嵌入式图形系统的基础上,提出了基于MiniGUI的嵌入式媒体播放器的设计与实现方法。
1 引言
随着嵌入式系统的不断发展,处理器性能的不断提升,存储系统容量的不断扩大,各种多媒体应用程序被移植到嵌入式系统中,多媒体组件成为其不可或缺的重要组成部分。嵌入式多媒体播放器的开发是当前 IT产业的热点之一 ,呈现了巨大的市场需求。与些同时,播放器功能复杂化和普及化对产品的交互界面提出了更高的要求。现在许多高端手机和PDA 产品上已经有了多媒体播放器,可是和PC 机上的播放器相比现有的这些播放器的功能都有待进一步增强。
将现代窗口和图形技术带入到嵌入式设备的 MiniGUI,是一个非常适合于实时嵌入式设备的高效、可靠、可定制、小巧灵活的跨操作系统的图形用户界面支持系统。它采用类Win32的API接口,是一个多窗口GUI支持系统。本文首先比较各种嵌入式图形系统,然后提出基于MiniGUI的嵌入式媒体播放器的设计与实现方法。
2 各种嵌入式图形系统之比较
目前,流行的面向嵌入式系统的图形系统有MicoroWindows/NanoX、Qt/Embedded、MiniGUI、DirectFB、PicoGUI以及GTK /FB等。它们中的大多数遵循LGPL条款发布,而MicoroWindows/NanoX遵循的是MGPL,Qt/Embedded采用QGPL条款发布。
MicroWindows/NanoX能够在没有任何操作系统或其他图形系统的支持下运行,它能对裸显示设备进行直接操作。这样,MicroWindows就显得十分小巧,便于移植到各种硬件和软件系统上。然而MicroWindows/NanoX的免费版本开发进展慢,而且缺乏全面专业的技术支持。
Qt/Embedded功能强大,但是,由于它是基于C 类库的,所以和其他GUI相比系统消耗资源较大,一般应用于手持式高端信息产品。
GTK /FB与Qt/Embedded类似,跳过X层直接与FrameBuffer沟通,也具有Qt/Embedded的几项优点,但发展速度缓慢。
DirectFB是专注于Linux FrameBuffer加速的一个图形库,并试图建立一个兼容GTK的嵌入式GUI系统。
PicoGUI是一种新型的小巧的嵌入式图形系统。同X Windows系统一样具有一个弹性的客户服务端架构。PicoGUI将字体,位图,窗口小部件,以及其他应用程序需要的东西都直接建立在服务器上,与X Windows相比,虽然灵活性有所降低,但速度显著提升、体积大大缩小。
MiniGUI为实时嵌入式操作系统提供了非常完善的图形及用户界面支持。MiniGUI本身的可移植性设计,使得不论在哪个硬件平台,哪种操作系统上运行,MiniGUI均能为上层应用程序提供一致的应用程序编程接口(API)。MiniGUI小巧、灵活且对中文的支持性最好。
3 设计与实现
3.1播放器总体结构
本文中的播放器采用MiniGUI作为底层图形库,用于生成用户界面以及读写FrameBuffer。
播放器软件总体结构如图2所示,它主要由三部分组成,分别是图形用户界面模块、系统管理主控模块和音/视频解码器。三部分功能设计如下面所述:
图形用户界面模块通过事件/消息机制和系统管理主控模块交互。
音/视频解码器模块可以看作是系统管理主控模块的插件(plug-in),从系统管理主控模块获得编码的音/视频数据并对其解码后发送己解码的音/视频数据给系统管理主控模块。
系统管理主控模块则负责网络数据的接收和解析、图形用户界面模块和音/视频解码器模块的工作协调和音/视频数据的输出。这个模块是播放器软件中非常重要的一个模块。
3.2 用户图形界面设计
MiniGUI提供了丰富的GUI元素,如常见的控件类、对话框与消息框以及菜单等,此外,MiniGUI支持界面皮肤。因此,利用MiniGUI可以非常方便地设计出漂亮的用户图形界面。
播放器的人机交互界面主要包括播放控制与文件列表管理两大部分。播放控制用来实现对所选择的媒体文件作播放/暂停、停止及进度控制等;文件列表管理则用来实现向播放列表添加、删除媒体文件以及对列表中文件排序等功能。 [page]
3.3 主要函数及具体实现
⑴ 播放控制事件回调函数
static int main_event_cb (HWND hwnd, skin_item_t* item, int event, void* data)
{ …
if (event==SIE_BUTTON_CLICKED) {
switch (item->id) {
case SIID_PLAY:
…
case SIID_PAUSE:
…
case SIID_STOP:
…
case SIID_CLOSE:
…
}
}
else if (event==SIE_SLIDER_CHANGED && item->id!=SIID_VOLUME) {
…
}
return 1;
}
⑵ 列表事件处理函数
void playlist_handle_event(PEvent *event, void *data)
{
…
switch(event->type) {
case ButtonPress:
…
case ButtonRelease:
…
case KeyPress:
if(!playlist)
return;
mykeyevent = event->xkey;
LockDisplay(gGui->display);
len=LookupString(&mykeyevent, kbuf, sizeof(kbuf), &mykey, NULL);
UnlockDisplay(gGui->display);
switch (mykey) {
case K_Down:
case K_Next:
browser_step_up(playlist->playlist, NULL);
break;
case K_Up:
case K_Prior:
browser_step_down(playlist->playlist, NULL);
break;
default:
gui_handle_event(event, data);
break;
} [page]
break;
case MappingNotify:
LockDisplay(gGui->display);
RefreshKeyboardMapping((MappingEvent *)event);
UnlockDisplay(gGui->display);
break;
}
}
⑶ 主函数
int MiniGUIMain(int argc, const char* argv[])
{
…
PlayerHandle=PlayerNew();
…
free(buffer);
PlayerGetInfo(PlayerHandle, &fi);
…
InitCreateInfo(&CreateInfo);
hMainWnd=CreateMainWindow(&CreateInfo);
if (hMainWnd==HWND_INVALID)
return -1;
…
while( GetMessage(&Msg, hMainWnd) )
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
…
}
PlayerClose(PlayerHandle);
…
MainWindowThreadCleanup(hMainWnd);
return 0;
}
4 结束语
随着嵌入式系统硬件性能的不断提升,用户对应用程序界面的友好性和功能的完备性提出了更高的要求。本文介绍的基于MiniGUI的嵌入式媒体播放器具有设计简单,占用系统资源少等特点,可作为开发基于嵌入式图形界面系统的应用软件的参考。
参考文献
[1] 魏永明.M in iGUI用户手册v1.6 [M].北京:北京飞漫软件技术有限公司,2006.
[2] 魏永明.M in iGUI编程指南v1.6 [M].北京:北京飞漫软件技术有限公司,2006.
[3] 杨小军.基于嵌入式Linux系统界面的研究[[J].现代电子技术,2004, 27 (IS):89-91.
[4] BarrM. C/C 嵌入式系统编程[M].十志宏译.北京:中国电力出版社,2001.
关键字:MiniGUI 媒体播放器 PDA
引用地址:基于MiniGUI的嵌入式媒体播放器设计与实现
1 引言
随着嵌入式系统的不断发展,处理器性能的不断提升,存储系统容量的不断扩大,各种多媒体应用程序被移植到嵌入式系统中,多媒体组件成为其不可或缺的重要组成部分。嵌入式多媒体播放器的开发是当前 IT产业的热点之一 ,呈现了巨大的市场需求。与些同时,播放器功能复杂化和普及化对产品的交互界面提出了更高的要求。现在许多高端手机和PDA 产品上已经有了多媒体播放器,可是和PC 机上的播放器相比现有的这些播放器的功能都有待进一步增强。
将现代窗口和图形技术带入到嵌入式设备的 MiniGUI,是一个非常适合于实时嵌入式设备的高效、可靠、可定制、小巧灵活的跨操作系统的图形用户界面支持系统。它采用类Win32的API接口,是一个多窗口GUI支持系统。本文首先比较各种嵌入式图形系统,然后提出基于MiniGUI的嵌入式媒体播放器的设计与实现方法。
2 各种嵌入式图形系统之比较
目前,流行的面向嵌入式系统的图形系统有MicoroWindows/NanoX、Qt/Embedded、MiniGUI、DirectFB、PicoGUI以及GTK /FB等。它们中的大多数遵循LGPL条款发布,而MicoroWindows/NanoX遵循的是MGPL,Qt/Embedded采用QGPL条款发布。
MicroWindows/NanoX能够在没有任何操作系统或其他图形系统的支持下运行,它能对裸显示设备进行直接操作。这样,MicroWindows就显得十分小巧,便于移植到各种硬件和软件系统上。然而MicroWindows/NanoX的免费版本开发进展慢,而且缺乏全面专业的技术支持。
Qt/Embedded功能强大,但是,由于它是基于C 类库的,所以和其他GUI相比系统消耗资源较大,一般应用于手持式高端信息产品。
GTK /FB与Qt/Embedded类似,跳过X层直接与FrameBuffer沟通,也具有Qt/Embedded的几项优点,但发展速度缓慢。
DirectFB是专注于Linux FrameBuffer加速的一个图形库,并试图建立一个兼容GTK的嵌入式GUI系统。
PicoGUI是一种新型的小巧的嵌入式图形系统。同X Windows系统一样具有一个弹性的客户服务端架构。PicoGUI将字体,位图,窗口小部件,以及其他应用程序需要的东西都直接建立在服务器上,与X Windows相比,虽然灵活性有所降低,但速度显著提升、体积大大缩小。
MiniGUI为实时嵌入式操作系统提供了非常完善的图形及用户界面支持。MiniGUI本身的可移植性设计,使得不论在哪个硬件平台,哪种操作系统上运行,MiniGUI均能为上层应用程序提供一致的应用程序编程接口(API)。MiniGUI小巧、灵活且对中文的支持性最好。
3 设计与实现
3.1播放器总体结构
本文中的播放器采用MiniGUI作为底层图形库,用于生成用户界面以及读写FrameBuffer。
播放器软件总体结构如图2所示,它主要由三部分组成,分别是图形用户界面模块、系统管理主控模块和音/视频解码器。三部分功能设计如下面所述:
图形用户界面模块通过事件/消息机制和系统管理主控模块交互。
音/视频解码器模块可以看作是系统管理主控模块的插件(plug-in),从系统管理主控模块获得编码的音/视频数据并对其解码后发送己解码的音/视频数据给系统管理主控模块。
系统管理主控模块则负责网络数据的接收和解析、图形用户界面模块和音/视频解码器模块的工作协调和音/视频数据的输出。这个模块是播放器软件中非常重要的一个模块。
3.2 用户图形界面设计
MiniGUI提供了丰富的GUI元素,如常见的控件类、对话框与消息框以及菜单等,此外,MiniGUI支持界面皮肤。因此,利用MiniGUI可以非常方便地设计出漂亮的用户图形界面。
播放器的人机交互界面主要包括播放控制与文件列表管理两大部分。播放控制用来实现对所选择的媒体文件作播放/暂停、停止及进度控制等;文件列表管理则用来实现向播放列表添加、删除媒体文件以及对列表中文件排序等功能。 [page]
3.3 主要函数及具体实现
⑴ 播放控制事件回调函数
static int main_event_cb (HWND hwnd, skin_item_t* item, int event, void* data)
{ …
if (event==SIE_BUTTON_CLICKED) {
switch (item->id) {
case SIID_PLAY:
…
case SIID_PAUSE:
…
case SIID_STOP:
…
case SIID_CLOSE:
…
}
}
else if (event==SIE_SLIDER_CHANGED && item->id!=SIID_VOLUME) {
…
}
return 1;
}
⑵ 列表事件处理函数
void playlist_handle_event(PEvent *event, void *data)
{
…
switch(event->type) {
case ButtonPress:
…
case ButtonRelease:
…
case KeyPress:
if(!playlist)
return;
mykeyevent = event->xkey;
LockDisplay(gGui->display);
len=LookupString(&mykeyevent, kbuf, sizeof(kbuf), &mykey, NULL);
UnlockDisplay(gGui->display);
switch (mykey) {
case K_Down:
case K_Next:
browser_step_up(playlist->playlist, NULL);
break;
case K_Up:
case K_Prior:
browser_step_down(playlist->playlist, NULL);
break;
default:
gui_handle_event(event, data);
break;
} [page]
break;
case MappingNotify:
LockDisplay(gGui->display);
RefreshKeyboardMapping((MappingEvent *)event);
UnlockDisplay(gGui->display);
break;
}
}
⑶ 主函数
int MiniGUIMain(int argc, const char* argv[])
{
…
PlayerHandle=PlayerNew();
…
free(buffer);
PlayerGetInfo(PlayerHandle, &fi);
…
InitCreateInfo(&CreateInfo);
hMainWnd=CreateMainWindow(&CreateInfo);
if (hMainWnd==HWND_INVALID)
return -1;
…
while( GetMessage(&Msg, hMainWnd) )
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
…
}
PlayerClose(PlayerHandle);
…
MainWindowThreadCleanup(hMainWnd);
return 0;
}
4 结束语
随着嵌入式系统硬件性能的不断提升,用户对应用程序界面的友好性和功能的完备性提出了更高的要求。本文介绍的基于MiniGUI的嵌入式媒体播放器具有设计简单,占用系统资源少等特点,可作为开发基于嵌入式图形界面系统的应用软件的参考。
参考文献
[1] 魏永明.M in iGUI用户手册v1.6 [M].北京:北京飞漫软件技术有限公司,2006.
[2] 魏永明.M in iGUI编程指南v1.6 [M].北京:北京飞漫软件技术有限公司,2006.
[3] 杨小军.基于嵌入式Linux系统界面的研究[[J].现代电子技术,2004, 27 (IS):89-91.
[4] BarrM. C/C 嵌入式系统编程[M].十志宏译.北京:中国电力出版社,2001.
上一篇:DVB-C数字机顶盒的设计方案与实现方法
下一篇:TD-MBMS技术及演进
推荐阅读最新更新时间:2024-05-02 23:00
PDA功能模块的设计
Springboard扩展槽可集成在Visor与Visor Deluxe手持式电脑中,从一开始就为手持式电脑设计了真正的即插即用硬件扩展功能。由于独特的平台型设计机遇,业已设计了多款Springboard模块并投入市场。
Springboard槽的设置充分考虑到用户的使用要求。用户可将欲增添的硬件附件直接插入模块,使用时无需装载额外的软件,也不用安装复杂的驱动程序。一个成功地设计的模块可随时插入或拔出,甚至在使用之中,也不会危及或损坏系统。
Spring Board扩展槽具有三大特点:
1、真正的即插即用:模块内置使用Springboard模块所必需的全部软
[应用]
英特尔逆市注资 杭州安防市场赢商机
2月11日,美国英特尔公司与浙江银江电子股份有限公司共同宣布,由英特尔全球投资机构——英特尔投资向银江股份注资,并在杭州交通智能化和医疗数字化建设两大项目中进行深入合作。 银江股份是交通智能化和医疗数字化解决方案的提供商。在全球金融海啸来袭、产业资本裹足不前的境况下,杭州有一批开发安防产品的科技企业,通过细分市场发现商机,照样取得了不错的业绩。 护士上班带掌上电脑 打吊针全程网络监控 开发医疗数字化解决方案,就是将无线技术应用到整个医院系统中,这也是最吸引英特尔的地方。银江股份总经理章笠中说,传统医嘱的执行人工环节特别多,很难排除人工出错的可能。他举了个例子:过去如果医生修改医嘱、病人需要退药的话,往往会发生
[安防电子]
嵌入式Linux环境下MiniGUI的研究与移植
前言
近年来随着嵌入式设备与市场需求的广泛结合,手机、PDA、DVD播放机等产品的应用对可视化操作界面的简洁和方便提出了更高的要求,这都需要一个稳定可靠的高性能GUI系统来提供支持。图形用户界面(Graphic User Interface,简称GUI)的广泛流行是当今计算机技术的重要成就之一,它极大地方便了非专业用户的使用,人们可以通过窗口、菜单方便地进行操作。由于嵌入式系统实时性要求高,同时嵌入式系统硬件配置又有限,所以对轻型GUI的需求更加突出。另外,嵌入式系统往往是一种订制设备,它们对GUI的需求也各不相同,因此GUI也必须是可订制的。综上所述,嵌入式系统对GUI的基本要求应包括轻型、占用资源少、高性能、高
[嵌入式]
VSS-PMP-100 便携多标准媒体播放器
VSP100作为协处理器提供PMP完美的多标准媒体解码功能。 基于VSP100,支持网络流行的各种格式多媒体文件解码。 基本特征: 支持的视频标准:MPEG2, MPEG4, H.264, AVS, WMV9, Real Media 10等 支持的音频标准:MP3, AAC, Dolby, WMA, RMA等 支持的媒体格式:ASF,AVI,DivX,MP4,QT,RM10,VC-1,VOB,WMV9,xVid等 支持图片标准:JPEG 控制接口:UART, I2C, SPI 彩色屏幕:支持各类RGB接口LCD屏 内置锂电池:支持超长时间播放 音频输出:扬声器, 耳机 视频接口:电视输出 器件列表: 处理器:PMP
[新品]
索喜科技成功研发可实现8K实时发送的媒体播放器
先进视觉影像SoC应用技术领导厂商Socionext Inc.(以下“索喜科技”或“公司”)宣布,独自研发搭载有8K HEVC解码芯片的世界最小、最轻型8K/4K媒体播放器“S8”。该产品预计于2018年3月起向LED直播大屏幕及数字标牌等广告媒体商提供销售。索喜科技将以这款播放器为中心,构筑8K影像编码、发送、解码、显示一系列解决方案,为超精细影像场景的普及提供多种解决方案。 公司在研发8K/60PHEVC解码及符合ISDB-S3数字广播标准的解调器LSI方面处于世界领先地位,是4K/8K卫星广播(2018年起投入启用)接收终端产品的行业领导者。随着第五代移动通信系统(5G)将在2020年投入并推向商业化,超精细影像内容的使
[网络通信]
PDA环境下GPS信号的接收和处理方法
摘要 阐述在WiTadows CE嵌入式系统中,利用串口实现GPS和PDA通信的方法。首先,介绍GPS信号的数据格式,并对系统的软硬件环境及串行通信进行描述。最后,设计GPS信号处理模块,详细说明如何使用嵌入式程序语言开发串口通信程序,并给出具体步骤和部分实现代码。
关键词 GPS PDA 串口通信 Windows CE
引言
3PS即全球定位系统,主要有三大组成部分——空间星座部分、地面监控部分和用户设备部分。其中(GPS空间星座部分、地面监控部分均为美国所控制;(GPS的用户设备主要由接收机硬件和处理软件组成。用户通过用户设备接收GPS卫星信号,经信号处理而获得用户位置、速度等信息,最终实现利用GPS进行导航和定位的目的。
[应用]
多媒体播放器功能及方案解析
打开一个PMP,用户会发现可以播放的视频内容不多。通常用户需要用PC软件转录成PMP能支持的格式,或者使用PMP来录制电视内容,然后用PMP回放。这使得PMP的使用比较麻烦。从In-Stat对2006年中国PMP市场的调查报告中也同样看到了PMP的一大障碍就是易获取内容的缺乏。要解决内容这个难题,下面的三种内容资源需要下一代PMP的支持。
a. RMVB
当今社会处于一个互联网时代,网上的资源非常的多,但在网络上对于普通PMP能支持的MPEG4的内容却很有限。大多数网上的视频资源都是RMVB的格式,分辨率从800×600到320×240都有。如果PMP利用网络上大量的RMVB资源,也就是能够播放RMVB格式的视频,那么PM
[嵌入式]
基于嵌入式的物流盘点PDA无线终端设计
科学技术的进步带来了物流业的巨大变化,从机械化向自动化、智能化发展。我国物流业起步较晚,目前还处于人工管理或半自动管理状态,效率不高。随着物流业的发展,仓储规模不断扩大,货物种 类不断增多,带来一系列连锁反应,导致传统的物流业日渐吃力。 嵌入式扩展技术的发展可为物流MA控制领域提供强大灵活的解决方案。本文研究方案将嵌入式扩展技术系统应用于物流控制领域,采用嵌入式处理器以及丰富的外围扩展接口,配以液晶触摸屏,实现了人机交互。结合条码采集器,实现实时采集数据信息,通过无线传输实时连接服务器数据库;实时盘点货物、出入库;实时查询信息及时调度;还具有存储语音数据、简便快捷、避免人为错误、精简人力、管理库存、缩短繁杂程序、节省时间、
[单片机]
小广播
热门活动
换一批
更多
最新嵌入式文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
- Microchip 有奖直播|如何构建车载充电器
- 今日竞拍:TI SimpleLink Wifi CC3220S
- 温故知新:回顾 ST 2017 Roadshow,洞悉电子界技术新潮流!
- 有奖活动|逛安富利人工智能云会展,解锁AI资料,赢好礼!
- 看视频答题,玩转幸运大抽奖:Littelfuse汽车电子电路保护知多少
- 【已结束】TE 直播|如何有效应对当下测试测量领域的挑战
- 遇见春天,“愚”你同乐 快来与keysight一起学习 光通信测试测量解决方案 下载赢好礼!
- 温故知新:回顾 ST 2017 Roadshow,洞悉电子界技术新潮流!
- “TI 中国大学计划” 知多少——答题赢好礼!
- 【ST直播】MEMS传感器开发套件简介、了解内嵌“有限状态机和机器学习内核”的传感器
11月23日历史上的今天
厂商技术中心