CN105807967A - 一种电子白板的书写方法及装置 - Google Patents
一种电子白板的书写方法及装置 Download PDFInfo
- Publication number
- CN105807967A CN105807967A CN201410843733.1A CN201410843733A CN105807967A CN 105807967 A CN105807967 A CN 105807967A CN 201410843733 A CN201410843733 A CN 201410843733A CN 105807967 A CN105807967 A CN 105807967A
- Authority
- CN
- China
- Prior art keywords
- touch screen
- data
- coordinate
- device file
- track
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- User Interface Of Digital Computer (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
本发明公开了一种电子白板的书写方法及装置,包括:获取与电子白板的触摸屏相对应的触摸屏设备文件;读取触摸屏设备文件,从触摸屏设备文件中获取触摸事件数据;根据触摸事件数据计算在触摸屏上显示的轨迹数据;调用帧缓冲区接口,基于轨迹数据在触摸屏上绘制移动轨迹。本发明的电子白板的书写方法及装置,能够直接从触摸屏设备文件中得到点击的事件,直接调用底层的帧缓存接口进行写屏操作,并将获取触摸事件和写屏操作分别放在2个线程完成的,提高了运行效率并提升书写速度,解决了书写轨迹偏差的问题,并明显提升了显示数据的速度,提高了电子产品的用户感受度,提升了产品质量和竞争力。
Description
技术领域
本发明涉及电子白板技术领域,特别是指一种电子白板的书写方法及装置。
背景技术
电子白板,例如交互式电子白板,具备书写、批注、绘画、多媒体娱乐、网络会议等功能,融入了人机交互、平板显示、多媒体信息处理和网络传输等多项技术,是信息化时代中办公、教学、图文互动演示的优选产品。目前,电子白板一般都具有一个大屏幕的交互式平板(例如为70英寸),电子白板的操作系统用于进行捕捉触点事件、绘制线条等操作。目前的电子白板在使用中,发现有书写体验差的问题,主要表现在书写速度慢,书写轨迹有较大偏差等,极大影响了用户的使用感受度。
发明内容
有鉴于此,本发明的目的在于提出一种电子白板的书写方法及装置,能够直接从触摸屏设备文件中得到点击的事件,直接调用底层的帧缓存接口进行写屏操作。
基于上述目的本发明提供一种电子白板的书写方法,包括:获取与电子白板的触摸屏相对应的触摸屏设备文件;读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据;根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
根据本发明的一个实施例,进一步的,启动触摸数据获取线程,所述触摸数据读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据,并根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;启动轨迹绘制线程,所述轨迹绘制线程调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
根据本发明的一个实施例,进一步的,所述获取与电子白板的触摸屏相对应的触摸屏设备文件包括:打开系统中存储设备文件的目录,遍历此目录下所有的设备文件;依次打开设备文件,得到此设备文件的句柄并获取此设备文件的设备名称;判断此设备文件的设备名称是否与所述触摸屏设备的设备名称一致,如果是,则此设备文件为所述触摸屏设备文件,保存所述触摸屏设备文件的句柄。
根据本发明的一个实施例,进一步的,所述读取所述触摸屏设备文件、从所述触摸屏设备文件中获取触摸事件数据包括:周期性地读取所述触摸屏设备文件,获取所述触摸屏设备文件中的事件数据;其中,在所述触摸屏上操作的事件数据被存储在所述触摸屏设备文件中;解析所述事件数据,并将所述事件数据封装为所述触摸屏上的移动轨迹的坐标数据。
根据本发明的一个实施例,进一步的,所述解析所述事件数据、并将所述事件数据封装为在所述触摸屏上移动的轨迹的坐标数据包括:解析所述事件数据获取事件参数,所述事件参数包括:事件ID、操作类型、X坐标采样值、Y坐标采样值;将所述事件参数转换为移动轨迹的坐标数据,所述坐标数据包括:轨迹ID、触摸屏x坐标、触摸屏y坐标和当前操作状态;所述当前操作状态包括:上、下、移动;其中,当触摸屏的分辨率为在X轴方向上为W像素、在Y轴方向上为H像素时:
XL为触摸屏X标,XT为X坐标采样值,Xtmin、Xtmax、分别是触摸屏的X、Y轴方向上的坐标最小值和坐标最大值;
YL为触摸屏Y坐标,YT是Y坐标采样值,Ytmin、Ytmax分别是触摸屏的Y轴方向上的坐标最小值和坐标最大值。
根据本发明的一个实施例,进一步的,所述调用帧缓冲区接口、基于所述轨迹数据在所述触摸屏上绘制移动轨迹包括:基于触摸屏的像素设置绘图区域,在内存中创建与所述绘图区域相映射图文件对象;基于所述坐标数据在所述图文件对象中加入在所述触摸屏上绘制的移动轨迹数据;打开一个可用的帧缓冲设备,获取取得当前的所述触摸屏的参数,所述触摸屏的参数包括:屏幕分辨率、每个像素点的比特数;将所述帧缓冲设备的内存映射到内核进程空间;将所述图文件对象的数据写入所述帧缓冲设备的内存,通过所述帧缓冲设备在所述触摸屏上相应的位置绘制并显示移动轨迹。
基于上述目的本发明提供一种电子白板的书写装置,包括:设备文件获取单元,用于获取与电子白板的触摸屏相对应的触摸屏设备文件;轨迹数据计算单元,用于读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据;根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;轨迹绘制单元,用于调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
根据本发明的一个实施例,进一步的,所述轨迹数据计算单元,用于启动触摸数据获取线程;其中,所述触摸数据读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据,并根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;所述轨迹绘制单元,用于启动轨迹绘制线程;其中,所述轨迹绘制线程调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
根据本发明的一个实施例,进一步的,所述设备文件获取单元,还用于打开系统中存储设备文件的目录,遍历此目录下所有的设备文件;依次打开设备文件,得到此设备文件的句柄并获取此设备文件的设备名称;判断此设备文件的设备名称是否与所述触摸屏设备的设备名称一致,如果是,则此设备文件为所述触摸屏设备文件,保存所述触摸屏设备文件的句柄。
根据本发明的一个实施例,进一步的,所述轨迹数据计算单元,包括:事件获取子模块,用于周期性地读取所述触摸屏设备文件,获取所述触摸屏设备文件中的事件数据;其中,在所述触摸屏上操作的事件数据被存储在所述触摸屏设备文件中;坐标计算子模块,用于解析所述事件数据,并将所述事件数据封装为所述触摸屏上的移动轨迹的坐标数据。
根据本发明的一个实施例,进一步的,所述坐标计算单元,还用于解析所述事件数据获取事件参数,所述事件参数包括:事件ID、操作类型、X坐标采样值、Y坐标采样值;将所述事件参数转换为移动轨迹的坐标数据,所述坐标数据包括:轨迹ID、触摸屏x坐标、触摸屏y坐标和当前操作状态;所述当前操作状态包括:上、下、移动;其中,当触摸屏的分辨率为在X轴方向上为W像素、在Y轴方向上为H像素时:
XL为触摸屏X标,XT为X坐标采样值,Xtmin、Xtmax、分别是触摸屏的X、Y轴方向上的坐标最小值和坐标最大值;
YL为触摸屏Y坐标,YT是Y坐标采样值,Ytmin、Ytmax分别是触摸屏的Y轴方向上的坐标最小值和坐标最大值。
根据本发明的一个实施例,进一步的,所述轨迹绘制单元,包括:图文件创建子模块,用于基于触摸屏的像素设置绘图区域,在内存中创建与所述绘图区域相映射图文件对象;运行轨迹生成子模块,用于基于所述坐标数据在所述图文件对象中加入在所述触摸屏上绘制的移动轨迹数据;帧缓冲设备调用子模块,用于打开一个可用的帧缓冲设备,获取取得当前的所述触摸屏的参数,所述触摸屏的参数包括:屏幕分辨率、每个像素点的比特数;将所述帧缓冲设备的内存映射到内核进程空间;将所述图文件对象的数据写入所述帧缓冲设备的内存,通过所述帧缓冲设备在所述触摸屏上相应的位置绘制并显示移动轨迹。
从上面所述可以看出,本发明的电子白板的书写方法及装置,能够直接从触摸屏设备文件中得到点击的事件,直接调用底层的帧缓存接口进行写屏操作,并将获取触摸事件和写屏操作分别放在2个线程完成的,提高了运行效率并提升书写速度,解决了书写轨迹偏差的问题,并明显提升了显示数据的速度。
附图说明
图1为本发明的电子白板的书写方法的一个实施例的流程图;
图2为Android系统架构图;
图3本发明的电子白板的书写方法的并行处理示意图;
图4为AndroidGUI系统架构图;
图5为AndroidGUI的总体结构图;
图6为本发明的电子白板的书写装置的一个实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
图1为本发明的电子白板的书写方法的一个实施例的流程图,如图1所示:
步骤101,获取与电子白板的触摸屏相对应的触摸屏设备文件。
步骤102,读取触摸屏设备文件,从触摸屏设备文件中获取触摸事件数据。
步骤103,根据触摸事件数据计算在触摸屏上显示的轨迹数据。
步骤104,调用帧缓冲区接口,基于轨迹数据在触摸屏上绘制移动轨迹。
上述实施利中的电子白板的书写方法,能够较好地解决了书写速度的问题,而且能够解决了书写轨迹偏差的问题。
目前,电子白板可以基于多种操作系统,例如linux、android等。以android框架实现为例,android系统架构如图2所示。采用这种Android系统架构,经过测试发现,从触摸屏touchpanel驱动发出某个点的采样值到上层应用程序取得点坐标,大约需要15ms到18ms。
在目前的电子白板的android系统架构中,取触摸事件和屏幕绘图刷新都是在一个主线程完成的,这种架构必须串行完成所有工作,处理效率低下,造成书写速度缓慢。
在一个实施例中,将串行处理改为并行处理,提升效率,如下图3所示,启动触摸数据获取线程,触摸数据读取触摸屏设备文件,从触摸屏设备文件中获取触摸事件数据,并根据触摸事件数据计算在触摸屏上显示的轨迹数据;启动轨迹绘制线程,轨迹绘制线程调用帧缓冲区接口,基于轨迹数据在触摸屏上绘制移动轨迹。将获取触摸事件的功能和显示的功能分别由2个线程分别完成,能够提高电子白板的书写速度。
在现有的android系统架构中,触摸事件处理层次如下表1所示,从一个触摸事件产生到应用程序收到此点的事件,中间需要经过很多步骤,这个过程就是导致延时15ms到18ms的原因。
表1-触摸事件处理层次表
在一个实施例中,直接从触摸屏驱动touchpaneldriver得到点击的事件。在android系统中,所有的设备都是被抽象为文件,可以通过jni的方式用C语言写一个直接读取触摸屏TouchPanel输入设备事件的程序,来从底层直接取触摸事件并按照相应的协议转换后将事件直接分发给上层应用使用。
在android系统中,普通应用程序是无法直接读取触摸屏TouchPanel抽象设备文件,需要首先将应用程序加system权限并在Android源码中编译,然后在程序中获得root权限,然后再遍历/dev/input目录,得到所有的设备文件,并使用chmod命令修改权限为666(只读),再读取此设备的名称,找到对应的TouchPanel设备再读取事件。具体为:
1.获得root权限。
2.遍历/dev/input目录,得到每个设备号。
3.使用chmod将此设备权限修改为666。
4.使用open方式以只读方式打开此设备。
5.使用ioctl得到此设备的名称,判断是否是TouchPanel设备。
6.找到对应的TouchPanel设备,返回设备文件号。
7.循环读取设备事件,得到事件结构体。
8.按照多点触控协议解析得到的事件。
9.在应用程序的AndroidManifest.xml中加入android:sharedUserId="android.uid.system"属性,以提升应用程序权限。
10.将应用程序在Android源码中编译得到相应的APK文件。
从触摸屏TouchPanel设备文件中读取的数据是触摸屏采用数据,不是LCD坐标值,需要采用类似于屏幕校正算法的方式先转换为LCD坐标才能提供给应用上层使用。
在一个实施例中,打开系统中存储设备文件的目录,此目录可以根据电子白板支持不同的操作系统而不同,例如,android系统为/dev/input目录。遍历此目录下所有的设备文件,依次打开设备文件,得到此设备文件的句柄并获取此设备文件的设备名称。
判断此设备文件的设备名称是否与触摸屏设备的设备名称一致,如果是,则此设备文件为触摸屏设备文件,保存触摸屏设备文件的句柄。根据电子白板支持不同的操作系统,可以使用不同的系统提供的函数执行上述功能,也可以开发专门的函数。
例如,在android系统中,循环读取设备文件,得到事件结构体具体为:
得到触摸屏TouchPanel设备文件句柄。具体步骤如下:
a.使用opendir函数打开/dev/input目录,得到目录句柄。
b.使用readdir函数遍历读取此目录下所有设备文件。
c.使用open函数打开设备文件,得到文件句柄。
d.使用ioctl函数得到此设备文件的设备名称。
e.使用strcmp函数比较此设备文件的设备名称和电子白板使用的触摸屏TouchPanel设备名称是否一致,如果一致,保存此设备文件句柄,并跳出遍历循环,否则继续遍历。
循环读取设备文件、得到事件结构体实现的部分代码如下:
使用read函数循环读取刚才保存的设备文件,第二个参数event返回的就是时间结构体。
在一个设备中,周期性地、循环读取触摸屏设备文件,获取触摸屏设备文件中的事件数据。在触摸屏上操作的事件数据被存储在触摸屏设备文件中。解析事件数据,并将事件数据封装为触摸屏上的移动轨迹的坐标数据。
例如,在android系统中,按照多点触控协议解析得到的事件,并封装数据的例子如下:
用户在触摸屏幕上点击一下后硬件产生一个中断,OnClickListener收到这个事件,往/dev/input/event*写入一个相应的事件数据,android循环读取/dev/input/event*的事件,再分发给WindowManagerServer,最后再发到相应的ViewGroup和View。可以通过直接读取/dev/input/event*事件数据的方式,来达到快速处理的目的。
读取/dev/input/event*中的事件数据,如下所示:
/dev/input/event4:000300390000000d
/dev/input/event4:0003003500006e25
/dev/input/event4:0003003600002ecb
/dev/input/event4:0000000200000000
/dev/input/event4:0003003900000002
/dev/input/event4:0003003500006ea4
/dev/input/event4:00030036000028c2
/dev/input/event4:0000000200000000
/dev/input/event4:0000000000000000
/dev/input/event4:000300390000000d
第一列数据/dev/input/event4:表示TouchPanel设备文件是event4。第二列数据:0003表示这是一个TouchPanel点击事件,0000表示这是一个同步信号,意思就是事件结束,可以解析并且分发出去了。第三列数据:0039表示第四列数据是哪个点触摸事件发生了,0035表示第四列数据是X坐标采样值,0036表示第四列数据是Y坐标采样值。0000000200000000、0000000000000000表示此点抬起了,如果再跟着有0000000200000000、0000000000000000表示所有点都抬起了。
根据对event读取数据的分析,封装数据格式,例如定义如下类:
publicclassMyEvent
{
privateint[]id=null;//保存点的需要,对应上述第四列数据
privatefloat[]x=null;//保存转换过的LCDx坐标
privatefloat[]y=null;//保存转换过的LCDy坐标
privateint[]status=null;//保存当前的状态:down、move、up
}
从event*中读取相应的数据按照上述的分析方法将MyEvent需要的几个变量值填入,然后上层程序取得相应的数据绘图即可。
在一个实施例中,解析事件数据获取事件参数,事件参数包括:事件ID、操作类型、X坐标采样值、Y坐标采样值。将事件参数转换为移动轨迹的坐标数据,坐标数据包括:轨迹ID、触摸屏x坐标、触摸屏y坐标和当前操作状态;当前操作状态包括:上、下、移动。
当触摸屏的分辨率为在X轴方向上为W像素、在Y轴方向上为H像素时:
XL为触摸屏X标,XT为X坐标采样值,Xtmin、Xtmax、分别是触摸屏的X、Y轴方向上的坐标最小值和坐标最大值;
YL为触摸屏Y坐标,YT是Y坐标采样值,Ytmin、Ytmax分别是触摸屏的Y轴方向上的坐标最小值和坐标最大值。
从触摸屏TouchPanel设备文件中读取出的值为触摸屏的采样值,不是触摸屏的LCD的坐标值,所以必须作一个类似校正的算法转换为需要的LCD坐标值才能使用。
tp坐标到lcd坐标是完全按照线性关系来转换的。例如,tp坐标是(Xt,Yt)分辨率是(WtXHt),lcd坐标是(X,Y),分辨率是(WXH),则X=(Xt*W)/Wt,Y=(Yt*H)/Ht。但是一般触摸屏不是完全线性的,自然转换关系也就不一样了,通过tslib可以解决这个问题。需要其中根据采样点生成转换矩阵的部分编写转换算法即可。具体算法如下:
其中,XL、YL是LCD坐标,XT、YT是触摸屏的坐标。Xtmin、Xtmax、Ytmin、Ytmax分别是触摸屏的X、Y轴方向上的最小值和最大值。
AndroidGUI系统架构如图4所示,Android的GUI系统由C语言框架和JAVA语言框架组成。对下层,Android的GUI系统通过调用显示输出设备和输入设备的驱动,从而将Android的软件系统和底层的硬件联系起来。对上层,Android的GUI系统提供了Java层次的绘图结构,Android的Java框架层调用这些绘图接口来构建各种UI元素,这些绘图接口也可以供Java应用程序层来调用。
SurfaceManager是用户空间中framework下libraries中负责显示相关的一个模块,当系统同时执行多个应用程序时,SurfaceManager会负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成。SurfaceManager图形系统采用Client/Server架构:
Client端:应用程序相关部分。代码分为两部分,一部分是由Java提供的供应用使用的api,另一部分则是由c++写成的底层实现。
Server端:即SurfaceFlinger,负责合成并送入buffer显示。其主要由c++代码编写而成。
Client和Server之间通过Binder的IPC方式进行通信,总体结构图如图5所示:Surface的client部分其实是提供给各应用程序进行画图操作的一个桥梁,该桥梁通过binder通向server端的Surfaceflinger。
Surfaceflinger负责合成各个surface,然后把buffer传送到FrameBuffer端进行底层显示。其中每个surface对应2个buffer,一个frontbuffer,一个backbuffer,更新时,数据更新在backbuffer上,需要显示时,则将backbuffer和frontbuffer互换。
此架构的设计主要是要考虑多任务、多窗口、多图层的显示切换与合并,而这些因素在电子白板中可以不用考虑,因此,在图形绘制完毕后去调用显示方法的时候,可以不使用Android提供的上层java方法,而采用JNI的方式直接调用底层的FrameBuffer接口进行写屏,这样能有效提高显示的速度。
在android架构中,所有的设备都是被抽象为文件的,可以通过jni的方式用C语言写一个直接操作framebuffer设备的程序,来将上层将要显示的内容直接发送给FrameBuffer显示。
在android系统中,普通应用程序无法直接读取FrameBuffer抽象设备文件,需要将应用程序加android.permission.READ_FRAME_BUFFER和system权限并在Android源码中编译,获得root权限,将/dev/graphics/fb0使用chmod命令修改权限为777,就可以开始使用framebuffer绘图了。具体步骤如下:
1.获得root权限。
2.使用chmod将设备/dev/graphics/fb0权限修改为777。
3.使用O_RDWR方式以读写方式打开此设备。
4.使用ioctl读取fb_var_screeninfo和fb_fix_screeninfo两个结构体信息。此步骤主要是取得当前显示屏幕的参数,如屏幕分辨率,每个像素点的比特数。根据屏幕参数可计算屏幕缓冲区的大小。
5.使用mmap方式映射设备内存到进程空间。
6.将java层传递下来的bitmap数据按照屏幕像素格式写入映射的内存。
7.取消内存映射,关闭framebuffer文件句柄。
8.在应用程序的AndroidManifest.xml中加入android:sharedUserId="android.uid.system"属性和android.permission.READ_FRAME_BUFFER权限,以提升应用程序权限。
9.将应用程序在Android源码中编译得到相应的APK文件。
由于从java上层传递到底层的bitmap数据格式应该和framebuffer设备文件中读取到的屏幕数据格式一致,这样可以使用memecpy直接复制,速度较快,不用再进行数据格式转换。
在一个实施例中,基于触摸屏的像素设置绘图区域,在内存中创建与绘图区域相映射图文件对象。基于坐标数据在图文件对象中加入在触摸屏上绘制的移动轨迹数据。打开一个可用的帧缓冲设备,获取取得当前的触摸屏的参数,触摸屏的参数包括:屏幕分辨率、每个像素点的比特数。
将帧缓冲设备的内存映射到内核进程空间。将图文件对象的数据写入帧缓冲设备的内存,通过帧缓冲设备在触摸屏上相应的位置绘制并显示移动轨迹。
例如,在电子白板中,Android自带的状态栏有38像素,其余部分就是可以绘图的区域。假如,在可绘图区域绘制了一条线,触摸屏幕像素是1920x1080,可绘图区域是1920x1042。
在可绘图区域布局的是一个surfaceview,在启动的时候就创建了一个相应大小的位图对象bitmap:
Bitmapbitmap=Bitmap.createBitmap(1920,1042,Bitmap.Config.RGB_565);
之后的所有绘图都是在此bitmap中完成,可以在bitmap中加入多个字或绘图。
当绘图完毕需要写入framebuffer显示时,需要如下步骤:
1、打开一个可用的FrameBuffer设备。实例代码如下:
2、通过ioctl函数取得fixedscreeninformation。实例代码如下:
3、通过ioctl函数取得variablescreeninformation。实例代码如下:
4、通过mmap函数映射设备内存到进程空间,需要区分内核空间和用户空间,用户空间是无法对物理内存直接读写。实例代码如下:
5、将bitmap数据写入对应的framebuffer位置。具体步骤如下:
a.先将bitmap数据转为byte[]数组。实例代码如下:
b.通过jni将byte[]从java层传给c层,转换为char[]数组。
c.因为Android的状态栏占据了38像素的位置,需要找到相应的起始点位置。采用rgb565格式,一个像素占用2个字节,那么状态栏总共占用的字节数为:
longoffset=1920*38*2;
采用memcpy的方式将数据写入framebuffer:
memcpy((void*)(fbp+offset),*src,screensize-offset);
其中:fbp为framebuffer地址,src为源数据地址。
6、结束,取消映射,并close掉句柄。实例代码如下:
munmap(fbp,screensize);
close(fd);
绘图数据就能在相应的位置正确显示了。
通过上述实施例中的绘图方法,能够明显提升显示数据的速度。
如图6所示,本发明提供一种电子白板的书写装置3。设备文件获取单元31获取与电子白板的触摸屏相对应的触摸屏设备文件。轨迹数据计算单元32读取触摸屏设备文件,从触摸屏设备文件中获取触摸事件数据;根据触摸事件数据计算在触摸屏上显示的轨迹数据。轨迹绘制单元33调用帧缓冲区接口,基于轨迹数据在触摸屏上绘制移动轨迹。
轨迹数据计算单元32启动触摸数据获取线程;触摸数据读取触摸屏设备文件,从触摸屏设备文件中获取触摸事件数据,并根据触摸事件数据计算在触摸屏上显示的轨迹数据。轨迹绘制单元33启动轨迹绘制线程;轨迹绘制线程调用帧缓冲区接口,基于轨迹数据在触摸屏上绘制移动轨迹。
在一个实施例中,设备文件获取单元31打开系统中存储设备文件的目录,遍历此目录下所有的设备文件;依次打开设备文件,得到此设备文件的句柄并获取此设备文件的设备名称;判断此设备文件的设备名称是否与触摸屏设备的设备名称一致,如果是,则此设备文件为触摸屏设备文件,保存触摸屏设备文件的句柄。
在一个实施例中,事件获取子模块321周期性地读取触摸屏设备文件,获取触摸屏设备文件中的事件数据;在触摸屏上操作的事件数据被存储在触摸屏设备文件中。坐标计算子模块322解析事件数据,并将事件数据封装为触摸屏上的移动轨迹的坐标数据。
坐标计算单元322解析事件数据获取事件参数,事件参数包括:事件ID、操作类型、X坐标采样值、Y坐标采样值;将事件参数转换为移动轨迹的坐标数据,坐标数据包括:轨迹ID、触摸屏x坐标、触摸屏y坐标和当前操作状态;当前操作状态包括:上、下、移动;其中,当触摸屏的分辨率为在X轴方向上为W像素、在Y轴方向上为H像素时:
XL为触摸屏X标,XT为X坐标采样值,Xtmin、Xtmax、分别是触摸屏的X、Y轴方向上的坐标最小值和坐标最大值;
YL为触摸屏Y坐标,YT是Y坐标采样值,Ytmin、Ytmax分别是触摸屏的Y轴方向上的坐标最小值和坐标最大值。
在一个实施例中,图文件创建子模块331基于触摸屏的像素设置绘图区域,在内存中创建与绘图区域相映射图文件对象。运行轨迹生成子模块332基于坐标数据在图文件对象中加入在触摸屏上绘制的移动轨迹数据;帧缓冲设备调用子模块333打开一个可用的帧缓冲设备,获取取得当前的触摸屏的参数,触摸屏的参数包括:屏幕分辨率、每个像素点的比特数;将帧缓冲设备的内存映射到内核进程空间;将图文件对象的数据写入帧缓冲设备的内存,通过帧缓冲设备在触摸屏上相应的位置绘制并显示移动轨迹。
上述实施例提供的电子白板的书写方法及装置,能够直接从触摸屏设备文件中得到点击的事件,直接调用底层的帧缓存接口进行写屏操作,并将获取触摸事件和写屏操作分别放在2个线程完成的,提高了运行效率并提升书写速度,解决了书写轨迹偏差的问题,并明显提升了显示数据的速度,提高了电子产品的用户感受度,提升了产品质量和竞争力。
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种电子白板的书写方法,其特征在于,包括:
获取与电子白板的触摸屏相对应的触摸屏设备文件;
读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据;
根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;
调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
2.如权利要求1所述的方法,其特征在于:
启动触摸数据获取线程,所述触摸数据读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据,并根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;
启动轨迹绘制线程,所述轨迹绘制线程调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
3.如权利要求1或2所述的方法,其特征在于,所述获取与电子白板的触摸屏相对应的触摸屏设备文件包括:
打开系统中存储设备文件的目录,遍历此目录下所有的设备文件;
依次打开设备文件,得到此设备文件的句柄并获取此设备文件的设备名称;
判断此设备文件的设备名称是否与所述触摸屏设备的设备名称一致,如果是,则此设备文件为所述触摸屏设备文件,保存所述触摸屏设备文件的句柄。
4.如权利要求3所述的方法,其特征在于,所述读取所述触摸屏设备文件、从所述触摸屏设备文件中获取触摸事件数据包括:
周期性地读取所述触摸屏设备文件,获取所述触摸屏设备文件中的事件数据;其中,在所述触摸屏上操作的事件数据被存储在所述触摸屏设备文件中;
解析所述事件数据,并将所述事件数据封装为所述触摸屏上的移动轨迹的坐标数据。
5.如权利要求4所述的方法,其特征在于,所述解析所述事件数据、并将所述事件数据封装为在所述触摸屏上移动的轨迹的坐标数据包括:
解析所述事件数据获取事件参数,所述事件参数包括:事件ID、操作类型、X坐标采样值、Y坐标采样值;
将所述事件参数转换为移动轨迹的坐标数据,所述坐标数据包括:轨迹ID、触摸屏x坐标、触摸屏y坐标和当前操作状态;所述当前操作状态包括:上、下、移动;
其中,当触摸屏的分辨率为在X轴方向上为W像素、在Y轴方向上为H像素时:
XL为触摸屏X标,XT为X坐标采样值,Xtmin、Xtmax、分别是触摸屏的X、Y轴方向上的坐标最小值和坐标最大值;
YL为触摸屏Y坐标,YT是Y坐标采样值,Ytmin、Ytmax分别是触摸屏的Y轴方向上的坐标最小值和坐标最大值。
6.如权利要求5述的方法,其特征在于,所述调用帧缓冲区接口、基于所述轨迹数据在所述触摸屏上绘制移动轨迹包括:
基于触摸屏的像素设置绘图区域,在内存中创建与所述绘图区域相映射图文件对象;
基于所述坐标数据在所述图文件对象中加入在所述触摸屏上绘制的移动轨迹数据;
打开一个可用的帧缓冲设备,获取取得当前的所述触摸屏的参数,所述触摸屏的参数包括:屏幕分辨率、每个像素点的比特数;
将所述帧缓冲设备的内存映射到内核进程空间;
将所述图文件对象的数据写入所述帧缓冲设备的内存,通过所述帧缓冲设备在所述触摸屏上相应的位置绘制并显示移动轨迹。
7.一种电子白板的书写装置,其特征在于,包括:
设备文件获取单元,用于获取与电子白板的触摸屏相对应的触摸屏设备文件;
轨迹数据计算单元,用于读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据;根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;
轨迹绘制单元,用于调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
8.如权利要求7所述的装置,其特征在于:
所述轨迹数据计算单元,用于启动触摸数据获取线程;其中,所述触摸数据读取所述触摸屏设备文件,从所述触摸屏设备文件中获取触摸事件数据,并根据所述触摸事件数据计算在所述触摸屏上显示的轨迹数据;
所述轨迹绘制单元,用于启动轨迹绘制线程;其中,所述轨迹绘制线程调用帧缓冲区接口,基于所述轨迹数据在所述触摸屏上绘制移动轨迹。
9.如权利要求7或8所述的装置,其特征在于:
所述设备文件获取单元,还用于打开系统中存储设备文件的目录,遍历此目录下所有的设备文件;依次打开设备文件,得到此设备文件的句柄并获取此设备文件的设备名称;判断此设备文件的设备名称是否与所述触摸屏设备的设备名称一致,如果是,则此设备文件为所述触摸屏设备文件,保存所述触摸屏设备文件的句柄。
10.如权利要求9所述的装置,其特征在于:
所述轨迹数据计算单元,包括:
事件获取子模块,用于周期性地读取所述触摸屏设备文件,获取所述触摸屏设备文件中的事件数据;其中,在所述触摸屏上操作的事件数据被存储在所述触摸屏设备文件中;
坐标计算子模块,用于解析所述事件数据,并将所述事件数据封装为所述触摸屏上的移动轨迹的坐标数据。
11.如权利要求10所述的装置,其特征在于:
所述坐标计算单元,还用于解析所述事件数据获取事件参数,所述事件参数包括:事件ID、操作类型、X坐标采样值、Y坐标采样值;将所述事件参数转换为移动轨迹的坐标数据,所述坐标数据包括:轨迹ID、触摸屏x坐标、触摸屏y坐标和当前操作状态;所述当前操作状态包括:上、下、移动;
其中,当触摸屏的分辨率为在X轴方向上为W像素、在Y轴方向上为H像素时:
XL为触摸屏X标,XT为X坐标采样值,Xtmin、Xtmax、分别是触摸屏的X、Y轴方向上的坐标最小值和坐标最大值;
YL为触摸屏Y坐标,YT是Y坐标采样值,Ytmin、Ytmax分别是触摸屏的Y轴方向上的坐标最小值和坐标最大值。
12.如权利要求11述的装置,其特征在于:
所述轨迹绘制单元,包括:
图文件创建子模块,用于基于触摸屏的像素设置绘图区域,在内存中创建与所述绘图区域相映射图文件对象;
运行轨迹生成子模块,用于基于所述坐标数据在所述图文件对象中加入在所述触摸屏上绘制的移动轨迹数据;
帧缓冲设备调用子模块,用于打开一个可用的帧缓冲设备,获取取得当前的所述触摸屏的参数,所述触摸屏的参数包括:屏幕分辨率、每个像素点的比特数;将所述帧缓冲设备的内存映射到内核进程空间;将所述图文件对象的数据写入所述帧缓冲设备的内存,通过所述帧缓冲设备在所述触摸屏上相应的位置绘制并显示移动轨迹。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410843733.1A CN105807967B (zh) | 2014-12-30 | 2014-12-30 | 一种电子白板的书写方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410843733.1A CN105807967B (zh) | 2014-12-30 | 2014-12-30 | 一种电子白板的书写方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105807967A true CN105807967A (zh) | 2016-07-27 |
CN105807967B CN105807967B (zh) | 2020-07-14 |
Family
ID=56420884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410843733.1A Active CN105807967B (zh) | 2014-12-30 | 2014-12-30 | 一种电子白板的书写方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105807967B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201323A (zh) * | 2016-09-30 | 2016-12-07 | 深圳市创凯智能股份有限公司 | 基于触摸屏的书写方法及装置 |
CN106933486A (zh) * | 2017-03-13 | 2017-07-07 | 广州视源电子科技股份有限公司 | 用于安卓系统的触控实现方法及装置 |
CN108829281A (zh) * | 2018-05-23 | 2018-11-16 | 中山全播网络科技有限公司 | 一种交互式电子白板文件数据的采集解析方法 |
CN109803153A (zh) * | 2019-01-15 | 2019-05-24 | 网宿科技股份有限公司 | 一种直播视频的白板绘制方法及装置 |
CN110297585A (zh) * | 2018-03-22 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 电子白板实现方法、装置、设备以及存储介质 |
CN113129650A (zh) * | 2019-12-30 | 2021-07-16 | 福建天泉教育科技有限公司 | 一种基于电子三角板的操作方法及终端 |
CN113419664A (zh) * | 2021-07-23 | 2021-09-21 | 广州朗国电子科技股份有限公司 | 一体机多窗模式下的白板书写区域适配方法、设备、介质 |
CN113495665A (zh) * | 2020-03-19 | 2021-10-12 | 斑马智行网络(香港)有限公司 | 图像显示方法、装置、电子设备及计算机可读存储介质 |
CN113835788A (zh) * | 2021-11-25 | 2021-12-24 | 广州朗国电子科技股份有限公司 | 一种快速获取输入事件的方法及快速响应输入事件的方法 |
CN114090089A (zh) * | 2021-11-24 | 2022-02-25 | 航天欧华信息技术有限公司 | 基于绘制framebuffer实现书写加速的方法 |
CN114546175A (zh) * | 2022-02-28 | 2022-05-27 | 长沙朗源电子科技有限公司 | 电子白板的文字绘制方法、系统、电子白板和存储介质 |
CN114546173A (zh) * | 2022-02-28 | 2022-05-27 | 长沙朗源电子科技有限公司 | 电子白板及其书写加速方法、系统和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090057557A (ko) * | 2007-12-03 | 2009-06-08 | 삼성전자주식회사 | 멀티 터치를 이용한 재생시간 이동 및 재생구간 설정 방법 |
CN102419650A (zh) * | 2011-05-06 | 2012-04-18 | 北京汇冠新技术股份有限公司 | 一种多点触控的实现方法及系统 |
CN102855128A (zh) * | 2011-06-28 | 2013-01-02 | 希姆通信息技术(上海)有限公司 | 基于安卓内核的界面系统的实现方法 |
CN103164265A (zh) * | 2011-12-16 | 2013-06-19 | 盛乐信息技术(上海)有限公司 | 基于Linux系统的输入事件处理方法和系统 |
-
2014
- 2014-12-30 CN CN201410843733.1A patent/CN105807967B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090057557A (ko) * | 2007-12-03 | 2009-06-08 | 삼성전자주식회사 | 멀티 터치를 이용한 재생시간 이동 및 재생구간 설정 방법 |
CN102419650A (zh) * | 2011-05-06 | 2012-04-18 | 北京汇冠新技术股份有限公司 | 一种多点触控的实现方法及系统 |
CN102855128A (zh) * | 2011-06-28 | 2013-01-02 | 希姆通信息技术(上海)有限公司 | 基于安卓内核的界面系统的实现方法 |
CN103164265A (zh) * | 2011-12-16 | 2013-06-19 | 盛乐信息技术(上海)有限公司 | 基于Linux系统的输入事件处理方法和系统 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106201323B (zh) * | 2016-09-30 | 2019-03-19 | 深圳市创凯智能股份有限公司 | 基于触摸屏的书写方法及装置 |
CN106201323A (zh) * | 2016-09-30 | 2016-12-07 | 深圳市创凯智能股份有限公司 | 基于触摸屏的书写方法及装置 |
CN106933486A (zh) * | 2017-03-13 | 2017-07-07 | 广州视源电子科技股份有限公司 | 用于安卓系统的触控实现方法及装置 |
CN110297585A (zh) * | 2018-03-22 | 2019-10-01 | 阿里巴巴集团控股有限公司 | 电子白板实现方法、装置、设备以及存储介质 |
CN108829281A (zh) * | 2018-05-23 | 2018-11-16 | 中山全播网络科技有限公司 | 一种交互式电子白板文件数据的采集解析方法 |
CN109803153B (zh) * | 2019-01-15 | 2021-06-04 | 网宿科技股份有限公司 | 一种直播视频的白板绘制方法及装置 |
CN109803153A (zh) * | 2019-01-15 | 2019-05-24 | 网宿科技股份有限公司 | 一种直播视频的白板绘制方法及装置 |
CN113129650A (zh) * | 2019-12-30 | 2021-07-16 | 福建天泉教育科技有限公司 | 一种基于电子三角板的操作方法及终端 |
CN113129650B (zh) * | 2019-12-30 | 2023-05-23 | 福建天泉教育科技有限公司 | 一种基于电子三角板的操作方法及终端 |
CN113495665A (zh) * | 2020-03-19 | 2021-10-12 | 斑马智行网络(香港)有限公司 | 图像显示方法、装置、电子设备及计算机可读存储介质 |
CN113419664A (zh) * | 2021-07-23 | 2021-09-21 | 广州朗国电子科技股份有限公司 | 一体机多窗模式下的白板书写区域适配方法、设备、介质 |
CN114090089A (zh) * | 2021-11-24 | 2022-02-25 | 航天欧华信息技术有限公司 | 基于绘制framebuffer实现书写加速的方法 |
CN113835788A (zh) * | 2021-11-25 | 2021-12-24 | 广州朗国电子科技股份有限公司 | 一种快速获取输入事件的方法及快速响应输入事件的方法 |
CN114546175A (zh) * | 2022-02-28 | 2022-05-27 | 长沙朗源电子科技有限公司 | 电子白板的文字绘制方法、系统、电子白板和存储介质 |
CN114546173A (zh) * | 2022-02-28 | 2022-05-27 | 长沙朗源电子科技有限公司 | 电子白板及其书写加速方法、系统和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105807967B (zh) | 2020-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105807967A (zh) | 一种电子白板的书写方法及装置 | |
CN105807966A (zh) | 一种触摸屏事件的获取方法及装置 | |
CN110069257B (zh) | 一种界面处理方法、装置及终端 | |
Eagan et al. | Cracking the cocoa nut: user interface programming at runtime | |
CN110096277A (zh) | 一种动态页面展示方法、装置、电子设备及存储介质 | |
US8209598B1 (en) | Exporting electronic documents from rich internet applications | |
CN112114916B (zh) | 一种在Linux操作系统上兼容运行Android应用的方法和装置 | |
US11403121B2 (en) | Streaming per-pixel transparency information using transparency-agnostic video codecs | |
Badam et al. | Munin: A peer-to-peer middleware for ubiquitous analytics and visualization spaces | |
CN105204797A (zh) | 屏幕分享方法以及使用该方法的装置 | |
CN105094727A (zh) | 扩展屏幕模式下的应用程序运作方法以及平板计算机 | |
US20160378272A1 (en) | Systems and methods for providing multi-focus to applications for collaboration | |
KR20220004807A (ko) | 태깅 툴 생성 방법, 태깅 방법, 장치, 기기, 저장 매체 및 컴퓨터 프로그램 | |
US20160266860A1 (en) | Multiuser interactive display system and method | |
Hartmann et al. | Hydrascope: Creating multi-surface meta-applications through view synchronization and input multiplexing | |
CN104995622A (zh) | 用于图形函数的合成器支持 | |
CN109375980B (zh) | 基于Andriod系统的触控绘图方法 | |
CN103150198A (zh) | 一种组态软件的显示方法 | |
CN114895891A (zh) | 一种图形软件的处理方法、装置、电子设备及存储介质 | |
CN108399058A (zh) | 一种信号显示控制方法及装置 | |
CN101937557A (zh) | 一种动态播放窗口的标注方法及其系统 | |
US8312365B2 (en) | Rendering web content with a brush | |
US8185818B2 (en) | Mixed techniques for HTML crosstab rendering | |
CN115185709A (zh) | 输入法应用在Web操作系统上的跨平台实现方法及系统 | |
CN109960562B (zh) | 一种信息展示方法、装置和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: C1104 room 100085 Beijing city Haidian District Third Street No. 9 C Applicant after: Hitevision Polytron Technologies Inc Address before: C1104 room 100085 Beijing city Haidian District Third Street No. 9 C Applicant before: HONGHE TECHNOLOGY CO., LTD. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |