当前位置:首页 > 嵌入式 > 嵌入式硬件
[导读]该产品主要用于家居方面,用触控代替传统的键盘输入,使科技更加融入生活,并方便生活。

绪论

近年来,多点触控(Multi-Touch)成为了代替人机交互传统方式的新方式。它抛弃了键盘,鼠标,实现了多人同时交互,是人机交互的一场革命性创新。但可惜的是,该项技术还处在初级阶段,Multi-Touch的产品很多还只是面向高端或军工用户,价格十分高昂。这对广大消费者来说都是不能承受的。此外,目前基于Multi-Touch应用的软件业相当较少,且大多数停留在游戏娱乐的功能上,这样也限制了该技术的发展和应用。

为此,将Multi-Touch技术应用低廉化、市场化,就显得十分紧迫。考虑到Multi-Touch新鲜而高效的人机交互的方式,我们将其应用在日常的办公生活中,为广大的办公室人群提出了一套提高工作效率、增加工作乐趣的Multi-Touch应用解决方案。

多点触控智能家居平台

一,FTIR原理简述

作为Multi-Touch最初的被提出的实现方法,FTIR(Frustrated Total Internal Reflection,受抑全内反射)一直是最热门和被研究得最透彻的实现方法。其原理是在较厚的透明有机玻璃侧面放置红外LED,使红外光在玻璃内部产生全反射,当有手指触碰到有机玻璃表面时,全反射的平衡会被打破,于是会有部分的光散射到下面来,从而被摄像头捕捉到。由于有机玻璃是全透明的,在有机玻璃上部或下部还要附上一层背投影屏幕。综合来看,虽说效果不错,但此方案因为要合理地调整侧边入射的灯,且对材料的要求也很高,所以实现过于复杂。

图一

二、DI原理简述

DI的原理最初由微软提出,其实现原理见图2。图中,用户接触的平面不一定用有机玻璃,而整个技术的关键在于屏幕下方的红外散射光源,此光源将红外光均匀地散射在多点触摸屏的一面,当手指触碰到表面后,由于手指挡住了光向上散射的路线,此时在图像中会有一个阴影出现。经过进一步的图像处理,就可以提取有关手指的位置信息。

图二

具体实现上,DI可以变得简单一些。图1所示的是Back DI(背投光DI)的原理,可以看到红外光从下方入射。这种Back DI的好处是光源在触摸屏下面,可以自己控制,并且可以合理控制红外光的亮度;它不仅仅实现阴影捕捉,更可以实现物体识别。但是,这种方案需要合理摆放红外LED的位置,并且保证所有的红外LED的亮度几乎一致,还要达到最理想的均匀光照的效果,所以实现的难度很大。

实际操作中,我们尝试了一种Front DI(外光DI)的方案。与Back DI相反,Front DI负责采集的红外光来自触摸屏外。同样,由于手指的遮光作用,也会捕捉到阴影。虽说没有Back DI那样那样高清的分辨能力,但对于桌面应用,已经足够。

分析和实践了FTIR实现方案后,考虑到产品的成本和复杂度,我们尝试了DI的方案,效果较理想,而且DI的价格便宜,系统简单,更易于组装和实现。于是最终作品选用了DI的方案。

三、系统组成结构

整个系统主要有四个部分组成:PC,摄像头模块,投影仪及用户的桌面。总的说来,该系统硬件组成比较简单,摄像头原型使用罗技的一款高清摄像头产品,经过去除可见光滤光片并加装红外滤光片后,供系统采集手指位置信息,而投影仪作为显示部分,选用了爱普生的EB-X7。外框上,我们自行设计了平台的框架的组成结构和各部件的安装与工作方式。

四、软件部分

4.1 软件概述

在系统设计中,我们选择采用C#进行编写程序,将手指触摸事件用UP,DOWN,MOVE分别表示手指接触触摸屏,在触摸屏移动,离开触摸屏三个事件,并利用CCV来编写整个触摸屏的手指识别程序,并封装成动态链接库,方便后续程序的调用。

CCV(Community Core Vision)是一款解决计算机视觉和机器感应的开源/跨平台的软件。可识别出因为碰到手指而反射回来的红外光,在经过数据处理是图像更为清晰,再将事件传递给已编写好的DLL动态链接库文件,从而使软件识别出具体的手指动作。

用户可以在显示缓冲区上通过绘图绘制图形。图形系统使用了GDI+,GDI+提供了较为强大的绘图功能,这比较适合本系统提供的应用。可以通过一个函数提供获得GDI+绘图对象的指针。显示缓冲区在用户绘制完成后要更新到父窗口以最终显示到屏幕上。

每个消息处理队列都对应一个独立的消息处理线程,负责处理各种事件,特别是用户操作事件。事件以消息的方式发送到消息处理队列中,消息处理线程从队列中取出消息,处理后返回。消息发送有两种模式,一种是发送后返回,另一种是发送后等待消息处理完后再返回。消息处理线程直到窗口关闭才被销毁。消息队列是窗口系统具有了多线程的特性,可以使多个窗口在英特尔双核处理器上同时工作,大大提高了窗口的性能,特别是多个用户同时执行复杂操作的时候,可以大大提高并行能力。

消息队列的操作是互斥的,每次仅有一个线程能够对其中的元素进行添加删除操作。所以就需要一个锁的机制来保护。

对于用户操作,父窗口将位于子窗口内的用户操作通过消息的的方式发送给子窗口,这样一级一级地传递下去。特别需要介绍的是手指消息,手指消息分为手指放下、手指移动和手指离开,窗口通过消息参数中的手指ID实现不同手指的识别。

多个手指的操作基于一个窗口维护的活动手指表,标准记录了所有绑定在这个窗口上的手指。该表通过平衡二叉树实现,以提高速度。

本系统设计的窗口可以以任意角度旋转,这样可以支持从各个角度观看的用过户,以适合小型会议的需要。窗口内置支持一种环形的菜单,这种菜单通过一个消息通知窗口用户的选择。窗口另外支持键盘操作,键盘通过字符消息通知窗口。

4.2 应用功能

4.2.1 白板

白板作为会议中常用的功能,特别是在与设计有关的会议中,如果设计人员能够面对面地讨论,并在白板上表达自己的看法是非常有效的,传统的纸质白板能够提供多人讨论的环境,但不能够方便地修改设计,而一般的网络白板能够提供交流的平台,却不能够让很多人聚在一起讨论并同时操作。Multi-Touch技术完美地解决了它们存在的问题,给人们一个可以充分交流的平台。

4.2.1 虚拟键盘

在应用当中,用户不仅仅需要画图,在很多情况下需要打字,这是只有白板功能就不能满足客户打出标准汉字的要求,所以添加了虚拟的触摸键盘,可以在触摸屏上利用键盘输入文字,触摸键盘还带有搜狗输入法,可以输入中文汉字。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

在智能家居日益普及的今天,无线开关作为实现家居自动化的重要工具,受到了越来越多消费者的青睐。然而,对于许多家庭来说,如何将现有的普通灯具接入无线开关,实现远程控制,仍然是一个值得探讨的问题。本文将详细阐述普通灯具接入无线...

关键字: 无线开关 智能家居

今天,小编将在这篇文章中为大家带来语音识别的有关报道,通过阅读这篇文章,大家可以对语音识别具备清晰的认识,主要内容如下。

关键字: 语音识别 智能家居

一直以来,语音识别都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来语音识别的相关介绍,详细内容请看下文。

关键字: 语音识别 智能家居 智能客服 人工智能

本文中,小编将对语音识别技术予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 语音识别 智能家居 物联网

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言
关闭
关闭