LED播放软件的设计开发.docx
- 文档编号:14191052
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:19
- 大小:193.96KB
LED播放软件的设计开发.docx
《LED播放软件的设计开发.docx》由会员分享,可在线阅读,更多相关《LED播放软件的设计开发.docx(19页珍藏版)》请在冰点文库上搜索。
LED播放软件的设计开发
LED播放软件的设计开发
1.引言
本论文源于实际工程项目,用于LED播放控制的PC机软件。
开发平台为VisualStudio2005。
1.1LED显示屏简介[1]
LED(发光二极管)显示屏是一种利用计算机和复杂数字信号处理的电子广告宣传屏。
它的屏体部分是由微处理器(主要是单片机)和驱动电路控制运行的,而显面的图像或文字由计算机编辑软件编辑获得的。
它集微机控制技术、电子技术、通信技术计算机图形学技术、数字图像处理技术为一体,是一种高技术产品。
由于LED显示屏这种新一代信息显示设备具有显示图案稳定、功耗低、寿命长的特点,而且它综合了各种信息显示设备的长处,并且克服了各自的不足。
特别是由于一幅显示屏可以显示不同的内容,显示方式丰富,所以在公众场合,它具有强烈的广告宣传和信息传递秀果。
现在国内广告宣传在经济的快速发展和逐渐形成的市场经济的推动下发展很快,但室外广告几乎都集中于霓虹灯和广告画两种,所以LED显示屏以其优异的性能已逐渐被应用于大中型商场、证券公司、闹市区等处,作为广告宣传和信息传递之用。
1.2课题的意义
LED播放器[4]是指LED显示屏信息显示时,显示部分是显示屏屏体按预定格式从显示缓存中提出信息,把它送入显示屏显示;计算机负责显示内容(文字、图片、图表)的编辑,并通过通讯接口向显示屏发送,它是LED显示信息的源泉,显示内容编辑的效果及信息存储的格式等直接影响LED显示的效果。
因此,如何开发出灵活、高效的控制系统是一个非常有意义的研究课题,这也是本论文研究的主要内容。
当前国内的LED播放器软件,主要有灵星雨的LED演播室占国内市场的70%,是LED显示主要力量;德普达LED控制系统,它的功能不够健全,操作不太简便。
所以LED控制系统的市场存在很大的潜力,前景十分广阔。
本文都对他们功能进行了融合并增加了新的功能,增进了节目文件解析的方式及显示内容特效的多样性,增强了软件界面美观性,操作简易性。
2.LED显示器播放软件的设计
由于当前LED播放控制系统存在着很大的市场潜力。
根据LED显示屏系统的具体要求,按照工程实际需要,要设计出更加方便、人性化的控制系统。
因此,如何开发出灵活、高效的LED显示控制系统是一个非常有意义的研究课题。
本文从工程实际出发,为LED显示屏设计开发了一套节目制作与播放的软件控制系统,用来实现信息定制与显示控制。
通常情况下,系统通过与一台PC机连接,开启,即直接映射控制站点显示器的左上部分的显示内容,控制台来编辑节目和控制LED屏幕显示。
2.1系统的总体结构
LED显示屏控制系统,主要功能是编辑和控制LED上显示的内容。
首先在上位机制作节目,然后将要显示的区域内容传输到LED,在制作节目的过程中可以在上位机预览显示效果。
LED显示的内容丰富多彩,包括文本、图形、表格、视频等。
LED的整个播放系统主要由控制台(本文制作的软件)、发送卡、接收卡、LED构成。
结构如图2.1所示。
本文主要处理控制台节目的编辑和播放控制。
图2.1系统结构框图
2.1.1软件系统结构图
LED播放器软件的结构分为界面模块、播放模块、编辑模块、硬件和软件设置模块。
系统模块具体调用关系如图2.2所示。
图2.2系统模块具体调用关系
2.2LED控制器功能设计
2.2.1系统设计目标
现代信息显示技术的发展,LED显示屏以绝对的优势成为主流产品。
LED显示,根据不同场合的要求,在具体的使用功能上具有以下特点:
高亮度、视角合理,显示颜色丰富。
PC机软件控制对安全性、实时性、准确性、可靠性要求高。
LED显示屏节目制作及播放控制的软件系统(SeaSkyPlayer播放器)为LED显示屏控制系统开发的一套节目制作、播放的软件,主要是通过图文控制器实现LED信息的初始化、显示和控制等功能,为满足用户的不同需求和不同的应用场合,具体目标如下:
(1)支持显示屏参数软件的初始化设置、加载;
(2)支持表格输入;
(3)支持定时播放;
(4)支持网络功能;
;
(5)文本支持Word,Excel:
软件开发采用面向对象的技术,具有良好的可扩容性。
软件的功能实用、操作方便,并且实现LED显示的软件控制,大大提高了应用的灵活性和软件的伸缩性。
2.3LED系统设计
LED播放器软件以VisualStudio2005为平台开发,界面以对话框为基础,分为主编辑窗口和播放及编辑预览窗口。
主编辑窗口以对话框为基础,包括菜单栏、工具栏和节目编排部分。
其中应用一些专门的类进行界面美化,如CBCMenu类、CToolBarEx类和CBtnST类分别美化菜单、工具栏和按钮使界面更加亲和美观。
菜单栏和工具栏包含了系统常用的功能,方便用户使用;节目编排部分将用户编排的节目以树状形式显示出来,同时具有上移,下移,删除,展开和叠起等功能,方便用户查看和管理;节目效果编辑为用户提供了丰富的功能,使节目显示具有丰富的多样性。
播放及编辑预览窗口是与主对话框相独立的窗体,播放时,它是LED显示信息的数据采集区域:
编辑时,可以预览节目的编辑效果,其用如下方法实现:
this->mparent=this->GetDesktopWindowO;//设置桌面为父窗口
this->CreateEx(0,AfxRegisterWndClass(0,NULL,NULL,AfxGetApp0->LoadStandardIcon(IDI_WIN-LOGO)),“Screen”,WS—POPUP,Rect,NULL,NULL)∥创建窗体
这种方法实现了以桌面为窗1:
1的父窗口,然后创建出独立于主编辑界面的窗体。
2.3.1节目窗编辑类功能
LED节目文件由一个或多个节目页组成。
节目页有两种:
正常节目页和全局节目页,正常节目页是节目主要构件,可以有多个,各节目页之间按顺序播放;全局节目页只有一个,在整个节目播放过程中一直播放,主要用于时钟,公司标志等固定内容的播放。
节目页由一个或多个节目窗组成。
节目窗是用来显示用户所要播放的文本、图片、动画、多媒体片断等内容。
节目窗有多种:
文件窗、单行文本窗、静止文本窗、表格窗、计时窗、日期时间窗等。
为之对应,我们设计了节目窗编辑类。
主窗口:
控制节目的播放、暂停和停止,远程控制,屏幕检测等;
节目编排对话框:
添加节目页和节目窗,设置要播放节目的次序;
编辑节目对话框:
设置各种节目的特效。
文件窗:
可以播放各种文字、图片等文件。
单行文本窗:
用于播放单行文本,例如通知、广告等文字。
静止文本窗:
用于播放静止文本,例如公司名称、标题等文字。
表格窗:
用于编辑播放表格数据。
计时窗:
用于计时。
支持顺计时和倒计时。
日期时间窗:
用于显示日期及时间。
图2.3介绍了节目窗编辑类的调用关系。
名称
功能说明
CBaseArea
设置窗口的边框(颜色、宽度)、颜色、透明、锁定、大小、位置、节目定时播放等。
CFatherWnd
管理播放窗口(建立一个双链表来管理窗口层次),并根据界面传递过来的编辑命令改变播放窗口的外观和内容。
并将播放窗口的位置信息反馈给界面。
载入及保存节目文件(以xml格式)。
CPlayArea
建立播放节目列表,接收界面传来的播放控制命令转发给播放窗口。
COfficeClass
管理与播放各种文件,包括文本文件、网页文件、Word/excel文件、图片文件、flash文件和各种视频文件。
除flash和视频外,可以用40多种特效显示以上文件。
其它窗口类
为LED显示提供计时、时钟、通知、体育比分等相关功能。
图2.3节目窗编辑类的调用关系
2.3.2节目管理类的设计
考虑LED显示的实际需要,本文主要设计了以下节目类:
节目窗基类(CBaseArea),节目编辑类(CFatherWnd),单行文本类(CSingleLineWord),文件类(COfficeClass)等。
节目管理类的继承关系如图2.4所示。
图2.4节目管理类的继承关系
2.4LED节目文件格式设计
节目文件是用来存储LED播放器编辑的节目。
由于LED节目由多个节目页组成,一个节目页由多个节目项组成。
鉴于这中多层且分组的结构形式,采用XML文件[6]来配置节目文件。
2.4.1文件概述
XML(ExtensibleMarkupLanguage)是W3C的标准的可扩展标记语言,它被设计用来进行数据的存储、传输以及交换,各种平台通用,可移植性好,具有非常广泛的用途。
从写的角度看,几乎所有的应用程序都能处理XML文件,并且通过DOM提供的方法可以快捷的对XML文件进行操作。
从读的角度看,XML文件提供了一种简洁的自解释的标记方法,几乎不需要说明文档,就能理解XML格式的配置文件的意义。
XML提供了一种树形层次结构,可以很方便的定位某一功能块。
它使开发人员能够将结构化数据,从许多不同的应用程序传递到桌面,进行本地计算和演示。
当前流行的解析XML技术是用CMarkup类来解析XML文档。
CMarkUp是基于”压缩”文档对象模型(EDOM:
”Encapsulated”DocumentObjectModel),此技术是计息XML的关键。
EDOM是操作XML元素、属性和数据的简明方法集。
当不需要复杂的XML特性时,它避免阅读大量的DOM和SAX文档。
它的一套XML处理方法和产生的效果与DOM(DocumentObjectModel)是一样的。
但是整个DOM有无数的对象类型,而EDOM只定义了一个对象:
XML文档,EDOM回到了XML原始的吸引力简单。
由于LED节目文件是一个树形结构,所以本文使用XML来配置节目文件。
2.4.2文件管理
本文使用开源的CMarkup类来对LED节目文件进行解析。
CMarkUp封装了XML文档文本、结构和当前位置。
它提供了增加元素、导航和得到元素属性和数据能所有方法。
在文档中操作被执行的地方取决于当前位置和当前孩子位置。
当前位置允许增加一个元素到文档中的这个位置,而不需要明确指出增加对象到文档的这点上,在CMarkup的有效生命周期里,对象一直保持着一个用来描述文档的字符串。
在程序中创建一个XML文档。
CMarkupxml;//建立xml
xmI.AddElem(L”Area”);
xml.AddAttrib(L”type”,L2’);∥类型号”“表示文件
xml.AddAttrib(L”lock”,strfilelock);
xml.AddAttrib(L”clarity”,L”0”);
xml.AddAttrib(L”transparent”,L”0”);//是否透明
xml.AddAttrib(L”dlgname”,dlgname);//窗体名字
xml.IntoElem0;
xml.AddElem(L,”position¨);//输入位置信息
xml.AddAttrib(L,”xl”,startx);
xml.AddAttrib(L,”yl”,start,y);
xml.AddAttrib(L,”x2”,startx+width);
xml.AddAttrib(L,”y2”,stm'ty+height);
xml.Save(“c:
//Userlrffo.xml”);//保存文档到文件
returnxml.GetDoc0;//返回xml
3.LED显示器播放软件的开发
LED节目编辑和播放控制器是用来完成LED显示内容(包括文本、表格、图形、时钟、计时等等)的编辑、预览和传输等等。
编辑器功能主要包括:
动态的添加、删除LED的显示内容,可以在上位机预览脱机屏的显示效果和各个显示内容进行所见即所得的编辑;使编辑的内容可以持续,既存储,以便于下次继续编辑;也可以将节目文件编辑完成后,在进行连续自动播放。
3.1界面简介
LED节目编辑和控制器是基于对话框的应用程序,界面如图3.1所示。
从图中可以看出界面由标题栏、菜单栏、工具栏、播放及预览窗口和节目编辑窗(包括节目列表和节目效果设置两部分)五个部分组成。
图3.1软件主界面
标题栏位于界面最顶部,显示应用程序国标、文件名称最小化及关闭按钮。
其操作与标准Windows应用程序相同。
菜单栏位于标题栏下面,共有6个子菜单:
文件、控制、包含了应用程序的绝大多数操作。
工具栏位于菜单栏下面,本文设置了两打工具栏,工具栏中的工具基本都是菜单栏中使用频繁的操作。
第一行包括新建、打开、保存、复制节目窗/页、粘贴、隐藏/显示播放及预览窗口、隐藏/显示节目编辑窗、播放文件、从当前指定节日开始播放、暂停、停止、帮助、中英文界面切换:
第二行主要是对播放及预览窗口进行设置,方便对节日文件的位置进行设置,包括水平平铺、垂直平铺、全屏、靠上放置、靠下放置、靠左放置、靠右放置、垂直居中、水平居中、全屏居中、锁定、变换皮肤等等。
播放及预览窗口左侧独立于主窗口之外的部分,播放时,它是LED显示信息的数据采取区域,在此窗口看见的显示信息即为LED显示的内容:
编辑时,可以预览节目的编辑效果,用户可以直接用鼠标来调整节目窗韵位置及大小,同时在此窗口还有右键菜单来辅助设置窗口。
节目编辑窗位于工具栏下面,占据了界面的绝大部分。
共有2个窗口,左边的是节目列表窗口,用于显示当前编辑所要显示的LED节日的数量与种类,窗口上方有一个工具栏用来编辑节日文件,包括添加节目页、添加节目窗、复制节目窗(页)、粘贴、删除、上移、下移的操作,同时窗口中包含右键快捷菜单包括上述功能t右边的是节目效果属性设置窗口,包含基本属性和效果属性2个界面(如下图),点击窗口上方两个按钮来切换。
基本属性是每一个节目窗共有的属性,包含窗体名称、边框(类型、宽度、颜色)、起点X/Y、宽度、高度、锁定、透明、定时等属性:
基本属性足每一个节目窗都有自己的属性,各自不同,包括显示的内容、显示的方式等等。
3.2软件设置
编制应用程序的工程中,经常要用到设置或者其他少量数据的存盘,以便程序在下一次执行的时候可以使用,比如说保存本次程序执行时窗口的位置、大小、一些用户设置的数据等等,在Win32编程中,Windows已经为我们提供了两种方便的办法,那就是使用注册表或.ini文件(Profile)来保存少量数据。
本文使用的是.ini文件,在程序中使用了两种方法GetPrivateProfileString和WritePrivateProfileString对ini文件进行读取操作,主要用来存储最近打开文件、开机启动、播放窗口位置信息、中文界面设置等信息。
GetPrivateProfileString.从ini文件的某个Section取得一个key的字符串,它的原形是:
GetPrivateProfileString(LPCTSTRlpAppName,//指向包含Section名称的字符串地址
LPCTSTRlpKeyName,//指向包含Key名称的字符串地址
LPCTSTRlpDefault,//如果Key值没有找到,则返回缺省的字符串的地址
LPTSTRlpRetumedString,//返回字符串的缓冲区地址
DWORDnSize,//缓冲区的长度
LPCTSTRlpFileName//ini文件的文件名
);
WritePrivateProfileString//将一个Key值写入锄文件的指定Section中,它的原形是:
WritePrivateProfileString(
LPCTSTRlpAppName,//指向包含Section名称的字符串地址
LPCTSTRlpKeyName,//指向包含Key名称的字符串地址
LPCTSTRlpString,//要写的字符串地址
LPCTSTRlpFileName//ini文件的文件名
);
启动设置位于设置菜单中软件设置下,主要包括开机启动和启动时自动加载文件等功能。
用户可以根据自己的需求对软件进行设置,启动设置可以在任何时候进行设置,在下一次启动应用程序时这些设置生效。
设置的结果存储在相应的ini文件中。
LED节目编辑和控制器用来编辑LED屏显示的内容,而LED屏显示的内容与屏的属性是密切相关的,例如,由于全彩LED来读取桌面左上角上的显示信息,在不知道屏体尺寸的情况F是无法决定具体显示的位置,所以每一个文件的编辑都是针对特定属性(大小、位置),并且需要对这些属性进行设置。
LED节日编辑和控制器的播放及预览窗一般用显示屏屏体所包含的发光点的数量(列x行)作为其大小的计量单位,坐标信息相对桌面的位置,设置界面如图3.2所示。
设置的结果存储在相应的ini文件中。
图3.2设置界面
3.3节目窗功能实现
3.3.1窗口基类(CBaseArea)
(1)模块功能
①设置窗口内某一颜色为透明颜色,即该颜色表示区域为透明。
②显示边框,并可以控制边框的宽度,颜色,可设置并显示背景颜色。
③拖动改变窗口的大小,位置。
在拖动中保证不会超出父窗口的区域。
④可以锁定窗1:
3,在锁定状态下,窗口鼠标信息将发送给父窗口。
⑤定时播放功能。
窗口每隔一个可设定时间后播放一个可设定时间。
3.3.2编辑窗口(CFatherWnd)
(1)模块功能
主要功能是管理播放窗口,并根据界面传递过来的编辑命令改变播放窗口的外观和
内容。
并将播放窗口的位置信息反馈给界面。
①建立播放窗口列表,管理窗口的层次,载入及保存节目文件;
②编辑列表,包括窗口上移,下移,编辑窗口样式;
③播放及控制通知窗口,播放,暂停,停止:
④实现拖动父窗口时,各播放窗口与父窗口同比例缩放。
(2)主要功能实现
节目文件的存储。
本程序的节目文件以xml格式存储。
在编辑时,首先对内存中的xml对象进行操作。
界面下达保存命令后,将此对象存储到磁盘上。
窗口层次的管理。
在此类的内部用一个双链表来管理窗口。
链表的每一个节点是一个如下形式的结构体。
stmctAreaNode
{
CBaseArea*m_wnd;//播放窗口指针
AreaNode*m_next//下一个节点;
AreaNode*m_previous;//上一个节点
intm_pageIndex;//节点所在节目页编号
intm_order;//节点编号
intm_type;//窗口类型.
CRectm_lastRect//上一次播放窗口位置大小,缩放时使用。
};
节目窗口是有层次的,后一个节点表示的窗口要显示在前一个节点的上面,本文通过”所有者窗口”机制实现,即前一节点的窗口为后一节点窗口的所有者窗口,这样会保证后一窗口将显示在前一窗口的上面。
某窗口的所有者窗口是在窗口创建的时候指定的.创建后不可改变。
指定方法如下:
this一>CreateEx(0,strWndClass,‘M,WS_POPUP,m_areaRect,owner一>m_hWnd,NULL);
该语句的实现是在具体的播放窗口内,但在CFatherWnd中调用并指定其owner。
当窗口的层次需要调整时(如上下移动,删除窗口),由于窗口所有者不能改变,当前采用的方法是将链表删除后再按新的顺序重新建立窗口。
为了保证不大量删除和建立链表及窗口。
程序链表每次只建立一个节目页的长度。
①节目编辑。
界面下达的所有节目编辑命令首先体现在节目文件对象中,再调用CBaseArea:
:
ModifyAreaStyle0显现在窗口上。
当前页面属性的传递方法是利用XML文件,当选择的窗口属性变化时,有界面通过ModifyChildAreaStyle0或ModifyAreaStyle()函数向下传递修改后的属性xml字符串。
CFatherWnd类找到相应的播放窗口,并将此字符串传递下去,最后显现在窗口中。
②播放窗口同比例缩放。
3.4节目效果编辑实现与应用
节目效果编辑是LED节目编辑和控制器的最主要的工作之一,它决定了LED显示什么内容以及如何显示。
脱机屏的每一个独立的显示内容称为一个显示项,编辑器是以显示项为单位进行编辑的,包括文本显示项、表格显示项、视频显示项等。
3.4.1单行文本
(1)模块功能
①用设定的特效显示一行文本;
②设定显示字体,背景颜色。
特效播放速度,停留时间。
(2)功能实现
①文本的显示,利用CDC类的TextOut函数。
②特效的实现。
当前的特效实现方式为利用定时器,当定时时间到时,在新的位置输出字符串,或者覆盖字符串的新的位置。
程序运行起来后则体现出文字的一定或覆盖效果。
3.4.2静态文本
能够完成对所要显示的文字进行行距、字距的调整;对所编辑的文字进行居中、平分、左对齐、右对齐的排列;背景颜色的调整和背景图片的显示等。
3.4.3文件窗口
文件窗口是节目效果编辑窗口中最重要的窗口之一。
本窗口的主要工作是完成各种文件的管理与播放工作,主要工作由COfficeClass类来完成,下面介绍本类中文件播放的整体架构。
图3.3介绍的是文件播放模块的整个程序流程结构。
文件播放模块根据播放命令对指定的文件进行播放,需要管理包括文本文件、网页文件、Word文件、Excel文件、Flash文件和视频文件在内的六种类型文件,设计这么多的文件类型大大增加了LED显示节目的丰富性和多彩性。
图3.3文件播放整体架构
当界面选择好要播放的文件,将消息传递个文件播放模块,然后文件播放模块读入指定的文件信息后,需依据不同类型文件的实现方法完成文件的播放功能。
本文处理文件信息的流程如图3.4所示。
图3.4单文件播放程序流程示意图
定时中断负责对已知图片进行分步显示,从而实现特技效果。
由于节目播放过程比较复杂,为了提高程序的健壮性,采用了状态机思想,共有6个状态,当程序处在不同的状态时,进行不同的操作,实现节目文件的播放。
cnumPlayState//特效播放时的状态
{State_Stop=0,//停止状态,初始化状态.
State_Start,//开始状态,分配资源,初始化变量
StateEnd,//结束状态,收回资源,
StateRun,//播放状态,表示以指定特效飞入的过程
State_Still//静止状态,表示图片显示特效完成后的静止状态,
State_Fade//针对图片文件存在的图片清场特效显示的状态
);
3.5串口通信[8]
在VC++编程坏境下,有两种实现串口通信的方法:
一种是用ActiveX控件实现,另一种是用WindowsAPI函数实现。
本文利用WindowsAPI函数实现串口通信。
Windows环境下的编程的最大特征之一就是设备无关性,它通过设备驱动程序将Windows应用程序与不同的外部设备隔离,封装了Windows的通信机制,这种方式称为通信API。
在Windows环境下,串口是系统资源的一部分。
应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。
在打开串口前,用户应先选择串口编号及波特率,只有在打开串口成功时,才可以传输数据,传输完成后,用户应当关闭串口,为了提高程序的健壮性,即使用户没有关闭串口,在对话框退出时,程序也会自动关闭串口。
3.5.1模块功能
本文串口通信模块的UI部分,包含基本设置、颜色设置、系统设置、亮度/对比度设置、开关电源、锁定内容等。
主要实现起点、屏体电源、亮度、Gamma校正、颜色交换、对比度、色温的控制,该模块的核心为串口通信部分,通过上位机的COM口与数据发送卡进行数据交换,来完成对发送卡的控制,PC机上要显示的内容通过显卡的DVI接口将数据流传到LED的发送卡;串口通信的帧格式为:
1位起始位,8位数据位,2位停止位,无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LED 播放 软件 设计 开发