您的位置 首页 硬件

根据嵌入式Linux框架下的的智能仪器触摸屏接口规划进程详解

基于嵌入式Linux框架下的的智能仪器触摸屏接口设计过程详解-在现代化生产中, 为了确保机械设备安全可靠地运行, 通常要采用适宜的仪器仪表, 利用故障诊断技术及时发现故障, 并采取合理的维修或保护措施来排除故障, 预防和避免事故的发生。基于对仪器尺寸、便携性和操作方便性的考虑, 在工业领域如煤炭、钢铁、冶金、电力、化工等行业中大量的仪器仪表和设备, 都逐渐选用触摸屏作为系统的输入设备。

在现代化生产中, 为了保证机械设备安全牢靠地运转, 一般要选用合适的仪器仪表, 运用毛病诊断技能及时发现毛病, 并采纳合理的修理或维护措施来排除毛病, 防备和防止事端的发生。依据对仪器尺度、便携性和操作便利性的考虑, 在工业范畴如煤炭、钢铁、冶金、电力、化工等职业中很多的仪器仪表和设备, 都逐步选用接触屏作为体系的输入设备。

针对这一状况, 作者在开发面向机械毛病诊断的智能仪表进程中, 对接触屏输入接口进行了研讨。规划了四线电阻式接触屏与PXA255 处理器的接口电路, 剖析了Linux结构下的字符设备驱动程序规划原理, 完结了接触屏的接口驱动程序开发, 并规划了用接触屏作为输入设备的MiniGU I用户程序。接触屏作为仪器的输入设备, 人机交互开门见山, 大大便利了现场操作人员的运用。

1 硬件结构和作业原理

依据作业原理和传输介质的不同, 接触屏首要分电阻式、电容式、红外线式以及外表声波式等多种类型。电阻式接触屏是一块4层通明的复合薄膜屏,如图1所示。下面是玻璃或有机玻璃构成的底层; 上面是一层外外表经过硬化处理然后润滑防刮的塑料层; 中心是两层金属导电层, 在导电层之间有许多细微的通明阻隔点把两层离隔。两个金属导电层是接触屏的作业面, 其两头各涂有一条银胶, 称为接触屏作业面的一对电极。四线式接触屏的X 作业面和Y 作业面别离加在两个导电层上, 共有4根引出线, 别离连到接触屏的X 电极对和Y 电极对上。在触笔接触屏幕时, 两导电层在接触点处接触。电阻式接触屏作为输入设备与显现屏合作运用时, 其作业的本质便是经过丈量X、Y两个方向电阻的分压, 确认接触屏的触点坐标, 并将该坐标映射到显现屏坐标上, 然后完结人机交互。因为电阻式接触屏作业面与外界彻底阻隔, 受环境影响小, 所以具有不怕尘埃和水汽、安稳性高、不漂移等长处, 特别合适工业现场运用。

依据嵌入式Linux结构下的的智能仪器接触屏接口规划进程详解

图1 电阻式接触屏结构

在规划进程中, 选用ADS7843 作为接触屏接口的AD转化芯片,它具有12 位的转化精度, 最大支撑4 096 ×4 096点阵的LCD, 满意仪器规划要求。

仪器体系处理器选用Intel Xscale架构的PXA255处理器,用其GPIO口模仿SPI接口与ads7843进行通讯。其接口原理如图2所示。ADS7843完结收集通道的切换和接触点处电压的收集, 其操作时序首要由操控字输入、电压收集和模数转化组成, 详见参考文献。只需在驱动程序中依据时序要求向D IN口发送操控字, 即可从DOUT处得到相应通道的收集成果。

依据嵌入式Linux结构下的的智能仪器接触屏接口规划进程详解

图2 ADS7843与PXA255的接口电路

2 接触屏接口驱动程序

Linux驱动程序是体系内核的一部分, 它把软件和硬件别离开来, 并向上供给应用程序拜访硬件的通讯接口, 向下办理维护体系硬件。接触屏在Linux下被界说为字符设备, 其驱动首要完结触点电压的收集, 并向用户空间传递X 坐标、Y坐标和笔动作(按下、抬起或拖拽) 数据。当触笔按下时, ADS7843的11脚输出低电平, 触发PXA255通用IO口的12脚发生外部中止, 敞开定时器, 完结接触屏的动作。接触屏的驱动流程如图3所示。

依据嵌入式Linux结构下的的智能仪器接触屏接口规划进程详解

图3 接触屏驱动程序结构流程

2.1 驱动的编写

接触屏驱动在Linux结构下归于字符设备驱动。

驱动的进口函数为ads7843 _ ts_ init ( ) , 在该函数中,初始化I/O口, 注册笔中止和设备节点, 完结设备文件体系创立规范字符设备的初始化作业[ 8 – 10 ]。接触屏设备操作的结构经过ads7843_ts_fop s界说。

staTIc struct file_operaTIons ads7843_ts_fop s = {

read: ads7843_ts_read,

poll: ads7843_ts_poll,

ioctl: ads7843_ts_ioctl,

fasync: ads7843_ts_fasync,

open: ads7843_ts_open,

release: ads7843_ts_release,

};

这样, 只需依据实践需求正确认义该结构中的几个函数进程, 就可完结设备驱动的开发。

当接触屏设备被翻开时, 首要履行到ads7843_ts_open ( )函数, 并在该函数中, 初始化一个缓冲区, 用于存储坐标数据。在接触屏被按下后, 体系首要触发中止, 在ads7843_ts_interrup t ( )中止程序中, 判别in_TImehandle全局变量的状况, in_ TImehandle在定时器函数中被改动, 也便是说进入中止后, 先经过定时器延时20ms, 完结接触屏的软件去抖, 再判别接触屏是否被按下。然后经过read_xy ( )函数别离切换至X和Y 通道, 完结触点电压的AD转化, 并读取12 位坐标值。

static void ads7843_ ts_ interrup t ( int irq, void 3 dev_ id,

struct p t_regs3 regs)

{

sp in_lock_irq (&tsdevlock) ;

if ( in_timehandle 》 0)

{

sp in_unlock_irq (&tsdevlock) ;

return;

}

disable_irq ( IRQ_GPIO_ADS7843) ;

ads7843_ts_starttimer ( ) ;

sp in_unlock_irq (&tsdevlock) ;

}

应用程序调用read ( ) 函数时, 进入驱动的ads7843_ts_read ( )接口函数。在该接口函数中获取采样成果, 判别是否要对坐标进行校准, 将终究成果写入到缓冲区中, 并经过copy_to_user ( )函数将其从内核空间复制到用户空间, 以使应用程序能够运用。在ads7843_ts_read ( )函数中选用了非堵塞型操作, 使得在没有数据抵达的时分当即回来, 然后用异步触发fasync ( )来告诉数据的到来。ads7843 _ ts_poll ( )函数用于驱动程序的非堵塞操作, ads7843_ts_fasync ( )函数用于驱动异步触发。ads7843_ts_ioctl ( )函数中, 供给了可从用户态操控的参数, 如接触屏是否在驱动中校准、屏幕的最大最小坐标值等。ads7843_ts_release( )函数用来封闭接触屏设备。

2.2 接触屏的校准

在仪器开发进程中,接触屏作为输入设备与LCD合作运用。为了能使从接触屏采样得到坐标与屏幕的显现坐标对应, 还需求做一个映射, 也便是要对接触屏进行校准。如图4所示, 所用的接触屏和液晶屏都是规范的矩形, 只需装置合理, 能够以为接触屏的X 方向坐标只与显现屏X 方向相关, Y方向坐标只与显现屏的Y方向相关。假定显现屏的分辨率是W ×H, 显现区域的左上角对应的接触屏采样坐标是( x1 , y1 ) ,右下角对应的坐标是( x2 , y2 ) , 那么接触屏上恣意一点采样坐标( x, y) 与显现屏坐标( xd , yd ) 的对应联系能够依照如下公式核算:

依据嵌入式Linux结构下的的智能仪器接触屏接口规划进程详解

这样, 在测得( x1 , y1 ) 和( x2 , y2 ) 点接触屏的采样值后, 运用上述公式编制校准函数, 在接触屏作业的进程中, 核算出实践接触点对应的显现坐标,完结接触屏的校准。

依据嵌入式Linux结构下的的智能仪器接触屏接口规划进程详解

图4 接触屏的校准

3 接触屏用户应用程序

创立的Linux设备文件体系接触屏节点为/dev/ts.在应用程序中, 能够像翻开文件相同用open函数翻开设备文件, 然后用read ( )函数读取由驱动传递到用户空间的数据。仪器应用程序的开发选用MiniGU I进行, MiniGU I是由北京飞漫公司开发, 可应用于实时嵌入式体系中的轻量级图形用户界面支撑体系。其函数接口与Windows SDK相似, 开发便利。

MiniGU I的输入笼统层( IAL: Input Abstract Layer)供给了对接触屏、鼠标等输入设备的丰厚支撑, 并支撑PXA255处理器渠道。只需经过简略的设置就能够在应用程序中运用接触屏。装备装置MiniGU I时, 运用22enable2px255bial项, 因为在装置MiniGU I时选用了内嵌资源的静态编译方法, 所以在编译之前, 需在MiniGU I的src / sysres/目录下树立mgetc2pxa1c 文件,并在其顶用下面句子设置体系参数, 将接触屏设为输入设备。

static char * SYSTEM_VALUES[ ] = { “ fbcon” ,“ PX255B” , “ /dev/ ts” , “ none” };

MiniGU I对接触屏输入的处理方法如图5 所示。

依据嵌入式Linux结构下的的智能仪器接触屏接口规划进程详解

图5 MiniGU I中的接触屏输入

MiniGU I经过接触屏设备驱动程序接纳原始的输入数据, 把它转化为MiniGU I笼统的接触屏事情和数据。

相关的底层事情处理例程把这些接触事情转化为上层的接触音讯, 放到相应的音讯行列中。应用程序经过音讯循环获取这些音讯, 交由窗口进程处理。编制针对接触屏的应用程序时, 需求做的只是在窗口接纳到比如MSG _LBUTTONDOWN 等触屏音讯时, 调用相应的句子完结预期操作。

4 定论

嵌入式智能仪器接触屏接口增强了仪器体系的人机交互功用, 便利了操作人员的运用; 接口电路和驱动程序的模块化便利了仪器的后续改善和新产品的开发, 并可依据需求移植应用到各种不同场合。规划的接触屏接口现已成功应用在毛病诊断巡检仪器中, 其作业安稳, 运转牢靠, 具有很好的实用价值。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/101066.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部