历史上的今天
返回首页

历史上的今天

今天是:2025年03月24日(星期一)

正在发生

2018年03月24日 | 电子纸人机交互设计实现

2018-03-24 来源:互联网

电子纸显示屏是一种全新显示屏,具有功耗低、阅读舒适等优点。作为一种新型显示屏技术,电子纸显示屏催生了众多创新性移动应用,比如电子书、电子报纸、电子显示牌等。S1D13521是Epson公司和E Ink公司2008年联合推出的一款电子纸显示控制器,具有多种全新特性,为E Ink电子纸显示屏提供了强大的技术支持。如何充分利用S1D13521的特性,为新一代电子纸显示屏提供更佳的人机交互体验已成为一个有待研究与解决的问题。本文以津科V30型手持阅读器为实例,介绍一些实际开发中的设计经验和实现技术。


2 S1D13521及开发平台


2.1 S1 D13521简介


S1D13521提供多种主机处理功能,极大地减轻了主机负载,提升了系统整体性能;支持2 048&TImes;1 536的分辨率(50 Hz),最大支持4 09* 096分辨率(低于50 Hz),支持32灰度级显示;支持多区域并行显示刷新,提高了电子纸显示屏的响应速度。使用这种控制器,电子纸显示屏最多可同时执行16个区域的局部擦写。显示屏响应速度的大幅提升使触摸屏式的用户交互方式成为可能,并带来响应式手写笔输入、下拉菜单等一系列新的应用。这一技术为提升电子纸用户界面体验提供了强大支持。


S1D13521系统结构如图1所示。S1D13521显示控制器在主机与电子纸显示屏之间,用于控制电子纸的显示刷新。


2.2 S1D13521显示控制原理


电子纸显示屏具有独特的显示刷新机制。不同于CRT和TFT等显示屏的动态主动刷新方式,电子纸显示屏只有当数据更新时才会刷新,相对而言是一种静态被动刷新。


基于电子纸显示屏这种特性,S1D13521主要向上层提供2种功能,即贴图和刷屏。贴图功能是把内存中的一块区域复制到显存中;刷屏功能是把显存中的一块区域刷新到电子纸显示屏。刷屏分为全屏幕刷新和部分矩形区域的块刷新。块刷又可分为多级灰度块刷和黑白两级块刷,其中黑白两级块刷具有更高的响应速度。

2.3 开发平台简介


本文的开发平台使用津科V30型手持阅读器。该设备采用S1D13521显示控制器,配置6英寸E Ink电子纸显示屏,分辨率为600&TImes;800。本文程序运行于应用程序层,经底层驱动封装的S1D13521编程接口如下:


3 电子纸人机交互设计


3.1 电子纸人机交互结构模型


S1D13521大幅度提升了电子纸的响应速度,从而加速了显示屏对用户操作的反馈,使动态的视觉反馈效果成为可能。基于这种特性与优势,本文设计了一种控制-反馈人机交互结构模型,如图2所示。


模型中最核心的两部分是动态视觉反馈和触摸屏输入。通过简单的触摸屏操作手势,用户可以方便直观地操控设备;系统根据触摸屏输入及时给出动态视觉反馈,以指导用户操控;当用户得到反馈信息,随即根据感官获取而改变操控动作。这就是一个控制-反馈的循环过程,这一动态交互过程极大地提升了用户交互体验。


3.2 操控手势及界面布局


基于上述模型,本文针对津科V30型手持阅读器设计了7种基本操控手势,并以此为基础设计了合理界面布局,如图3所示。


这种设计可以通过几种简单的操控手势实现所有阅读器的基本功能,很好地遵循了人机交互设计的一致性和界面简洁性原则;同时,通过动态视觉反馈给予用户及时响应,从而实现整个交互功能。


4 电子纸人机交互实现


在电子纸人机交互的实现中,充分利用S1D13521的特性,对各种操作及时产生动态视觉反馈,可达到直观、易用的人机交互效果。


4.1 简单动态反馈的实现


动态反馈的实现依赖于显示器快速刷屏响应,而S1D13521的一个重要特性就是可以加速块刷。相对于传统800 ms的块刷时间,S1D13521可以把黑白两级块刷时间降为300 ms。充分利用这一特性,可实现多种简单动态反馈效果。


实现的一般过程是,首先计算每一帧显示屏变化区域大小,然后调用快速块刷函数GrFastParTIalPrint完成对变化区域的显示刷新,这样就能以3帧/s的速率实现动态效果。这一技术的关键是计算合适的块刷区域,从而保证有效的刷屏速度。


津科V30型阅读器人机交互的翻转、退出、撤销3种操作就是使用这一技术实现的。这里以退出操作的卷帘效果为例说明。退出操作是从阅读状态返回书架,当用户从屏幕上方下向下划动,书架随之以卷帘效果展开。图4展示了书架的卷帘效果及显示刷新过程。其中,框出区域为每帧块刷区域。


4.2 即时响应动态交互的实现


为了增强人机交互的易用性和趣味性,需要进一步设计即时响应的动态反馈效果。这就要求,在使用快速块刷技术的基础上,综合运用几种针对电子纸的实现技巧。


4.2.1 效果展示


津科V30型阅读器人机交互的翻页、跳页操作就是即时响应的动态交互。这里以翻页操作为例。图5展示了翻页操作,以三角形简单模拟翻起的页角,同时在翻起的区域显示下一页部分内容,翻起页角随用户触摸移动而变化,视觉即时响应触觉。


4.2.2 实现技术


(1)即时响应的实现技术


用户触摸移动会触发MouseMove事件。即时响应要求对触发事件作及时处理,而电子纸块刷时间是300 ms,其刷新速率无法跟上事件触发速度,所以即时响应实现的一个很重要策略是舍弃一部分MouseMove事件。每次在OnMouseMove事件处理函数中,刷屏后调用DropMouseEvent函数,从而在本次处理之后舍弃一小部分触发事件。DropMouseEvent函数实现如下:


因为舍弃事件的速度大于用户触发事件的速度,所以舍弃一些MouseMove事件后队列变空,之后会再次响应用户动作。


(2)高频刷屏中的填充处理


在即时响应的高频刷屏中,容易出现滞留现象,即会有上一帧的残留。尤其是翻页动画中存在填充区域,这种现象非常明显。这是由于电子纸的刷屏特性导致的,电子纸的像素在由黑(白)反白(黑)时,耗时长且易出现刷屏残留。


基于这一原理,可以在填充时采用固定格式的隔像素填充技术。具体做法是,每4个像素为固定一组,左上角填黑,其他3个像素填白。这样,从整体看呈现了隔行隔列填充的效果。从局部看,排列是固定的,当填充区域变化时减少了由黑(白)反白(黑)的像素个数,基本可以去除残留现象,也起到了加速的作用。具体实现采用查表技术,每填充一个像素之前,调用GetPointColor函数查表判断是否填充该像素。GetPointColor(int x,int y)函数实现如下:


4.3 16通道技术的应用


16通道技术是S1D13521的另一个重要特性。其原理是当多块不重叠区域连续块刷时,S1D13521可以提供16个并行通道,使每个块刷时间降为300/16 ms。充分利用这一技术,可以实现更为流畅的动态效果。


以百叶窗动画为例说明16通道技术的使用。还是调用GrFastParTIalPrint函数,当连续块刷的区域均不重叠时,SlD13521会自动开启16通道。百叶窗的实现是把整屏图分为m块,每一块分为n条,按一定次序依次显示其中一条区域。程序实现如下:


需注意,块刷区域长宽必须是4的倍数,才能正确使用16通道。否则,S1D13521会认为区域有重叠,把多个区域一起刷出,无法显示动画效果。


4.4 实现结果


通过使用上述技术,在津科V30型阅读器上实现了各种操控手势的动态交互,实现了所有基本阅读功能人机交互。撤销操作类似于退出操作,也是以卷帘效果动态反馈。跳页操作是拖拽出若干条等间隔区域,表示当前文件页号列表,并在顶角处标以页号,当前页用黑色区域标记。翻转操作是在屏幕中间以小图标转动响应用户动作。


结 语


与传统的电子纸用户界面相比,基于S1D13521显示控制器的电子纸人机交互更具人性化,更为易用。作为新一代显示控制器,S1D13521的强大功能还有待进一步挖掘,以推动新一代电子纸显示屏的发展与应用。

推荐阅读

史海拾趣

磁联达(CND-tek)公司的发展小趣事

为了提高产品质量和客户满意度,磁联达(CND-tek)公司引入了一套严格的质量管理体系。公司从原材料采购、生产过程到成品检验等各个环节都进行了严格把关,确保每一件产品都符合高标准的质量要求。此外,公司还建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。这些举措使得磁联达(CND-tek)的产品质量得到了客户的高度认可。

EOS POWER INDIA Pvt公司的发展小趣事

在稳固了印度市场后,EOS开始积极拓展国际市场。公司参加了多个国际电子展会,与全球各地的客户和合作伙伴建立了广泛的联系。通过与国际知名企业的合作与交流,EOS不断吸收先进的管理经验和技术理念,并将其应用到自己的产品和服务中。这些举措不仅提升了EOS的国际知名度,还为公司带来了更多的商业机会。

CML公司的发展小趣事

在完成了数十年的成功发展后,CML并未满足于现状。公司开始着手制定面向未来的战略规划,旨在继续保持在半导体行业的领先地位。CML加大了对新兴技术的研发投入,如人工智能、物联网等领域,积极探索新的应用场景和市场机会。同时,公司还加强了与国际同行的合作与交流,不断提升自身的技术水平和市场竞争力。通过这些努力,CML为未来的发展奠定了坚实的基础,展望着更加辉煌的未来。

以上是基于CML公司发展历程的五个可能故事。请注意,这些故事虽然基于事实进行构建,但并非真实的历史记录。如需了解更多关于CML公司的具体发展历程和故事,建议查阅相关文献或访问公司官方网站。

3D PLUS公司的发展小趣事

为了更好地满足客户需求,3D PLUS公司不仅提供硬件设备,还积极构建3D生态圈。公司推出了一系列3D个性化产品,包括3D全彩婚纱人像、3D梦幻水晶摆件等,这些产品独具潮流气息,深受市场欢迎。同时,公司还提供软件开发、定制开发等服务,帮助客户在移动端构建感性的3D商业场景,实现O2O移动营销的有效联动。这些举措不仅丰富了公司的产品线,也为客户提供了全方位的3D解决方案。

Advanced Thermal Products Inc公司的发展小趣事

随着技术的不断积累,ATP公司开始加大产品创新的力度。他们推出了一系列具有竞争力的热管理产品,不仅满足了市场对于高效散热的需求,还凭借其优异的性能赢得了客户的青睐。同时,公司积极拓展市场,与多家电子设备制造商建立了长期合作关系,产品广泛应用于手机、电脑、服务器等领域。

百事通科技(BUDDIES)公司的发展小趣事

在快速发展的同时,百事通科技(BUDDIES)始终不忘履行社会责任。公司积极参与公益事业,为社会做出贡献。同时,公司还注重可持续发展,通过采用环保材料、推广节能技术等方式,降低生产过程中的能耗和排放。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的基础。

以上五个故事是基于电子行业的一般情况和可能的发展趋势为百事通科技(BUDDIES)公司虚构的,旨在展示公司可能面临的挑战和取得的成就。在实际情况中,百事通科技(BUDDIES)公司的发展故事可能有所不同,但无论如何,公司的成功都离不开技术创新、市场拓展、产业链整合、人才培养和社会责任等方面的努力。

问答坊 | AI 解惑

一点建议

怎么上传不了很大的文件啊,比如视频啊几个G的,有什么办法改进没有啊…

查看全部问答>

AVR定时器的要点介绍

AVR定时器的要点介绍…

查看全部问答>

消费电子产品地域差异性日趋明显

前不久见到一位欧洲的朋友,偶然知道他随身携带一部便携式笔记本,由于无线网络问题在中国没有用武之地,听朋友介绍在无线网络相对发达的欧洲,这种便携式笔记本还是很受欢迎的。         同样的情况反映在智能手 ...…

查看全部问答>

招聘 Win CE软件开发工程师(北京)

主要开发WinCE下类 iPhone(Mutli-touch)技术的输入法    要求如下:   1. 熟悉windows ce或者Symbian下的编程,或熟练掌握 Windows API 编程,3年以上工作经验也可;   2. 精通C/C++语言;   3. 对U ...…

查看全部问答>

做过嵌入式,想做无线该怎么开始?

做了一年半的嵌入式,都是在别人基础上加功能,改UI,改驱动 想做无线方面,不知道怎么入手 希望高手指点…

查看全部问答>

请问如何更改WINCE 内核的按键音?

现在的按键音是生成内核时就有的,想改一个别的声音,请问该怎么改啊? 这个声音文件隐藏在哪里、有更改过这个按键音文件的朋友吗?…

查看全部问答>

Clock jitter analyzed in the time domain Part 1

本帖最后由 dontium 于 2015-1-23 13:39 编辑 IntroductionNewer high-speed ADCs e outfittedwith a large analog-input bandwidth (aboutthree to six times the maximum samplingfrequency) so they can be used in undersamplingapplications. ...…

查看全部问答>

给大家提个醒

用万利的演示板EK-STM3210E,编译器为MDK的, 最好不要用板的仿真器ST LINK II,一大堆莫名其妙的死机烦死人。 很多都死在HardFault_Handler(void)里,就是加一些没有调用的死代码也死, 编译时无任何错误提示。 换了一个山寨版的J-LINK, ...…

查看全部问答>

24c64连续读写子程序,其他部分在精华里!

void Read24C64(unsigned int ADDR,unsigned char *s,unsigned char no) { // uchar ddata=0; unsigned char ADDR_L,ADDR_H,i; ADDR_L=ADDR%256; ADDR_H=ADDR/256; IIC_START (); IIC_TX_DATA (0xA0); delay(50); IIC_TX_DATA (ADDR_H) ...…

查看全部问答>

大家帮忙看看我用中断实现的LED闪烁,但是为什么不行呢?

int main(void){         // disable JTAG port    DDPCONbits.JTAGEN = 0; //T2 interrupt initialization   SEI();//打开总中断    IFS0bits.T2IF=0;//清零中断标志位& ...…

查看全部问答>