您的当前位置:首页正文

基才QT/E的嵌入式Linux系统的软键盘实现

2021-09-29 来源:好走旅游网
第20卷 第5期 Vo1.20 No.5 电子设计工程 Electronic Design Engineering 2012年3月 Mat.2012 基才QT/E的嵌入式Linux系统的软键盘实现 谢芬,潘丽,刘守印 (华中师范大学湖北武汉430079) 摘要:随着嵌入式技术的不断发展,嵌入式系统在各种领域中得到了广泛的应用。本文针对嵌入式系统需要在显示 屏上实现字符的输入,在Linux环境下,利用QT/E库软件,实现了软键盘设计。主要介绍了软键盘的设计以及软键盘 实现的程序编写。 关键词:Linux;ARM;QT;软键盘 中图分类号:TP391 文献标识码:A 文章编号:1674—6236(2012)O5一叭77—03 Realization of s0ft keyboard based on QT/E in embedded Linux XIE Fen,PAN Li,LIU Shou—yin (Central China Normal University,Wuhan 430079,China) Abstract:With the development of embedded technologies,the embedded systems have been widely used in many fields.This paper presents the soft keyboard based on QT/E and the circumstance of Linux in that embedded systems need the soft keyboards through which characters are input in the display screens.It mainly introduces the design and programming of soft keyboard. Key words:Linux;ARM;QT;soft keyboard 随着对嵌入式系统体积小型化和操作人性化的要求,以 及大尺寸触摸式显示屏的广泛应用。在嵌入式系统中采用软 QT基本类 图形类 控件类 键盘实现字符的输入。已经成为目前的发展主流。QT是一个 跨平台的C++图形界面库【”,是由挪威TmllTech公司推出的 产品。它采用的是面向对象的程序设计思想,因此,具有良好 的可扩展性和可移植性,同时支持多个GUI平台的交互开 图形引擎 Framebu ffer 0ther s 事件驱动 Input device 发。QT采用了良好的封装机制,使得它的模块化程度非常 高,可重用性好,开发方便。凭借其良好的性能,QT已成为目 Linux操作系统 前GUI开发中使用最为广泛的图形界面库之一。QT/E(QW Embedded)是用于嵌入式系统的QT版本。QT/E去掉了对 XLib的依赖而直接工作于Frame Buffer上,因而效率更高. 图1 QT/E体系结构 Fig.1 Structure diagram ofQT/E 法和Framebuffer操作底层的硬件设备来实现的;事件驱动则 是通过底层的输入输出设备驱动来实现对外界事件的响应。 2)如图1所示.由图形引擎层实现对图形界面的绘图操 文中主要使用QT4.5.3版本,在嵌入式Linux环境[21下实现软 键盘设计。 1 QT/E体系结构 QT/E是2001年Trolhech公司开发的一款面向嵌入式系 作,然后由QT基本类提供对外界的操作接口。其中,图形类提 供图形操作接口,比如:画线、画矩形等;控件类通过继承公 共抽象类QWidget来实现基本的控件,为外界提供接13。 统的QT版本。它采用轻量级窗口系统,完全摒弃了底层的 XLib,以Framebuffer作为底层图形接口,极大地减少了对内 2 QT/E通信机制 在图形界面编程时,我们经常要实现界面之间的相互切 换或者相互通知,更具体的来说就是需要实现类与类之间的 存的消耗。QT/E在上层仍然保持着原来的QT架构,因此,针 对在Xwindow上设计的QT程序仍然具有很好的移植性。 QT/E的基本体系结构如图1所示。 1)QT/E体系结构口】中的图形引擎是通过相关的图形算 收稿日期:2012一O1—11 稿件编号:201201047 相互通信。比如,在软键盘的设计中,当一个事件产生时,系 统就会发出一个信号。信号和槽(Sinalg&slot)机制 是QT的 核心特征,在QT库中有很多已经设置好的信号,比如: 基金项目:中央高校基本科研业务费专项资金(120002040255) 作者简介:谢芬(1985一),女,湖北天门人,硕士研究生。研究方向:无线通信、嵌入式系统应用与开发。 ..177- 《电子设计工程)2012年第5期 clicked()、tirggered()等,开发人员也可以根据需要来自定义 属性。按照一般键盘的布局对它们进行排列: 某些信号。事件的响应对应着QT窗口里的槽函数,和信号类 似,系统有很多预定义的槽,比如exit()、quit()等,用户也可 以根据需要来添加自己的槽函数。 当对象改变其状态时,信号就由该对象发射(emit)出 去,这就是对象所要做的全部事情,它不知道另一端是谁在 接收这个信号。这就是真正的信息封装。它确保对象被当作 一个真正的软件组件来使用。槽用于接收信号。但它们是普 图3 xl1环境下软键盘排列图 Fig.3 Soft keyboard array diagramin xll 通的对象成员函数。一个槽并不知道是否有任何信号与自己相 连接。而且,对象并不了解具体的通信机制。可以将很多信号 3.2软键盘实现 与单个槽进行连接。也可以将单个信号与很多槽进行连接,甚 至于将一个信号与另外一个信号相连接也是可能的。 因此,整个QT窗口的设计简单、灵活且扩展性好。信号 与槽之间的链接一般用connect()函数来实现,具体关联方 式和实现函数如图2所示: 图2信号与槽连接关系图 Fig.2 Connect diagram between signal and slot 3基于QT/E软键盘的实现 文中主要根据项目的实际需要,在软键盘上制定了数字 键、字母键、退出键和确定键。具体分两步实现,第一步:在基 于linux环境的PC机上制定软键盘.并编写代码实现其按键 功能:第二步:生成能够在ARM板上运行的代码,并移植到 ARM板上。 3.1 PC机xll环境下制定软键盘的模型 根据项目的实际需求,在PC机xl1/QT环境下设计了软 键盘界面。该软键盘具有数字键、字母键、退出键和确定键, 总共42个按键。如图3所示。在linux环境的QT designer下, 创建新的widget,然后根据项目中所需要的按键个数来确定 软键盘的大小,在此,选择软键盘的外框大小为:540x160。软 键盘外框搭建完成之后,需要在软键盘区域内加人实际所需 要的按键。将Widget Box下Buttons选项中的PushButton按 键拖入到软键盘区域内,在PushButton按键属性的文本编辑 中填人按键值。比如…1’。在PushButton按键属性的名字编辑 中填入按键名。比如“nl”。 同理.在软键盘区域内拖人实际所需要按键个数的按 键,根据所需要的键值修改每个按键上面的文本属性和名字 一】78- 如图3所示。首先建立了足项目要求的软键盘的基本模 型,接下来要实现的就是当按键响应时能够读出键盘值并将 其发送出去,具体实现的流程如图4所示。 (初始化按键 ) ㈩ l建立键值对应的映射l 建立键值的clicked对应的信号槽关系 将键值传递给焦点控件 图4软键盘实现代码流程图 Fig.4 Flow chart of soft keyboard code 图4中,初始化按键时,可以使用QSingalMapper类16]来 捆绑不同按键所发送的一系列无参数信号。并将其转发为有 参数的信号: QSignalMapper mapper=new QSingalMapper(this); QSignalMapper的主要应用为可以实现一个函数响应不 同按钮的功能,下面举例来说明图4的具体实现过程: 首先设置软键盘界面名称为ui,然后以数字键“1”为例: 将在图3中数字键1对应的按键名称设为:n1。在图4中的 第(1)步中,建立键值“1”所对应的映射,代码如下: mapper一>setMapping(ui.nl,”1”); 接着,在图4中的第(2)步,需要建立键值clicked对应的 信号与槽之间的关系代码如下: connect(ui.nl,SIGNAL(clicked()),mapper,SLOT(map ())); 最后.将所需要用到的字母或者数字通过上述方式连接 到槽函数中。如图4中的(3),将这些所要求得到的字母或者 数字发送给焦点控件.代码如下: connect(mapper,singal(mapped(const QString&)),im, slot(sendcontent(c0nst QString&))) 上面语句中sendcontent()函数为发射子函数,具体代码 如下: sendCommitString(content); (1) content.clear(); (2) 谢芬.等 基于QT/E的嵌入式Linux系统的软键盘实现 语句(1)将焦点控件内的字母和数字发送出去,语句(2) 闭。在此就可以用图5所示的软键盘完成手机号码的预设。 清除发送框中的字母和数字,供下一次使用。 可以采用同样的方式,对软键盘中其它的按键进行映射 4结束语 函数和连接函数的编写,然后在anTI—linux—gcc环境下编译, 随着Linux操作系统的广泛应用以及人们对GU1人机 生成可以在arm板上运行的二进制文件。 交互界面的更多需求,本文在linux操作系统的QT开发套件 3.3下载到目标板上运行 下,分析了软键盘实现的原理,并完成了软键盘的设计。此软 本文的设计思路是:先将程序代码在PC机上调试通过, 件盘可以根据用户的要求来添加按键。与外部接人实体键盘 然后将调试通过的程序代码在RAM—linux—gcc环境下进行 相比,不仅便利,还节约成本。通过实践证明此软键盘具有较 编译.生成可以在RAM板上运行的二进制文件。最后将此二 强的实时性和可靠性,可以广泛的应用于各种QT界面中。 进制文件下载到目标板中。本文的前提是QT4.5.3环境已经 参考文献: 移植到开发板上,具体移植步骤 在这里不作介绍。在终端上 [1】丁林松,黄丽琴.QT4m形设计与嵌入式开发[M】.北京:人 面,运行启动软键盘指令,命令行后面加上“一qws”指令,运行 民邮电出版社,20o9. 结果如图5所示。 [2]陈ft.,唐波,卢力.嵌入式环境下串行帧通信的设计与实 现[J].现代电子技术,2010(23):60—62. CHEN Le,TANG Bo,LU Li.Design and implementation of serial frame communication in embedded environment[J]. Modem Electronic Technique.2010(23):6O一62. 【3】倪继利.Qt及nnux操作系统窗口设计[MI.北京:电子工业 出版社.2006. [4]唐新华QT的信号与槽机制介绍[EB/OL].【2005—09—20]. htto://www.ibm.eom/developerworks/cn/linux/guitoolkit/qt/si- gnal-slot/. 图5 目标板上实现的软键盘 【5】吴岳.Linux C程序设计大全【M】.北京:清华大学出版社, Fig.5 Soft keyboard design in the ARM board 2009. 图5是在实际项目中需要的预设手机号码的界面.在系 【6】成洁,卢紫毅.Linux ̄口程序设计一Qt4精彩实例分析【M】. 统运行前要先设置手机号码,以便系统故障时能够自动的给 北京:清华大学出版社。2008. 对应的手机用户发送预警信息。使用户能够实时的了解自己 【7】段昌平.Mini2440下移植QT4.4.3【EB/OL].[2009-04-061. 系统的运行状态。在该界面中,准备预设手机号码时,直接选 http删uanyuxueJ)1og163 0n lo tati 37315l92009361 124 择打开软键盘按钮,图3所示的预制的软键盘会弹出界面。选 36766/. 择要求预设的手机号码值,完成之后选择exit按键。软键盘关 Vishay推出新款高性能Power MetaI Strip电阻 Vishay Intertechnology宣布,推出新款采用2512外形尺寸的表面贴装Power Metal Stirp电阻——WsU)25l2。这种电阻具 有高达3 W的功率和0.000 5 Q的极低阻值 WSl_/r2512电阻的先进结构包括具有低TCR(<20PPM/ ̄C)的固态金属镍铬或锰铜合金电阻芯,以及专门挑选并进行稳定 化处理的材料,使这种高功率电阻的工作温度范围达到一65~+170℃,同时保持Power Metla Stirp结构的优异电气特性。 新器件使高性能终端产品的高功率电路能够采用更小的电阻。而且。该电阻的高温性能使WSLP'2512能够用于条件恶劣 的高温环境中工作,而不必牺牲功率等级或电气性能。 Vishay的这款电阻适用于各种类型的电流检测和脉冲应用,包括开关和线性电源、仪表、功率放大器。以及引擎、防抱死系 统和气候控制等汽车电子控制装置中的分流电阻;石油、天然气钻井的井下测试/测量设备等工业控制系统:HVAC系统的逆 变器控制等消费类产品的控制。 WSLP2512电阻的尺寸为0.250英寸x0.125英寸x0.025英寸(6.35 minx3.18 mmx0.635 mm)。专利的加工技术实现了 0.00o 5~O.O1 Q的极低阻值,以及±1.O%和±5.O%的严格容差。 像所有Power Metal Stirp电阻一样,今天发布的器件采用全焊接结构,实现了优异的电气特性。WSLP2512具有0.5 5 xlH 的低电感和低热EMF(<31xV,℃)。 咨询编号:2012051016 —179- 

因篇幅问题不能全部显示,请点此查看更多更全内容