新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 带你认识WinCE Display驱动开发

带你认识WinCE Display驱动开发

作者: 时间:2018-09-05 来源:网络 收藏

本文引用地址:https://www.eepw.com.cn/article/201809/388506.htm

y:光标移动位置的y坐标

4.7 virtual SCODE BltPrepare(GPEBltParms *blitParameters)

在做位块传输前会先执行该函数,用于确定执行BLT的函数

blitParameters:指向一个GPE的位块传输参数的结构体

4.8 virtual SCODE BltComplete(GPEBltParms *blitParameters)

该函数用于释放在BltPrepare中申请的资源

blitParameters:指向一个GPE的位块传输参数的结构体

4.9 virtual SCODE Line(GPELineParms *lineParameters, EGPEPhase phase)

画线函数

lineParameters:指向一个GPE的Line结构体,描述所画的线

phase:画线所处的阶段,具体描述如下

gpeSingle:画单根线

gpePrepare:准备画线

gpeContinue:画线过程中

gpeComplete:画线完成

在这里要提一点,有时我们会看到在该函数中调用另一个函数WrappedEmulatedLine(..),这个函数在WinCE的PUBLIC目录下的参考Display驱动中也可以找到,该函数是一个快速的画线函数,里面采用了Bresenham画线算法,通过采用运行速度快的加减和移位运算来完成画线。

4.10 virtual SCODE SetPalette(const PALETTEENTRY *pSource, USHORT firstEntry, USHORT numEntries)

设置调色板

pSource:指向一个调色板入口信息的结构体

firstEntry:第一个入口

numEntries:入口的个数

4.11 virtual int InVBlank(void)

显示设备是否处于垂直消隐期间

上述函数在GPE类中均被定义为纯虚函数,需要在继承类中实现,也就是在我们的驱动程序中实现。这些函数是必须实现的。根据显示的需求,还可以在显示驱动中添加其他的函数,比如对光标的支持,对旋转的支持等,如下:

4.12 void CursorOn(void)

使能光标显示。

4.13 void CursorOff(void)

禁止光标显示。

4.14 void SetRotateParms(void)

设置屏幕翻转参数。

4.15 void DynRotate(int angel)

支持动态翻转。

angel:翻转角度

4.16 ULONG *APIENTRY DrvGetMasks(DHPDEV dhpdev)

获得显示模式的RGB掩码

dhpdev:指向掩码信息,比如RGB565模式为(0xf800,0x07e0,0x001f)

NOTE:该函数必须在驱动中被实现。

4.17 PowerHandler(BOOL bOff)

电源控制。

bOff:TRUE表示关闭电源,FALSE表示打开电源

4.18 ULONG DrvEscape(DHPDEV dhpdev, SURFOBJ* pso, ULONG iEsc, ULONG cjIn, PVOID pvIn, ULONG cjOut, PVOID pvOut)

该函数提供给应用程序的一个直接访问显示驱动的接口,和流设备驱动中的IoCtls函数类似。应用程序通过调用ExtEscape函数传送操作码和数据给显示设备驱动,DrvEscape函数会接收到数据并进行处理,然后返回相应结果给EstEscape函数。用户也可以根据需要自己定义相应的操作码。

dhpdev:设备句柄

pso:指向一个绘图平面的结构

iEsc:操作码

cjIn:输入数据buffer的大小

pvIn:指向输入数据buffer

cjOut:输出数据buffer的大小

pvOut:指向输出数据buffer

大致就是这些内容,GPE类中的纯虚函数是肯定要实现的,其他的一些函数根据需要来实现。我在写这篇Blog的时候,有些地方有些犹豫,开始觉得自己语文水平不够,不太会表达,但是也许是因为自己对Display驱动中的一些知识还是理解的不够彻底吧。如果有什么问题,请大家谅解,并请指点。


上一页 1 2 3 下一页

关键词:

评论


相关推荐

技术专区

关闭