QSocketNotifier在端口监听中的应用

2014-12-23 08:23胡军锋尤泽萌
科技视界 2014年29期
关键词:嵌入式操作系统监听温湿度

胡军锋 尤泽萌

(山东省海洋环境监测技术重点实验室 山东省科学院海洋仪器仪表研究所,山东 青岛 266001)

0 引言

嵌入式操作系统异军突起,在工业监测、智能家电、军用等各个领域中应用越来越广泛。嵌入式操作系统目前比较流行的就是Linux 与WinCE。由于WinCE 为微软开发,代码不公开,使用上移植行就比较差,并且收费。而Linux 内核代码是完全开源的,免费使用,其代码方便移植、安全性高、稳定性好、效率高,同时支持嵌入式CPU,如POWERPC、ARM、X86、MIPS 等,故得到广泛的应用。嵌入式Linux 中图形开发软件主要有Qt[1]与MiniGui[2]。前者是基于C++后者是基于C的。使用Qt 开发的软件,相同的程序代码可以在任何支持的平台上编译与运行,无需修改源代码。Qt 可用于各种类型的设备和产品,从智能电器(移动电话、路由器和机顶盒)到工业控制设备(如医学成像设备、移动信息系统等)。MiniGui 最初是用于工控设计的,其小巧、高效率特点适合于简单界面界面开发。

本文介绍的基于嵌入式操作系统的气象监测系统使用的是嵌入式UBUNTU 系统,移植了当前最流行的图形化开发软件Qt4。系统需要同时监测各种气象要素,如风速、风向、温湿度、气压、能见度、降雨量、太阳辐射度等等气象参数。每个气象参数一般对应着一种智能传感器,这种智能传感器很多都是具备串口通讯的。目前Qt4 之前版本中有关串口通讯类软件还没有,比较常用的是第三方的串口类软件和创建常驻线程的方式来实现。第一种方式问题就是移植起来比较复杂。第二种方法需要程序员对于内核调度有深入了解,否则在使用线程的时候容易造成系统崩溃。所有鉴于上述情况本文介绍使用QSocketNotifier 类来监听来自文件的数据,实现串口编程。QSocketNotifier 类封装了Linux 内核对于底层端口的操作,使得用户不需要去了解底层的各种的结构体,是程序开发变得更加容易,更易理解。

1 软件原理设计

Linux 中所有的外设都被定义为某个文件,对外设的操作也就是对于其文件进行相应的读写操作,所以对于串口操作也是对于相应的文件进行操作。QSocketNotifier 类对应三类事件:QSocketNotifier::Read,QSocketNotifier::Write,QSocketNotifier::Exception。由于采集来自串口的数据,这里只使用QSocketNotifier::Read 事件。每个QSocketNotifier 对象只对应着一个监听事件,如果需要监听多个事件,那么就要创建相应的QSocketNotifier 对象。与传统的线程方式相比,大大简化了程序代码,由于与操作系统完全隔离,使得程序更加稳定。假设需要检测来自风传感器、温湿度传感器和压力传感器的数据。那么我们需要创建三个单独QSocketNotifier 对象,通过相应的Qt 事件信号机制来实现。

图1 软件流程图

首先系统初始化打开温湿度、大气压力和风传感器对应的串口文件,同时设置文件通讯波特率。然后创建3 个QSocketNotifier 对象,分别用来监控来自温湿度、大气压力和风传感器信号,当监听到某个文件有数据传来,先判断是否是键盘等其他事件,如果是则进入相应的键盘及其他事件处理函数。判断是否是串口事件,如果是其对应的QSocketNotifier 就会发射ativated 信号,然后进入相应的slot 处理。使用QSocketNotif 类最大好处是让程序开发者不用去详细了解Linux 操作系统后台是如何处理串口数据的,只要有数据来就会触发ativated信号,进入每个串口所对应的函数操槽去处理。如果没有事件发生,系统继续等待事件的发生。

2 软件编程实现

第一步:打开大气压力、温湿度、风传感器对应的文件,设置相关波特率。

第二步:为每一个需要监听的串口创建QSocketNotifier 对象。如下所示

3 结束语

本文简要介绍了基于QSocketNotifier 的串口监听方式,这种方式相比起第三方串口类,其编程比较简单,易于初学者使用。缺点就是Qt3.0 以前版本中没有QSocketNotifier 类,只有Qt4.0 以后的版本才有。

[1]姚福鹏.嵌入式数据库在QT/中的应用与研究[J].国外电子测量技术,2010,9:73-79.

[2]张升,陶维青,黄林.嵌入式图形开发界面MinuGui[J].仪器仪表用户,2013,2.

猜你喜欢
嵌入式操作系统监听温湿度
温湿度控制器在回收砂冷却系统中的应用
千元监听风格Hi-Fi箱新选择 Summer audio A-401
基于DSP的多路温湿度监测系统
典型实时嵌入式操作系统应用分析
基于温湿度控制的天气预测装置
网络监听的防范措施
蒸发冷却温湿度独立控制空调系统的应用
基于嵌入式操作系统的工业采集板设计
应召反潜时无人机监听航路的规划
应用服务型人才培养体系下的嵌入式操作系统教学改革探索