过滤系统

2024-08-21

过滤系统(精选11篇)

过滤系统 篇1

温州镇田机械有限公司是专业从事于卫生级不锈钢压力容器、常压容器、过滤器等系统工程的研发、制造、销售及服务, 其技术与产品被广泛应用于生物制药、食品饮料、日化及精细化工等行业。该公司生产的无菌水设备过来系统由捕集过滤器、预过滤器、除菌过滤器以及相应的管件、阀门、压力表等组成的标准配置。系统采用316L或304不锈钢材质, 氩弧焊接, 内外表面镜面抛光, 卫生级设计。

(1) 捕集过滤器:用于去除水中较大的颗粒杂质, 采用Depth-Stack TM深层膜堆滤饼进行深层过滤, 主要用于净化含固量很少的流体, 如水的净化以及烟气的除尘, 其过滤精度为10~20 μm。

(2) 预过滤器:用于保护终过滤器 (除菌过滤器) 并延长其使用寿命, 滤芯采用聚丙烯或硼硅酸盐材质, 折叠结构, 高通量和增强的容污能力, 过滤精度为1~2 μm。

(3) 终过滤器 (又叫除菌过滤器) :用于除去水肿的有害微生物, 保证工艺用水的微生物稳定性, 滤芯采用尼龙66或聚醚砜膜式滤材, 绝对过滤精度为0.2 μm或0.45 μm, 具有天然的亲水性, 所用材料均符合FDA和GMP要求, 具有耐高温, 溶出物低和起始压差低, 使用寿命长等特点。

该公司的无菌水设备过滤系统适用于食品/饮料行业、CIP用水、物料调配用水、发酵/制药等领域。

温州镇田机械有限公司

地址:温州市沙城北工业区八甲段金瓯路3号邮编:325025

电话:0577-86825195传真:0577-86810195联系人:曾经理手机:15957782988

邮箱:info@jhenten.com网址:www.jhenten.com

过滤系统 篇2

首先,我们需要进入系统服务的管理界面:打开【Win+X】菜单点击“计算机管理”;或者打开文件资源管理器,右击“计算机”然后选择“管理”。

进入计算机管理窗口    接着在左侧导航窗口里展开“服务和应用程序”并点击“服务”,这样就能看到所有的Windows后台服务了。    展开服务列表    服务的更改方法:双击服务名,在打开的窗口里找到启动类型,将下拉选项为“手动”即可(如下图)。为什么不是改成禁用?因为这些服务并不是不再需要,只是不必每次都随系统一起启动,改为手动不会影响它需要使用时的正常启动。    更改为手动启动    以下是可以安全更改为手动启动的服务(按名称排序):

·Application Experience(启动时为程序处理应用程序兼容性缓存请求)

·Computer Browser(维护网络上计算机的更新列表,不需要联网的话可以改为手动)

·Diagnostic Policy Service(诊断策略服务)

·Distributed Link Tracking Client(维护计算机内的NTFS文件之间的链接)

·IP Helper(使用IPv6转换技术)

·Offline Files(脱机文件服务)

·Program Compatibility Assistant Service(为应用程序兼容性助手提供支持)

·Portable Device Enumerator Service(强制可移动大容量存储设备的组策略)

·Print Spooler(没有打印机的话可以关闭它)

·Remote Registry(远程注册表设置,这项服务应该保持禁用状态)

·Secondary Logon(在不同凭据下启用启动过程,改为手动即可,禁用会导致魔兽世界等游戏无法登录)

·Security Center(监视并报告计算机上的安全健康设置)

·Server (支持计算机通过网络进行共享,若处于单机状态的话,可以改为手动)

·TCP/IP NetBIOS Helper (提供NetBIOS名称解析支持,若你的计算机没有连接到工作组网络的话,可以改为手动)

·Windows Error Reporting Service (报告错误并提供现有解决方案)

·Windows Image Acquisition (WIA) (为扫描仪和照相机提供图像采集服务)

·Windows Search (提供内容索引,如果你不怎么使用Windows自带搜索的话,可以改手动)

·Windows Time (维护时间和日期同步)

最后,如果你在更改上述服务后,发现系统或者其他软件工作不正常,可以恢复原来的设置,

DIY本地视频广告过滤系统 篇3

由于我们没有广告过滤系统的相关文件,所以需要从网上将这些文件下载下来。首先需要下载安装Tortoise SVN这款软件,它的作用是将广告过滤系统的文件批量同步到本地硬盘中。接着在本地硬盘中创建一个新的文件夹目录并随意设定一个名称,本例设置为web。然后在web文件夹上右击,选择“SVN Checkout”命令。

接下来在弹出对话框的“URL of repository”选项中,输入广告过滤系统的链接地址。我们这里使用的是“http://code.taobao.org/svn/cleanplayer/trunk/”,当然大家也可以使用自己可以找到的其他链接地址。然后点击“Checkout directory”选项后的按钮,在弹出的列表中选择刚刚创建的web文件夹(图1)。设置完毕点击“OK”按钮,软件就开始将指定地址链接中的文件,批量下载并同步到本地电脑的web文件夹中了(图2)。

搭建本地过滤系统

当广告过滤系统的文件同步下载完成后,再下载运行一款名为“MyWebServer”的软件,它的作用是在本地电脑搭建一个WEB服务器。首先点击“服务目录”选项后的“浏览”,在弹出的窗口中选择前面创建的web文件夹。接着选中“访问日志”和“错误日志”项,再点击“启动”,这样本地电脑的广告过滤系统就搭建完成(图3)。

修改脚本代码地址

由于我们将广告过滤系统搭建到了本地电脑中,所以就需要对原有脚本代码中广告过滤系统的链接地址进行修改。不过浏览器要加载功能脚本的话,需要安装不同的功能扩展。谷歌浏览器需要安装TamperMonkey扩展,火狐浏览器需要安装Greasemonkey扩展,而傲游浏览器则需要安装“暴力猴”扩展。这里以傲游浏览器为例,安装完功能扩展后,接着访问https://github.com/dxdragon/CleanPlayer这个链接地址,然后在弹出的列表中找到并点击“Video.Clean.Player.user.js”脚本。

接下来在脚本代码窗口点击右上角的“Raw”按钮,稍等片刻“暴力猴”扩展就会检测到这个脚本,点击右上角的“确认安装”即可。现在点击傲游浏览器左侧的“暴力猴”扩展图标,在弹出的对话框中点击“管理脚本”命令,在弹出的脚本列表中找到“Video.Clean.Player.user.js”这个脚本并点击下面的“编辑”,将原有的广告过滤系统链接修改为“http://127.0.0.1/player/”即可(图4)。

垃圾短信过滤系统的构建 篇4

1 系统介绍

短信按照大类来分有:正常信息、其他信息、黄色信息、政治信息、违法信息、SP诈骗信息、商业广告信息等。其中, “黄色信息”子类又可分:1) 男女公关、陪护等严重信息;2) 色相诈骗、色相推荐等广告信息;3) 黄色笑话和晕段子;4) 其他黄色信息。“商业广告”子类又可分:1) 机票、车票等票务信息;2) 楼盘、房子等销售信息;3) 商品打折、推销等信息;4) 其他商业信息。

每个短信的分类结果, 会实时地返回给分类请求方。双方数据交换采用TCP/IP的SOCKET方式, 双方互为客户端和服务端, 因此过滤过程中的延迟时间在1秒内完成, 用户体验比较好。整个系统服务包括智能库处理服务、短信数据库服务、智能库WEB维护和查询服务。系统全部采用开源LINUX操作系统, 数据库采用MYSQL、Hbase, WEB服务器采用TOMCAT等。这些为用户带来经济、安全的使用环境。WEB系统采用B/S结构、模块化设计, 便于系统通过添加功能模块实现平滑升级扩容。

应用软件智能库部分开发语言采用标准C语言, WEB部分采用JAVA等业界通用开发语言。软件系统支持配置动态修改、更新而不影响系统运行。系统具备运行监视及故障人工、自动恢复功能, 恢复运行时间小于1分钟。应用软件具备故障诊断功能, 能对系统故障进行诊断和定位。

1.1 软件功能模块

1) 指令表分析模块。主要对过滤指令集合和模糊匹配域值进行相关性分析, 为后面的“智能库学习模块”提供参数。模糊匹配域值通过“智能库学习模块”进行初始化, 也可以通过WEB界面, 管理人员在“智能库表维护模块”进行。2) 关键词模糊处理模块。主要对业务指令相关的关键词集合进行相关性分析, 为后面的“智能库学习模块”提供参数。通过多模式模糊识别算法, 对每条短信内容按照配置的关键字进行多关键字的模糊识别, 中文模糊识别能够对加入扰码 (例如:天*气**预报) 等情况进行模糊识别处理。3) 简繁转换模块。对短信内容进行简繁转换。比如:天气報。4) 谐音字词模块。对短信谐音语句进行分析转化。例如:谐音字 (例如:天器预报) 。5) 句型分析模块。对短信进行逻辑分析, 为后面的“智能库学习模块”提供参数。6) 智能库特征提取模块。对短信进行语义分析, 提取特征, 为后面的“智能库学习模块”提供参数。7) 智能库学习模块。对短信样本, 按照模式识别算法进行学习, 其结果成为了智能库的特征表。8) 数据传送模块。负责本项目与目前系统数据传送的模块。9) 业务处理查询模块。通过WEB方式查询用户的业务请求和查询处理情况。10) 智能库表维护模块。通过WEB方式对智能表的参数进行维护。11) 短信查询模块。通过WEB方式查询用户发送的短信和我们的下发诱导短信息。12) 统计报表生成模块。通过WEB方式生成各种报表。

1.2 网络结构

由于图1大小限制, 智能分类服务器实际使用采用了8台进行分布式处理, 系统使用hadoop2.4分布集群构建。

1.3 数据交换协议

1) 连接方式。智能模块与监控系统以TCP/IP长连接方式连接, 互为客户端和服务端。智能模块 (服务端) 接收监控系统 (客户端) 发送的需要短信分类的数据。智能模块监听端口是4455;监控系统 (服务端) 接收智能模块 (客户端) 回送的短信分类结果数据, 监控系统监听端口是6688。

2) 接口定义。数据包中的WORD和DWORD整型数值以网络字节序传输, string为以‘’为结束符的字符串。数据包的内容由“消息头” (见表1) 和“消息体” (见表2到表4) 构成。“消息类型代码”是标识该报文所要执行或响应的监控管理命令。其中, “流水号”是唯一标识发送方发出的每一次请求。接收方回复请求时, 将该流水号原样返回。“消息体”有“分类请求包”“分类查询请求包”“链路检查包”“请求响应包”等。

2 系统效果与能力

系统在过滤过程中, 凡是没有达到垃圾短信类别阈值时, 认为该短信是正常短信。本系统的查准率达到89% , 查全率达到98%, 而正常短信误分率只有1.6%。因此效果明显好于文章[4,5]的分类结果。

系统服务器负责关键字模糊分析识别、敏捷流量超门限处理、敏捷关键字超门限处理、黑白名单分析处理、基于内容的分类识别, 因此短信流量、关键字数量、白名单数量以及黑名单数量都直接影响到服务器的处理能力。根据测算, 估算出每秒钟事务处理量公式:

每秒事务处理量= 短信流量* ( 1 + ( l n关键字数量) /6) * (1+ (lg百名单数量) /6) * (1+ (lg黑名单数量) /6) /8。

目前的需求对应的每秒事务处理量计算:

每分钟的事务处理量=1097.5 * 60 = 65850, 完全达到了系统的设计要求。

摘要:为了提高垃圾短信过滤效果, 文章提出了新的垃圾短信过滤系统构建方案。从软件系统设计到网络布局, 从数据传输到系统的处理能力, 这些都体现了目前最新的应用平台要求。通过客户使用该系统后的数据表明, 查准率、查全率等统计指标有显著的提高。

关键词:短信,过滤,网络,系统

参考文献

[1]何蔓微, 袁锐, 刘建胜, 王贵新.垃圾短信的智能识别和实时处理[J].电信科学, 2008, 8:61-64.

[2]李海波, 许建明.垃圾短信的现状及过滤技术研究[J].硅谷, 2011, 24:110.

[3]周冰.垃圾短信过滤技术与应用[J].中国新通信, 2014, 6:78.

[4]李慧, 叶鸿, 潘学瑞, 等.基于SVM的垃圾短信过滤系统[J].计算机安全, 2012 (6) :34-38.

过滤系统 篇5

在线学习资源建设已经成为了当今数字化学习研究的热点问题。本文以学习过程中学习者学习行为和在线学习资源的特点为基础,结合协同过滤算法,设计了基于协同过滤技术的在线学习资源个性化推荐系统模型。实践证明,该模型可以更好地为学习者创造数字化学习环境,提高学习者的自主学习效率。

【关键词】 协同过滤;个性化推荐;学习行为;自主学习

【中图分类号】 G40-057 【文献标识码】 A 【文章编号】 1009—458x(2012)08—0078—05

一、引言

E-learning作为一种基于计算机通信技术的学习方式,可以最大限度地利用网络教学资源,学习者在学习过程中不必受到时空环境的限制,随时随地根据自身需要进行自主学习。这种新型的学习形式目前已经广泛的应用于各种在线课堂教学和技能培训领域。虽然E-learning教学资源建设已经取得了阶段性成果,但是主要有以下几个问题:(1)资源数量爆炸性增长。如今在线学习资源数量繁多,资源的质量和水平参差不齐,学习者往往无法辨别资源的优劣,导致学习资源的利用水平并不理想。(2)资源种类多样化。在线学习资源除了传统的文本类型以外,还有声音、图像、视频等多种媒体类型,媒体类型的不一致也给资源的搜索和归类带来了不便。(3)资源非线性呈现。与传统教学中的书本不同,在线学习资源一般以超文本链接联系各个知识点,学习者以非线性的方式进行学习,知识点的“跳跃性”也容易让学习者在学习时产生迷茫感。以上问题使得目前很多的E-learning系统无法根据不同学习群体的不同学习特征来提供个性化的学习支持服务。随着人们对在线学习资源认识的不断深入,具有智能分析技术的在线学习资源系统将是未来资源建设发展的趋势之一。由于学习者群体的特殊性,每位学习者都有其潜在的学习兴趣,协同过滤技术可以帮助学习者快速地发现有价值的资源,自主选择学习内容,根据自身的兴趣度来完善知识体系。因此,本文将协同过滤技术手段和在线学习资源的特征相结合,从学习者自主学习的角度来构建满足学习者个性化需要的在线学习资源系统。

二、文献综述

个性化推荐是对用户的兴趣、爱好、行为进行分析和建模,根据分析得出的结果给用户提供“个性化”、“定制化”的服务,以解决目前互联网中信息过载这一问题。目前,个性化推荐技术可以分为内容过滤推荐、规则过滤推荐和协同过滤推荐。

1. 内容过滤推荐技术

基于内容的推荐是较早提出的一种推荐技术,该算法的原理是利用概率或者机器学习技术将用户的已有兴趣表示为模型,然后与资源进行比较,通过两者之间的相似程度来为用户进行推荐。

2. 规则过滤推荐技术

基于规则的推荐是将推荐规则事先进行保存,然后通过这些规则对用户进行推荐。规则过滤推荐系统中规则的质量和数量决定了推荐的效果,从本质上说规则就是“if-else”类型的语句,这些语句分别描述了不同情境下以何种方式进行推荐。

3. 协同过滤推荐技术

协同过滤技术最早于1992年出现在Tapestry系统中,当时主要用于解决电子邮件系统的筛选问题。随着协同过滤技术的发展,协同过滤技术在商业领域取得了较大成功。国外最具代表性的协同过滤系统有Amazon和Facebook的广告系统,Amazon是根据用户购买和查看图书的记录来为其推荐可能感兴趣的书籍,Facebook则是依托其庞大的用户群,根据朋友间的兴趣来进行广告营销。与国外相比,国内的协同过滤系统研究起步较晚,目前国内比较成熟的协同过滤系统主要有当当网和豆瓣猜。当当网和Amazon的功能类似,同样是用于图书商品的推荐,豆瓣猜是通过分析用户读书记录来预测用户可能喜爱的书籍。协同过滤技术为网站增加了收入来源,增强了用户体验度,受到了用户的好评。

以上三种个性化推荐技术的优缺点如表1所示。

协同过滤技术从算法上分类可以分为基于用户的(User-based)协同过滤算法和基于项目的(Item-based)协同过滤算法。基于用户的协同过滤算法认为相似用户评价的项目之间存在相似性,可以以此来预测某个用户对该项目可能的评价;基于项目的协同过滤算法则采用计算项目之间相似度的方法来预测用户对其他项目的评价。

围绕协同过滤技术算法,国内外研究人员从个性化推荐的角度进行了一系列的研究工作。关于User-based算法,2009年Xia提出了一个改进的User-based协同过滤算法[1],在算法中引入用户加权值,来提高算法的准确度;2010年,Robert和 Istvan将分布式技术与User-based协同过滤算法相结合,提出了一个完全的分布式推荐系统[2];Zhao 和Shang 提出了一个云平台的用户协同过滤算法,提高了协同过滤算法的可扩展性能[3];Mu和Chen在User-based协同过滤算法基础上引入了犹豫度概念(Hesitation Degree)来提高协同过滤算法的准确性[4]。关于Item-based算法,2009年,Luo和Tian采用slope-one方案来应对协同过滤中的评级矩阵稀疏性问题[5];2011年,Lei 和Junzhong 将用户从众的心理和一般用户评价心理区分开来,采用均衡的基于项目的预测方法来对项目进行评价预测[6];Gao和Wu以Userrank排名的数据模型为基础计算项目之间的差异性,提高算法的推荐质量[7]。以上研究工作的重点是从协同过滤的算法效率和扩展性的角度来提高个性化推荐的精度,而对于学习者进行在线学习时产生的学习行为特殊性并没有给予太多的关注。鉴于以上问题,本文的研究重点是设计出一个基于协同过滤技术的在线学习资源模型,该模型能够利用协同过滤技术的突出优点,分析学习者的学习行为特征,为学习者推荐出可能感兴趣的学习资源,提高在线资源的利用率,促进学习者完成知识的加工和建构。

三、基于协同过滤技术的在线学习

资源个性化推荐系统模型

通过对国内外研究成果进行分析,本文将学习者在线学习过程中的学习行为与在线学习资源特点作为设计基于协同过滤技术的数字化学习资源模型的依据,在强调学习者自主学习的基础上结合协同过滤技术算法,形成一套基于协同过滤技术的在线学习资源个性化推荐系统模型,如图1所示。该模型中最重要的部分有3个:学习者行为日志和学习资源库、数字化模型以及协同过滤引擎。

1. 学习者行为日志

由于学习者在线学习的过程中不仅仅是对学习资源库中资源的简单提取,同时会产生收藏、下载、浏览和评价等学习行为。这些学习行为显性或隐性地表现了其学习兴趣,所以在该模型中,我们将学习者的学习行为收集并记录下来,挖掘学习者的学习行为轨迹,建立学习者的行为模型。

2. 学习资源库

学习资源是个性化推荐系统的基础。作为学习者学习资料的来源,学习资源库提供了文本、音频和视频等资源供学习者学习。由于资源库中资源数量庞大,推荐系统对于每个资源都加入了社会化标签,标签的引入有助于对资源内容进行分类,实现资源的统一管理和高度共享。

3. 协同过滤引擎

协同过滤引擎是个性化推荐系统的核心。该引擎将学习资源库中带有社会化标签的“孤立”资源关联起来,并且将学习者行为模型数字化为学习权重值,选择合适的推荐策略,产生候选推荐资源集,以多种媒体呈现的方式为学习者推荐其可能感兴趣的学习资源。协同过滤引擎能够有效地解决目前学习资源建设水平低,不利于学习者搜索等问题,保证了个性化推荐的质量。

四、 基于协同过滤技术的在线

学习资源个性化推荐算法

协同过滤算法基于以下假设:(1)用户之间的兴趣是具有相似性的。(2)由于用户对资源的操作评价包含了他们的兴趣偏好,所以我们以此来作为对其他用户预测项目的依据来源。传统的协同过滤算法主要分为三个步骤:获取用户-项目信息、计算查找相似用户集、产生推荐结果。协同过滤技术主要依赖于用户对项目的操作和评价,可以筛选出从内容和类型上难以区分的项目,用户之间可以共享资源和经验,而且其自动化和个性化的程度相比传统推荐方式要高出很多。但是从以上步骤我们可以看出,传统的协同过滤算法推荐结果依赖于用户对项目的评分,当用户对项目的评分过少时,推荐结果就会出现误差,这也就是我们常说的矩阵稀疏性问题。

本文将协同过滤算法引入到数字化学习领域,针对矩阵的稀疏性问题提出了一种改进的协同过滤算法。解决矩阵稀疏性问题的传统方法主要是通过给矩阵添加默认值,这种方法虽然能从一定程度上缓解矩阵的稀疏性问题,但是不能有效地对用户的兴趣倾向给出正确的分析。基于以上问题,本文给出的推荐算法的思路是在矩阵初始化时,如果用户对项目的评价较少,则挖掘用户对资源的其他行为(如:浏览、收藏、下载等),将用户的行为操作作为权重值加入到用户相似性计算中,该算法与传统的协同过滤算法相比,能够有效地解决矩阵的稀疏性问题,推荐精度也有了大幅提高。

基于协同过滤技术的在线学习资源个性化推荐算法流程如图2所示,在推荐过程中当学习者-资源矩阵过于稀疏时,该算法会对用户行为进行挖掘,填补矩阵稀疏的缺陷,以此提高推荐的精度。

1. 获取学习者—教学资源矩阵信息

首先将M个学习者对N个教学资源的评价转化为分值(主要是学习者对学习资源的显式评分),然后形成如表1所示的MN矩阵。其中第i行j列的Ei,j代表了第i个学习者对第j个教学资源的评分。

2. 计算学习者—学习资源矩阵稀疏性

首先我们给矩阵稀疏性设定一个最小限定值Φ,然后计算矩阵的实际稀疏情况。

稀疏计算公式为:

Sparsity=■,其中EvalNum为学习者对资源的评价数量,LearnerNum为学习者的数量,ResNum为学习资源数量。当Sparsity < Φ时,说明教学资源库评价矩阵过于稀疏,对用户行为进行挖掘。挖掘完成后对照表4计算和规格化用户行为的权重值Θ,添加到评价矩阵中。

3. 计算查找相似用户集

在协同过滤算法中,计算查找相似的邻居集是最为关键的一步,首先从表3取出中m个学习者对n个教学资源的评分,然后通过相似度计算方法计算出学习者之间的相似度。其中相似度计算方法主要有两种:余弦相似性算法和修正的余弦相似性算法。

(1)余弦相似性算法是最为典型的相似性计算方法,过程是将用户对项目的评分看做是n维的向量,然后通过计算其余弦的夹角来得出用户之间的相似度,其具体算法如公式(1)所示。

Sim(i,j)=■(1)

(2)修正的余弦相似性算法将余弦相似性算法做出了修改,为了减少用户主观性引入用户对项目平均评分的概念。在计算时将项目的评分减去该用户对所有项目的平均评分。其具体算法如公式(2)所示。

Sim(i,j)=■(2)

本文将步骤2中的用户行为权重值Θ加入到相似性算法中,形成了一种改进的相似性计算方法,为加入权重值的学习者-资源评价数值,改进的相似性算法如公式(3)所示。

Sim(i,j)=■(3)

相似度计算完成后将会得到与用户相似度最为接近n个用户的邻居集Z={User_1,User_2,User_3,…User_n;}

4. 产生推荐结果

一般根据上步得出的邻居集中用户对项目Itemn,s的评分,就可以预测出目标用户对该项目的评价,并且产生最终的推荐结果。因为学习者学习和评价的风格有所不同,所以本文采用如下推荐方式。

Pj,k=■j+■sim(j,x)(R■-■x)/■sim(j,x) (4)

在公式(4)中Pj,k为推荐系统预测的学习者j对资源k的评分,■j为学习者j所有已经评分分值的平均值,Z为上一步得出的最近邻居集,最后取出相似度最高的N个资源,得出推荐结果,推送给学习者。

五、基于协同过滤技术的在线学习

资源个性化推荐系统应用

本文在上述研究成果的基础上,结合在线学习资源和协同过滤技术的特点,设计开发了基于协同过滤技术的在线学习资源个性化推荐系统(如图3所示),并作为推荐模块应用于网络培训教学中。与传统的在线培训系统相比,在线学习资源个性化推荐系统能有效收集网络教学中学习者的反馈信息,为其他学习者提供需求相似的资源列表,与学习者进行交互,节省在线学习者获取信息和知识的成本。接下来,我们以该推荐系统中实际的用户数据为例,阐述系统是如何为用户推荐个性化资源的。

首先,个性化推荐系统中的行为收集模块从用户日志文件中收集用户行为,建立用户行为模型(如表4所示),并将其数据化。

然后,推荐系统中的用户显示评价模块收集用户主观评价数据(分值代表用户对资源的喜好程度,分值越大代表用户对该资源的兴趣度越高,如表5所示)。

最后,以用户的行为数据和评价数据为依据,计算资源相似度,产生用户最近邻居集,预测出用户n在使用资源n时可能感兴趣的资源列表(如表6所示)。该资源列表由推荐系统自动分析生成,以此来提高学习者的学习效率。

六、结论与展望

本文首先分析了传统协同过滤技术普遍存在的问题,进而提出了一种改进的协同过滤算法,该算法引入了用户行为权重值概念,缓解了协同过滤算法普遍存在的冷启动问题。其次将协同过滤技术与在线学习资源相结合,设计了在线学习资源个性化推荐系统,实现了学习者自主学习,自主评价,资源共享等功能,提升学习者的学习效果。虽然在线学习资源内容不会发生变化,但是随着用户学习的不断深入,学习兴趣和方向可能不断变化,如何根据用户兴趣的变化进行实时地推荐,需要进行深入的研究。

?眼参考文献?演

[1] Xia Jianxun.An Improved Similarity Algorithm Based on Hesitation Degree for User-Based Collaborative Filtering[A]. Conference on Communication Faculty [C]. Nanning, PEOPLES R CHINA: Proceedings of 2009 Conference On Communication Faculty,2009,104-108.

[2] Ormandi,Robert;Hegedus,Istvan.Overlay Management for Fully Distributed User-Based Collaborative Filtering[A]. 16th International Euro-Par Conference on Parallel Processing[C]. Ischia, ITALY:EURO-PAR 2010 PARALLEL PROCESSING PT I,2010,446-457.

[3] Zhao Zhi-Dan;Shang Ming-Sheng .User-based Collaborative-Filtering Recommendation Algorithms on Hadoop[A]. 3rd International Conference on Knowledge Discovery and Data Mining[C]. Phuket, THAILAND: Third International Conference On Knowledge Discovery And Data Mining Proceedings,2010,478-481.

[4] Mu,XW; Chen, Y. An Improved Similarity Algorithm Based on Hesitation Degree for User-Based Collaborative Filtering[A]. 5th International Symposium on Intelligence Computation and Applications[C]. Wuhan, PEOPLES R CHINA: Advances In Computation And Intelligence,2010,261-271.

[5] Luo,Q;Tian,X.A Personalized Recommendation Algorithm Combining Slope One Scheme and User Based Collaborative Filtering[A] International Conference on Industrial and Information Systems[C]Hankou,China: 2009 International Conference On Industrial And Information System,Proceeding,2009,152-154.

[6] Lei Ren; Junzhong Gu.An Item-based Collaborative Filtering Approach based on Balanced Rating Prediction[A] 2011 International Conference on Multimedia Technology[C].Hangzhou,China: 2011 International Conference on Multimedia Technology,2011.

[7] Gao,M; Wu, ZF.Userrank for item-based collaborative filtering recommendation[J]. Information Processing Letters,2011,(9):440-446.

收稿日期: 2012-04-15

作者简介:孙歆,硕士生,浙江工业大学教科学院(310014)。

王永固,副教授,博士,浙江工业大学教科学院副院

长(310014)。

邱飞岳,教授,博士,浙江工业大学教科学院院长,

现代教育技术研究所所长(310014)。

陶瓷过滤机脱水系统研究 篇6

1 陶瓷过滤机的工作原理

1.1 高度真空的形成原理

1转子;2滤室;3滤板;4滤饼;5矿浆槽;6真空桶;7超声装置

圆盘真空过滤机,其滤盘采用网格滤板和滤布所构成的过滤介质,由于滤布的孔径较大,磨损也较快,且容易漏气,所以圆盘过滤机在作业时需要配备具有大功率的真空抽吸设备,而且在反吹卸料时也存在网格滤板和滤布中的水反流入滤饼的现象,使过滤工作的效率无法得到高真空度保证,以及滤后产品低水分率的保证。陶瓷过滤机陶瓷滤盘的亲水微孔在过滤时发生毛细效应,在负压状态下,亲水陶瓷滤盘和水之间存在表面张力,从而阻碍微孔中的水不被全部抽空,而存在于微孔中的水又可以阻止外界空气的进入,所以只要很小功率的真空抽吸设备,便可实现较高的真空度要求。

1.2 陶瓷过滤机的脱水工作原理

陶瓷过滤机在工作时,主机由分配阀的控制转子循环工作,转子循环一周,可完成吸浆、脱水、卸料和滤盘反冲洗4个过程,转子循环运转,便可实现设备的连续工作。其具体工作原理如图1所示。

1)滤饼

过滤时矿浆进入到过滤机的矿浆本槽里,滤盘浸没在矿浆当中,通过真空泵形成负压的工作条件后,水便从滤盘微孔进入到滤液通道并到达真空桶,固体矿料在滤盘的表面会形成堆积层,也就是滤饼;滤饼在转子的带动下,离开矿浆槽进入到干燥区,在负压的作用下,滤饼被继续脱水,水仍然会从滤液通道排入真空桶内,这也是滤饼的干燥过程;滤饼在干燥以后进入到卸料区,在陶瓷板卸料口两侧的固定钢玉刮刀会将滤盘上的滤饼自动刮除[1]。

2)滤盘

陶瓷过滤机制滤盘在过滤时很容易被微粒矿物质所阻塞,需要进行及时的清洗。滤盘可采用反冲清洗法、超声波清洗、混合清洗三种方法进行清洗。

2 陶瓷过滤机脱水系统的三种排液装置

2.1 滤泵排液装置及常见故障分析

滤泵排液装置主要包括分配阀装置、真空桶、真空泵、滤泵、外排气动阀和排液管等装置组成。当陶瓷过滤机在运行时,滤液在负压条件的作用下经过陶瓷板的微孔、分配阀流到真空桶内,真空桶内的滤液经滤液泵进行外排。滤液泵和真空桶之间必须有2.5m~3.5m的高差,以满足补偿滤液泵的汽蚀余量[2]。滤泵排液装置的脱水系统,通常会发生循环泵机封损坏频繁、叶轮损坏、泵头损坏、真空泵叶轮磨损以及气动球阀磨损等问题题,,循循环环泵泵机机封封损损坏坏的的原原因可能是循环泵克服真空桶内的负压影影响响而而发发生生损损坏坏,,或或者者循循环泵受到自身的汽蚀余量影响。如发生生循循环环泵泵机机封封损损坏坏现现象象,,唯一的处理方法就是更换循环泵机封。

2.2 高差排液装置

高差排液装置主要有分配阀装置、真空桶、真空泵、排液管和水箱等装置组成,当陶瓷过滤机运行时,滤液在负压条件作用下经过陶瓷板微孔,分配阀流入真空桶中,再经滤液泵外排到水箱内,滤液泵与真空桶之间必须保持10m的高差,才能保证克服真空内-0.092MPa的负压条件。高差排液装置的脱水系统故障主要发生在真空泵叶轮的磨损和压力变送器的损坏等。以上部件一般在正常的使用寿命之内不易损坏,如长期使用存在老化状态,则容易损坏。

2.3 自动排液装置

自动排液装置主要有分配阀装置、真空上桶、真空下桶、真空泵、外排阀门等装置组成。自动排液装置因为不需要将真空桶安装在高处,也不需要滤液泵装置,所以脱水系统相对简化。当陶瓷过滤机运行时,滤液可在负压的作用下经陶瓷微孔、分配阀流到真空桶内。而当真空桶抽水时,其主、副真空泵分别对上桶和下桶进行抽气,上桶的滤液经阀门流到下桶。在下桶液位达到一定限度时,外排阀门便会打开,下桶开始排水。而当下桶的液位达到一定下限位置时,副真空泵就会对下桶抽气,上桶的渡液就会经由阀门注入下桶,如此反复的循环排水。自动排液装置的脱水系统故障主要有真空泵叶轮磨损、气动球阀磨损等。这些部件一般在一年之内不容易受损,但如果长期使用则容易损坏。自动排液装置的故障率,虽然比高差排液装置的故障率要高一些,但是它对现场环境的要求较低,所以值得大力推广。

3 陶瓷过滤机在脱水实践的使用管理

3.1 滤液泵排液问题的使用管理

陶瓷过滤机在使用过程中如果采用自动排液装置,应用时容易出现当矿物过多时,过滤干矿渣和脱滤液比设计值高的情况,从而导致滤液泵的表现与设计流量不配套问题。所以在进行滤液泵的选型时,应该按照流量范围选择泵型。如果条件允许,可采用高差自动排液装置。

3.2 设备负荷波动问题的使用管理

陶瓷过滤机的负荷会随着浆液浓度的变化而产生不同的负荷变化,如果变化过于频繁和剧烈对设备会造成一定的损害。在实际工作中要根据矿浆的浓度变化,对过滤机的转速进行及时的调整,当浓度较高时,过滤机主轴的转速应该保持在较高的速度;当浓度较低时,则要降低过滤机制转速;如果过滤的浓度小于40%时,要停机进行必要的清洗。

3.3 搅拌器能力问题的使用管理

当矿物的密度过大时,会产生沉降速度过快,矿渣在陶瓷过滤机的槽内沉积过多的现象,长时间的沉积会导致陶瓷过滤机的搅拌器压死现象。所以搅拌器在设计时应该考虑根据矿物的密度特点,适当调整搅拌器的搅拌力,以避免出现死角现象。

3.4 陶瓷过滤机过滤板微孔堵塞问题的使用管理

过滤板微孔堵塞是陶瓷过滤机经常出现的问题,长时间的使用和清洗不及时、不到位就会出现此种问题。通常,当过滤机在连续工作6小时~8小时后,就应该进行一次混合清洗。反冲清洗时,反冲清洗的水压和水量要保证在规定值范围内。

4 结论

陶瓷过滤机各部分装置的性能,直接影响了陶瓷过滤机的脱水功能,比如;陶瓷板的孔径孔隙率、排液装置的类型、自动调速装置的性能等。所以产生过程中必须通过稳定的生产工艺,进行有效的过程控制,并对陶瓷过滤机的每部分性能,进行严格的质量检测,以保证陶瓷过滤机制整体质量。

参考文献

[1]龚静,李棋政,魏泉.陶瓷过滤机三种排液装置的比较分析[J].有色金属,2011(9):286.

基于过滤驱动的文件保护系统 篇7

数据加密是计算机数据的安全常用的保护手段,它使用各种加密算法对重要文件进行加密,使盗窃者无法获得真实的数据内容。市场上很多加密软件是基于应用层开发,由于其没有与操作系统集成,用户使用加密文件时每次使用都要输入密码,使用起来不方便。虽然微软提供的EFS系统的加/解密处理过程位于操作系统内核,得到系统内核的保护,可以进行文件透明加/解密,使用起来也很方便,但是它的缺点也是很多:安全控制需要在NTFS文件系统上使用;加密算法的安全性相对较低,且不能够更改;EFS只能针对指定文件和文件夹进行加密,而不能对某一类型的文件进行加密,灵活性不够。

文件系统过滤驱动技术可以使文件保护与Windows系统紧密结合,在内核级实现了实时安全的文件加/解密,可以进行实时的文件访问控制,适用于Windows 2003/XP系统下的多种文件系统格式,不依赖于具体的应用程序。

1 文件系统过滤驱动程序工作原理

Windows驱动模型(WDM)采用的是分层的结构。应用程序发出对磁盘设备的操作请求后,由I/O管理器构造相应的IRP,发往下层的文件系统驱动程序,文件系统驱动程序则把相对应于文件系统的操作转换为相对应于磁盘设备的操作,并通过I/O管理器来调用磁盘驱动程序。

根据WDM的特点,可以构造一个位于文件系统驱动程序之上的一种特殊的中间层驱动程序,我们称为文件系统过滤驱动程序,文件系统过滤驱动程序的位置如图1所示。有了文件系统过滤驱动程序后,I/O管理器构造的IRP则会先送给文件系统过滤驱动程序,然后再由文件过滤驱动程序在I/O管理器的帮助下将IRP传给下层的文件系统驱动程序。

因此,我们可以在文件系统过滤驱动程序这一层实现对文件系统操作的截取、监控甚至替换工作,由此实现许多新功能:(1)防病毒引擎。在系统读写文件时,捕获读写的数据内容,对内容检测是否含有病毒代码。(2)对用户透明的文件加解密。在文件写过程时对数据进行加密,在读文件的过程中进行解密。(3)对数据的读写进行访问控制。可以防止恶意进程对受保护文件的进行破坏。

2 文件保护系统设计

2.1 系统结构设计

文件保护系统的功能主要由文件系统过滤驱动、密钥管理、加/解密处理、配置程序和访问控制组成。各模块之间的关系如图2所示。文件系统过滤驱动是系统的核心,利用它实现对文件操作的截获,与系统中的其它模块进行交互,控制整个系统。密钥管理负责密钥的产生、分配、更换和销毁等方面管理工作。加/解密处理使用密钥对文件进行加/解密运算,也是对用户透明动态加/解密的实现部分。配置程序是用户用来定制和修改策略文件的模块。访问控制根据配置程序生成的策略配置文件对受保护的文件进行加/解密前的处理,包括安全目录识别、用户身份识别、安全目录访问控制、密钥文件访问控制和共享目录访问控制等,有利于提高文件保护系统的安全性和效率。

2.2 文件系统过滤驱动程序的实现

(1)构造文件系统过滤驱动对象,并附着在要过滤的文件系统对象之上。

(2)创建文件系统过滤驱动程序所需的分派例程,用于对IRP进行预处理。分派例程是用来响应应用程序的打开、读、写、关闭等I/O请求的一组回调函数,这些函数由系统在相应情况下调用。

(3)取消对目标设备的绑定过滤。

实现文件系统过滤驱动程序除了上述三个必要方面外,还有一些功能需要加入进来。如:实现文件系统过滤驱动程序与上层应用程序通信。实现过滤驱动的动态附着,以便能够过滤新加载的文件系统。

2.3 密钥管理

密钥管理负责密钥的产生、分配、更换和销毁等方面管理工作。文件保护系统采用两类加/解密算法,在保证安全性的同时保证了加密效率。对称加密算法的加密速度较快,但安全性较低,适合对文件内容进行加密。非对称加密算法安全性较高,但加密速度较慢。适合用来对加密密钥进行加密,这样有助于提高密钥的安全性,也方便文件共享。

在安全目录中对每一个文件都随机分配一个不同的文件密钥(文件密钥可以通过合理增加密钥长度提高破解密钥的难度,在保证一定加密速度的情况下适当地增强安全性),该目录下的所有文件密钥(不包括子文件夹)被存放在该目录下的同一个密钥文件中。密钥文件中存放着多条文件密钥信息,文件密钥信息的主要结构是:被加密的文件名、所有者、共享者、加密密钥等内容。密钥文件存放在安全目录中,每一个目录(包括子目录)都有一个。密钥文件是在安全目录创建时有密钥管理模块自动生成,删除安全目录及子目录时删除密钥文件。

对密钥文件我们采取两类保护措施:一是对密钥文件中的文件密钥信息使用文件所有者的公钥进行加密,这里不是对整个密钥文件整体用公钥加密,而是对每个文件密钥单独加密。而创建、修改或删除文件密钥都需要文件所有者插入私钥U盘才能进行。二是通过文件保护系统的访问控制模块对密钥文件进行保护,不准非授权程序进行创建、修改或者删除。通过这两类措施,大大提高了文件密钥安全性。

2.4 加/解密处理

加/解密处理模块是位于内核模式中实现的,这样可以利用操作系统来提高加/解密过程的安全。在文件系统过滤驱动程序的读写处理中实现对文件的加密和解密。对拦截上层发送的读写IRP,通过访问控制检查判断是否为合法访问,如是非法访问将阻止访问继续,对于合法访问还要判断是否为共享访问,共享访问不进行加解密,直接采用默认的处理。对于合法的非共享访问,按以下的流程进行访问,流程如图3所示。

应用程序写操作时,文件系统过滤驱动程序从I/O管理器截获IRP中的明文后,若该文件是已建文件,从密钥文件中取出文件密钥,从文件所有者私钥U盘中读出私钥,用私钥解密文件密钥,再用文件密钥加密明文并将其向下层驱动程序传递,在完成方法中恢复缓冲区的明文;若该文件是新建文件,首先由密钥管理模块生成文件密钥,用文件密钥加密明文的同时,还利用文件所有者公钥加密文件密钥并保存在密钥文件中。

应用程序读操作时,文件系统过滤驱动程序从文件驱动程序截获密文后,从密钥文件中读取文件对应的文件密钥,从文件所有者私钥U盘中读出私钥,用私钥解密文件密钥,在完成方法中用文件密钥解密密文并向上层传送明文至应用程序。

2.5 访问控制

用户使用配置程序将配置好的策略生成策略文件,以加密的形式存放在操作系统下。系统的访问控制模块可以直接读取并解密策略文件,然后根据策略文件对保护文件进行加解密前的处理。访问控制功能主要有以下几个方面。

密钥访问控制:由于密钥的特殊性,除密钥管理模块外,不允许任何进程直接创建、修改、删除或读取该文件,密钥只允许过滤驱动程序通过密钥管理模块访问。用户访问控制:对于能提供私钥的文件所有者用户和合法的共享用户可以访问文件。安全文件识别:为提高工作效率,文件系统过滤驱动程序只处理访问安全文件的IRP,不处理访问非安全文件的IRP。

3 结束语

本文提出的文件保护系统适用于Windows XP/2003操作系统,属于操作系统内核程序,系统的安全性得到操作系统的安全保障。系统采用了双密钥体系增强了文件系统的安全性,经测试表明,使用双密钥体系的文件加/解密与文件直接明文读取在效率上差距不大,具有较好的实用性。加密算法可以灵活采用并且不公开,提高了加密的安全性。系统也存在一定风险性,文件密钥保存在密钥文件里,如果该文件损坏或丢失将会导致密文无法解密。今后的研究重点放在密钥文件的安全保护和高效访问方面。

摘要:数据的安全保护是当前网络安全领域研究的热点,本文提出了一种基于文件系统过滤驱动的文件保护系统。该文件保护系统在操作系统内核状态下实现了对文件的透明加/解密,并提供了访问控制、密钥管理等功能。加/解密算法可以灵活采用并且不公开,提高了加密的有效性。文件以密文的形式保存,且只能被合法用户以非常安全的方式访问。用户使用起来非常方便,只需提供自己的私钥即可。

关键词:文件系统过滤驱动,透明加密,文件保护

参考文献

[1]胡宏银,姚峰,何成万.一种基于文件过滤驱动的Windows文件安全保护方案[J].计算机应用.2009.

[2]于飞,胡平.基于文件过滤驱动的局域网安全系统设计[J].计算机工程与设计.2008.

[3]沈玮,王雷,陈佳捷.基于文件系统过滤驱动的加密系统设计与实现[J].计算机工程.2009.

[4]王全民,周清,刘宇明,朱二夫.文件透明加密技术研究[J].计算机技术与发展.2010.

[5]王德明,刘淳,邱俊山.基于过滤器驱动程序的文件保护系统软件设计[J].四川理工学院学报(自然科学版).2006.

[6]Chris Cant.Windows WDM设备驱动程序开发指南[M].北京:机械工业出版社.2005.

智能垃圾邮件过滤系统研究与实现 篇8

随着计算机技术的快速发展, 特别是网络开放性、共享性、互联程度的扩大及计算机的普及, 互联网的影响已经渗透到社会生活的各个领域。基于Internet的电子邮件更是得到了广泛的应用, 已经成为人们日常交流、沟通的主要手段和企业运转不可或缺的重要组成部分。然而, 电子邮件在为人们服务的同时, 也不可避免地被另外一些人用作相反的目的。近年来, 一些公司、团体或个人为了商业利益或政治目的, 在未经邮件用户同意的情况下, 利用电子邮件发送大量商业广告及各种不良信息, 影响极坏、后果非常严重。

叶斯决策就是在不完全情报下, 对部分未知的状态用主观概率估计, 然后用贝叶斯公式对发生概率进行修正, 最后再利用期望值和修正概率做出最优决策。反垃圾邮件系统的设计思想, 就是通过贝叶斯算法, 对邮件内容中的关键字与系统中事先形成的字典中的对应词语进行概率计算, 通过分析最终得出概率辨别邮件的性质。本系统将贝叶斯理论应用于邮件过滤, 进行系统的详细设计并进行功能的实现。

1 贝叶斯理论

在过滤器中, 现在表现最好的应该是基于评分 (score) 的过滤器, 因为我们很容易就可以明白对付狡猾的垃圾邮件, 那些黑白名单、关键词库或者HASH等过滤器是多么的简单。评分系统过滤器是一种最基本的算法过滤器, 也是贝叶斯算法的基本雏形。它的原理就是检查垃圾邮件中的词或字符等, 将每个特征元素 (最简单的元素就是单词, 复杂点的元素就是短语) 都给出一个分数 (正分数) , 另一方面就是检查正常邮件的特征元素, 用来降低得分的负分数。最后邮件整体就得到一个垃圾邮件总分, 通过这个分数来判断是否spam。这种评分过滤器实现了自动识别垃圾邮件的功能, 但是依然存在一些不适应的问题。

特征元素列表通过垃圾邮件或者正常邮件获得。要提高识别垃圾邮件的效果, 就要从数百邮件中学习, 这降低了过滤器效率。对于不同人来说, 正常邮件的特征元素是不一样的。

获得特征元素分析的邮件数量多少是一个关键。如果垃圾邮件发送者也适应了这些特征, 就可能让垃圾邮件象正常邮件。这样的话, 过滤特征就要更改了。

每个词计算的分数应该基于一种很好的评价, 但是还是有随意性。比如, 特征就可能不会适应垃圾邮件的单词变化, 也不会适应某个用户的需要。

贝叶斯理论现在在计算机行业中应用相当广泛, 这是一种对事物的不确定性描述。贝叶斯算法的过滤器就是计算邮件内容中成为垃圾邮件的概率, 它首先从许多垃圾邮件和正常邮件中进行学习, 因此, 效果将比普通的内容过滤器更优秀, 错报就会更少。贝叶斯过滤器也是一种基于评分的过滤器。它不仅仅是一种简单的计算分数, 更从根本上来识别。它采用自动建立特征表的方式, 首先分析大量的垃圾邮件和大量的正常邮件, 算法分析邮件中多种特征出现概率。贝叶斯算法计算特征的来源通常是:邮件正文中的单词、邮件头 (发送者、传递路径等) 、其他表现。

2 反垃圾邮件过滤系统运行流程图

贝叶斯是基于概率统计的性质, 根据不断出现的新垃圾邮件和正常邮件来调整垃圾邮件集和正常邮件集的概率。反垃圾邮件系统的基本流程如图1所示, 通过这个过程可以比较准确的判断出垃圾邮件集和非垃圾邮件集。

邮件包含着大量的信息, 需要对邮件进行预处理。本系统采用正则表达式对邮件进行词抽取, 以利于系统进行判别。基于贝叶斯的反垃圾邮件系统过程简单描述如下: (1) 收集大量的垃圾邮件和非垃圾邮件, 建立垃圾邮件集和非垃圾邮件集; (2) 提取特征来源中的独立字符串, 例如AAA等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件; (3) 每一个邮件集对应一个哈希表, hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系; (4) 计算每个哈希表中TOKEN串出现的概率P= (某TOKEN串的字频) / (对应哈希表的长度) ; (5) 综合考虑hashtable_good和hashtable_bad, 推断出当新来的邮件中出现某个TOKEN串时, 该新邮件为垃圾邮件的概率; (6) 建立新的哈希表hashtable_probability存储TOKEN串ti到P (A|ti) 的映射; (7) 根据建立的哈希表hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性。当新到一封邮件时, 按照步骤 (2) , 生成TOKEN串。查询hashtable_probability得到该TOKEN串的键值。假设由该邮件共得到N个TOKEN串, t1, t2…tn, hashtable_probability中对应的值为P1、P2、…PN, P (t1、t2、t3…tn) 表示在邮件中同时出现多个TOKEN串t1、t2…tn时, 该邮件为垃圾邮件的概率可由复合概率公式计算而得。

3 系统详细设计

3.1 系统类图

本系统采用面向对象程序设计语言实现, 其核心类的类图如图2所示:

3.2 系统序列图

本系统主要功能分为词典载入, 邮件测试两大类, 下面通过序列图对着两大功能进行描述。

数据载入序列图如图3所示:

样本测试序列图如图4所示:

3.3 系统协作图

数据载入协作图如图5所示:

4 系统功能的实现

本系统最核心的功能就是能够对大量的邮件进行快速准确的分析和判断。系统中自定义的数据词典, 对于经常出现的部分词语都有很准确的概率计算, 并且基于贝叶斯理论这一优点, 系统有很强的自学功能, 能够随着邮件测试内容的变化, 随时添加新的信息。

4.1 数据载入

本系统在界面设计方面主要包括了3个方面的功能模块, 模块之一是数据载入界面, 如图6所示:

4.2 测试

第三个就是测试界面, 也就是判断的界面, 通过这个界面可以很清楚的得知邮件的性质是垃圾邮件还是非垃圾邮件。如图7所示:

5 结束语

对于这款基于贝叶斯理论的邮件过滤系统, 我们的设计前提是利用贝叶斯理论的计算公式, 分析计算大量的邮件, 形成一个数据库作为依据, 然后再用公式计算出邮件的概率, 通过分析概率来进一步判断邮件的性质。

通过设计, 已经基本实现了预先定义的功能, 并且能够过滤出垃圾邮件, 只是在预定义的数据库上信息量还不是十分强大, 这是本系统需要改进的地方, 在今后的设计过程中, 我们也会在这方面做进一步的加强。

参考文献

[1]落红卫, 刘建毅.智能邮件过滤系统的研究与实现[J].机电产品开发与创新, 2003 (1) .

[2]谭立球, 谷士文.个人化电子邮件自动过滤系统的设计[J].计算机应用, 2002 (6) .

[3]张长君.电子邮件的一种过滤方法[J].计算机安全, 2002 (12) .

[4]王庆波, 方滨兴.电子邮件过滤检测系统的设计与实现[J].计算机应用研究, 2000 (10) .

串口监视过滤驱动及应用系统开发 篇9

1 系统综述及架构分析

1.1 系统综述

串口监视主要由串口过滤驱动程序及串行数据监视显示应用程序两部分组成。

WDM模型假定硬件设备可以有多个驱动程序,每个驱动程序都有自己管理设备的方法。WDM根据设备对象堆栈来完成驱动程序的分层。一个过滤器驱动程序,该驱动程序可位于功能驱动程序的上面或下面,它通过过滤流经它的IRP来修改设备的行为。

处于功能驱动程序之上的过滤器驱动程序称为上层过滤器;处于功能驱动程序之下的过滤器驱动程序称为下层过滤器。虽然这两种驱动程序本身用于不同的目的,但创建这两种驱动程序的机制完全相同。实际上,创建过滤器驱动程序就像创建任何其他WDM驱动程序一样,都有DriverEntry例程、AddDevice例程、一组派遣函数等。

上层过滤器驱动程序的用途是帮助支持这样的设备,这种设备的大多数方面都像其所属类的普通设备,但有一些附加功能。可以依靠一个通用的功能驱动程序来支持设备的普通行为。为了处理设备的附加功能,可以写一个上层过滤器驱动程序来干预IRP流。举一个例子,假设存在一个烤面包机设备的标准类,并且已经有人为其写了一个标准驱动程序。再假设特殊烤面包机有一个高级的面包片弹出特征,它可以把烤好的面包片弹到两英尺高的空中。而控制这个AWE特征的工作就是上层过滤器驱动程序的任务。

1.2 架构分析

串口过滤驱动程序:处于Windows串口驱动程序之上,其分析截取流经它的IRP所携带的串行口收发数据,并通过与应用程序交互将所截数据显示给用户查看,同时将数据向下层驱动发送以运行正常的串行操作,从而达到分析相关数据而不影响串口正常工作方式的串口监视的目的。

具体到本系统中串口过滤驱动程序就建立了一个串口过滤设备对象,其处于串口功能设备对象之上分析流经串口的所有数据,并将其保存起来。

与此同时,驱动程序还建立了一个数据交互设备对象,其主要用于完成与应用控制程序之间传递参数、读取数据等工作。

两个设备对象密切配合共同将流经串口的所有数据分析、传递给应用控制程序,以达到串口监视的功能。

串行数据监视显示应用程序:主要用于动态加载串口过滤驱动程序、发送串口号及交互事件、共享内存地址等必要参数,并开启监视线程接收串口过滤驱动程序的监视数据显示在用户终端上。程序使用VC6.0开发,运行独立稳定,交互性强。

下面的章节将分别具体分析系统两部分的原理实现及应用运行应用方法。

2 串口过滤驱动程序

2.1 开发方法及步骤

一旦最初的分析和设计完成,就要开始编写代码了。按照以下的步骤进行可以减少调试的时间。

(1)确定驱动程序需要哪些内核模式对象。

(2)确定驱动程序需要哪些上下文环境或者状态信息和这些信息的存储位置。

(3)首先编写DriverEntry和Unload例程,最初不要增加即插即用支持,这样允许通过控制面板手动地测试驱动程序的装载和卸载。

(4)添加处理IRP_MJ_CREATE和IRP_MJ_CLOSE的操作及一些不需要进行设备的访问例程。然后可以使用一个简单的WIN32程序调用CreateFile和CloseHandle来测试。

(5)添加寻找和分配驱动程序的硬件的代码,还有在驱动程序被卸载后的重新分配硬件的代码。如果硬件支持即插即用,这一步测试硬件和驱动程序的自动加载能力。

(6)添加处理IRP_MJ_XXX函数的派遣例程,最初的例程应该没有使用物理设备,后来新的代码应该使用简单的WIN32程序进行测试,例如ReadFile和WriteFile调用,或者其它支持的函数。

(7)最后完成Start I/O例程、ISR和DPC例程。现在可以使用真实的数据和硬件进行测试。

2.2 头文件编写及函数、变量、结构、常量的定义

头文件中首先定义了I/O控制代码,其主要用于DeviceIoControl API函数与驱动程序交互时的功能定义。

DeviceIoControl的Code参数是一个32位数值常量,如图1所示。

这些域的解释如下:

Device type (16位,CTL_CODE宏的第一个参数) 指出能实现这个控制操作的设备类型。

访问代码 (“A”占2位,CTL_CODE的第四个参数) 指出使用设备句柄发出这个控制操作时,应用程序必须具有的访问权限。

Function code (12位,CTL_CODE的第二个参数) 指出该代码描述的是哪一个控制操作。Microsoft保留了该域的前半部分,从0到2047的值。因此只能使用从2048到4095之间的值。

缓冲方式 (“M”占两位,CTL_CODE的第三个参数) 指出I/O管理器如何处理应用程序提供的输入输出缓冲区。

例如:在头文件中的

还有许多这样的功能代码共同完成了从应用程序到驱动程序的交互控制。

接下来在头文件中定义了一些结构,其他主要用于IRP传递时携带相关数据。

例如:在头文件中的

DEVICE_EXTENSION, *PDEVICE_EXTENSION;其主要用于设备对象的DeviceExtension (PVOID) , 该结构可用于保存每个设备实例的信息。I/O管理器为该结构分配空间, 但该结构的名字和内容完全由用户决定。程序中具体使用它来保存及获取过滤设备对象、绑定的设备对象。

IO_REQ, *PIO_REQ;其主要用于将截取的数据保存至此结构队列链表中,以方便应用程序来读取。

最后在头文件中声明了一些驱动例程,其用于完成驱动程序的全部工作。

例如:在头文件中的

DriverEntry是内核模式驱动程序主入口点, 一个驱动程序可以被多个类似的硬件使用,但驱动程序的某些全局初始化操作只能在第一次被装入时执行一次。而DriverEntry例程就是用于这个目的。后面的章节还将重点分析实现此例程。

2.3 驱动分析及实现

IRP是I/O request packet的缩写,即I/O请求包。驱动与驱动之间通过IRP进行通信。而使用驱动的应用层调用的CreatFile, ReadFile, WriteFile, DeviceIoControl等函数,说到底也是使用IRP和驱动进行通信。

一个IRP由两部分组成。首先是头部或者叫包的固定部分,是一个IRP结构。紧跟在这个头部之后的是I/O stack locations,这是一个IO_STACK_LOCATION结构的数组,这个数组中元素的个数是根据情况而定的,由IoAllocateIrp时的参数StackSize决定。而StackSize通常由IRP发往的目标DEVICE_OBJECT的+30 char StackSize决定。而这个StackSize是由设备对象连入所在的设备栈时,根据在设备栈中位置决定的。

一个驱动程序的应用层程序调用DeviceIoControl,让驱动程序完成一个任务。DeviceIoControl中会申请一个Irp,初始化,然后用这个Irp调用Io CallDriver发往设备栈的最高层。

IoCallDriver会根据Irp中的当前IO_STACK_LOCATION中的+00 byte MajorFunction,调用发往设备对象所属驱动中的相应函数。

因此驱动程序根据其要完成功能的不同可能需要处理几种类型的IRP,不同类型的IRP将对应不同的处理例程。在这里介绍本程序中发挥重要功能的IRP例程。

下面将分别分析实现它们。

2.3.1 DriverEntry驱动程序入口

每一个Win2000内核模式或者WDM驱动程序都有一个DriverEntry例程。这个例程初始化各个驱动程序的数据结构和准备其他驱动程序部分的运行环境。

在加载驱动程序的时候,I/O管理器调用DriverEntry例程。DriverEntry例程运行的IRQL是PASSIVE_LEVEL,这意味着它有权访问分页的存储器资源。

DriverEntry例程收到一个指向它自己的驱动程序对象指针,这个指针必须初始化。它也收到一个包含注册表中驱动程序的服务键的UNICODE_STRING结构。WDM驱动程序中很少使用这个注册名,内核模式的驱动程序依赖这个字符串去取出在系统注册表中存储的驱动程序特定的参数。这个注册的字符串的形式大概是HKEY_LOCAL_MACHINESystemCurrentControlSetServicesDriverName。

虽然WDM和内核模式的驱动程序有些不同,但大体上一个DriverEntry例程的执行步骤如下:

(1) DriverEntry例程查找它所控制的硬件,被分配的硬件标识在本驱动程序的控制之下。

(2)用指向其他驱动程序例程入口点的指针初始化来初始化驱动程序对象。

(3)如果驱动程序管理一个多功能的控制器,使用IoCreateController去创建一个控制器对象,然后初始化控制器的extension。

(4)使用IoCreateDevice去为每一个控制的物理或者逻辑设备创建一个设备对象,然后初始化设备extension。

(5)通过IoCreateSymbolicLink函数使这个设备可以被Win32子系统看见。

(6)将设备与一个中断对象联系起来,如果ISR需要使用DPC对象,就在这一步创建和初始化它们。

(7)重复第4步到第6步,直到完成这个驱动程序所有的物理的和逻辑的设备。

(8)如果成功DriverEntry例程应该返回STATUS_SUCCESS给I/O管理器。

Return value

STATUS_SUCCESS或者STATUS_XXX

如果DriverEntry例程因为某个原因而使初始化的过程失败,就应该释放任何占用的资源,返回合适的NTSTATUS失败代码给I/O管理器。

在本程序中,首先为驱动程序能处理IRP请求指定派遣函数,例如:

随后调后Add_IoControlDevice (DriverObject, RegistryPath) 用于创建一个与应用程序进行交互数据的设备对象。在Add_IoControlDevice中首先创建设备对象。

一旦硬件被识别和分配后,下一步是为每一个物理的或者逻辑的设备创建一个设备对象,大量的工作被IoCreateDevice函数作了,它的出口参数是设备对象的句柄,包括一个相应的设备extension。这个函数还连接新的设备对象到这个驱动程序对象管理的设备列表中。

IoCreateDevice的DeviceType参数是一个16-bit的值,这个值描述了被添加的设备的种类,微软保留了前一半范围给了定义,好的设备类型。剩下的32767个设备类型可以被定义,要小心定义不要与其他制造商的设备冲突。现在,微软预定义大约30种设备类型,这些预定义的类型值被赋予了象征性的名字,它的形式是FILE_DEVICE_XXX,例如,FILE_DEVICE_DVD。

实际代码如下:

接着再为设备命名,Windows中的设备可以有多个名字,被IoCreateDevice函数指定的名字是Windows执行部件识别设备的名字,这个内部的名字对于Win32用户模式的应用程序来说是隐藏的,为了暴露这个设备给Win32子系统、Win16子系统或者虚拟DOS环境,新的设备必须起一个符号连接名。

这两种名字分别在对象管理器名字空间的不同部分,对象管理器为所有的被操作系统管理的资源维持一个名字的目录,内部的设备名存储在目录树的Device下面,符号连接名则在DosDevices下面,当使用IoCreateDevice函数的时候,必须提供整个的Device名字,例如,“DeviceMinimal0”是一个适当的名字字符串。在C语言中必须使用双反斜线,因为单反斜线于一些字符合起来有时表示特殊的意义,例如,“n”,而双反斜线才表示一个反斜线字符,如图2所示。

内部的设备名和符号连接名遵循不同的命名习惯, 内部的设备名通常比较长且总是以基于0的数字作为结束。例如,FloppyDisk0或者FloppyDisk1。对于文件系统的符号连接名通常采用A到Z的模式。其他设备常是以基于1的数字作为结束,例如,LPT1或者LPT2。

使用IoCreateSymbolicLink创建一个符号连接名,这个函数序传递一个存在的设备名和一个新的符号连接名,它们都是UNICODE_STRING数据类型。

代码如下:

最后又定义了一个数据链接用于存储监视串口所得到的数据。

2.3.2 各类函数

如果观察发往设备的各种类型的请求,会发现大部分请求都是读写数据。然而应用程序有时候会需要设备执行IOCTL操作,应用程序使用标准Win32 API函数来执行这样的操作。在驱动程序一方,这个DeviceIoControl调用被转化成一个带有IRP_MJ_DEVICE_CONTROL功能码的IRP,通过IOCTL操作来完成应用程序与驱动程序之间的参数传递等数据交互。

具体到本驱动程序中,当其建立好数据交互设备对象ComSpy后,驱动程序处于等待运行中,其首先要得到预监视的串口号,以便建立对应的串口过滤设备对象来截取相关数据。而后其还要传递如触发信号对象句柄,用户内存地址一系列参数,用于数据交互。

首先应用控制程序调用DeviceIoControl API来向数据交互设备对象ComSpy发送参数,这个DeviceIoControl调用被转化成一个带有IRP_MJ_DEVICE_CONTROL功能码的IRP,在驱动程序中调用ComSpy_IoCtl I/O派遣函数来处理这个IRP。ComSpy_IoCtl函数通过if (DeviceObject->DeviceType==FILE_DEVICE_COMPORT)

这样的句语分析,此IRP是否是发给数据交互设备对象ComSpy,如果是则调用IOCtrl_IoCtl I/O处理函数来根据不同的控制码完成不同的操作。

在这里将对几个重要的控制码操作加以分析说明。

首先最重要的是要传递串口号以建立串口过滤设备对象,其功能码定义为:

即功能码IO_OPEN_COM, IOCTL请求缓冲策略为METHOD_BUFFERED。

IOCTL请求有4种缓冲策略,下面一一介绍。

(1)输入输出缓冲I/O (METHOD_BUFFERED)

(2)直接输入缓冲输出I/O (METHOD_IN_DIRECT)

(3)缓冲输入直接输出I/O (METHOD_OUT_DIRECT)

(4)上面3种方法都不是 (METHOD_NEITHER)

通常,驱动程序在访问用户数据时不应当将UserBuffer字段用作地址,即使当用户缓冲区被锁定时也是如此。这是由于在调用驱动程序时,在系统中可能看不到调用用户的地址空间。如果使用“直接”或“两者都不”方法,在创建MDL之后,驱动程序可以使用MmGetSystemAddressForMdl函数来获取有效的系统地址以访问用户缓冲区。

所以只要确定了传输方式后,就可以根据各自的位置来读取和写入数据,从而实现应用层和驱动的通信。

实际是这样,当IO_OPEN_COM控制到来时,驱动程序对象通过下面的代码:

至此一个由上至下的设备栈就建立起来了,以后对应串口所在的收发数据都用先经过其上的串口过滤设备对象,就可以提前分析相关数据后,再将数据传递给串口,这样即达到了串口监视的目地,又不影响正常的口串口工作。

IOCompletionI/O完成例程用于IRP_MJ_DEVICE_CONTROL功能码的IRP,不是发给数据交互设备对象ComSpy时的数据处理。这里主要用于监视串口驱动中的IOCTL_SERIAL_SET_BAUD_RATE及IOCTL_SERIAL_SET_LINE_CONTROL功能码, 前期用于截取串口波特率数据, 而后者用于截取串口奇偶校验、停止位、校验等数据。

代码如下:

其工作流程为:IO_REQ类型结构的一个数据链表结点,填充节点数据,将节点加入数据链表,设置信号变量为有信号以通知应用程序来读取数据。由于这一过程与读完成例程一样,因此将在读完成例程的分析中详细介绍其实现过程。

2.3.3 驱动程序解读派遣函数

当串口过滤设备对象被建立并开始工作后,驱动程序的大部分工作将主要集中的计算机串口出现收发数据时,此时驱动程序将处理IRP_MJ_READ、IRP_MJ_WRITE功能码IRP。由于读写数据只是在数据流向上有所不同,而处理方法上几乎完全一样,因此这里只详细分析绍读派遣函数实现方法。

首先函数依然分析IRP发给哪个设备对象。

如果发给ComSpy则调用IOCtrl_Read来取走链接中存放的监视到串口数据。这里先放一下,在后面来具体介绍其过程。

先重点分析一下驱动程序是如何取得串口数据并保存它们的。

p Ext= (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

取出当前设备对象的DeviceExtension数据结构,其中记录有下层设备对象指针。

取出当前IRP的堆栈单元指针,许多重要的IRP数据,参数都存放在其中。

IoCopyCurrentIrpStackLocationToNext (Irp) ;

将当前IRP的堆栈单元复制给下一个设备对象。

通常,需要知道发往低级驱动程序的I/O请求的结果。为了了解请求的结果,需要安装一个完成例程,即调用IoSetCompletionRoutine函数:当下层驱动完成此请求后会自动调用设置的ReadCompletion回调函数。工作流程如图3所示。

具体到本程序即可以这样理解,当串口过滤驱动的下层驱动即串口驱动完成读I/O请求后会自动调用ReadCompletion函数,并将已完成的IRP传递给它,这样就有机会在这个函数中截取想要的数据。

最后调用NtStatus=IoCallDriver (pExt->

TargetDeviceObject, Irp) ;

将当前IRP传递给下一层驱动即串口驱动,以便其得到并能处理这个请求。

而在ReadCompletion函数中是这样实现所需数据的截取的。首先生成分配了一个节点指针。

然后填充节点,代码如下:

在这里要说明IRP的IoStatus.Information;普通存放着本次接收到的数据的长度

将数据复制到节点数据指针所指向的内存块中,被截取的存放在Irp->AssociatedIrp.SystemBuffer中,这与指定的缓冲策略有关,即在建立串口过滤驱动时已指定了其缓冲策略,代码是:

将累计的数据长度内存地址复制给用户态地址,这里用到了影射核心内存到用户模式进程的相关知识。

KeSetEvent (gpEventObject, 0, FALSE) ;

这句是一个重要细节实现:这里使用了应用层与驱动层同步事件的处理方法;

原理:通过应用层创建事件,并将该事件传递给驱动层,同时应用层创建监控线程,等待驱动层发起事件,此为应用层驱动层共享事件。一但检测到事件,应用层即可执行某些操作。

具体到本程序,将调用KeSetEvent (gpEventObject, 0FALSE) ;设置共享事件为有信号时,应用层的监控线程将调用ReadFile (m_hDevice, lpBuffer, nSize, &dwRet, NULL) ;函数来读取刚刚存放到数据链表中的数据,ReadFile会向ComSpy调用IOCtrl_Read功能码IRP,这时流程就会来到本小节开头没有分析的那处调用即:

如果发给ComSpy,则调用IOCtrl_Read来取走链接中存放的监视到串口数据。

下面就具体分析是如何通过IOCtrl_Read调用来取出截获的已放入数据链表的数据的。

IOCtrl_Read代码如下:

取出当前IRP的堆栈单元指针及其所携带参数数据, 如:输出缓存区的长度等。

至此程序已完整的将一个从建立串口过滤对象、截取串口数据、向应用程序传递数据的过程呈现出来。回顾其流程可见图4。

2.3.4 ComSpy_Unload驱动程序卸载例程

一旦驱动程序被加载,它将一直保持在系统中直到系统重新激活。Unicode例程使驱动程序可以被卸载。在DriverEntry例程中声明Unicode例程。I/O管理器将在驱动程序被自动或者手动卸载的时候调用Unicode例程。

虽然驱动程序的Unload例程不尽相同,但是它大都执行下列工作:

(1)对于一些硬件,设备的状态应该存储在注册表中。在下次DriverEntry例程执行的时候驱动程序可以恢复到最近的状态。例如,声卡驱动程序可能存储当前的音量设置信息。

(2)如果这个设备支持中断,Unload例程必须禁止它们和断开它们与中断对象的连接。一旦中断对象被删除,设备将不会产生任何中断请求。

(3)释放属于驱动程序的任何硬件。

(4)从Win32的名字空间移除符号连接名。这个动作可以调用IoDeleteSymbolicLink来实现。

(5)使用IoDeleteDevice移除设备对象。

(6)如果管理多部件的控制器,为每一个连接到控制器的设备重复步骤4和5,然后移除控制器对象本身,使用IoDeleteController函数。

(7)重复步骤4到6,移除所有的术语这个驱动程序的控制器和设备。

(8)释放驱动程序持有的任何缓冲池。

所以当不再需要监视串口数据,就应触发ComSpy_Unload来完成上述的工作。

其代码分析如下:

取出一个设备对象,在驱动程序创建不同的设备对象后,所有属于特定驱动程序的设备对象将水平地连接在一起,驱动程序对象的DeviceObject域将指向水平设备链中的第一个设备对象,而这个设备对象的NextDevice (PDEVICE_OBJECT) 指向属于同一个驱动程序的下一个设备对象。通过有效地循环提取就能取得驱动程序中的每一个设备对象,而后移除清理它们,在本程序中共建立了两个设备对象,一个是数据交互设备对象,一个是串口过滤设备对象。

因此分别取出这两个设备对象,移除清理它们。

2.4 串口过滤驱动程序

2.4.1 过滤驱动程序

前面只分析介绍了对本驱动程序来说相对主要的IRP派遣例程,而一个完整的驱动程序还需要处理很多其他相关的IRP,限于篇幅的原因就不一一详细分析,但需要说明是相对于一个真实物理的设备驱动程序来说,过滤驱动程序需完成的任务相对要小很多,一般的IRP请求它都是直接向下层驱动,直接发送由下层驱动完成。这一特点使其相对好理解,对于希望从应用程序开发过渡至设备驱动开发是一个很好的学习过程。

同时过滤驱动程序的应用也十分广泛,如:抗病毒、反黑客、文件加密、硬件设备工作监视等。因此对于应用软件开发人员非常值得学习研究。

本程序稍加改动即可监视计算机其他端口,如:并口等。

2.4.2 编译连接驱动程序

微软提供一个单一的编译器和连接器。无论这个工具被从命令行提示调用或者从集成开发环境调用﹐产生的二进制文件是一样的﹐Visual Studio仅仅是一个GUI接口的创建和编辑工具。点击Project菜单下的Settings选项﹐提供了一个方便的基于对话框的工具开关接口。

DDK提供一个Build工具﹐可以用来方便地创建设备驱动程序﹒使用适当的环境设定﹐也可以使用Visual Studio。确实﹐使用Visual Studio环境在开发阶段和在发行工程的时候使用Build是合适的。

使用Build来创建驱动程序的步骤如下﹕

(1)在源文件的路径下﹐创建一个名字为SOURCES的描述驱动程序组成的文件。

(2)在源文件的路径下﹐创建一个名字为MAKEFILE的仅仅有下面一行代码的文件﹕

这个根调用使用Build创建的任何驱动程序需要标准的makefile﹒不要添加源文件到这个makefile﹐而是添加到SOURCES文件中。

(3)使用文件管理器或者MKDIR命令为Build的产品建立路径树。

(4)在Win2000 DDK的程序组中选择调试创建环境或者自由创建环境。会有相应创建环境的命令窗口。

(5) 使用CD命令将当前路径转移到源文件路径。

(6) 运行Build实用程序创建驱动程序。

二进制输出被创建到适当平台的CHECKED或者FREE路径﹐任何屏幕上显示的错误也被写入到Build的日志文件中了。

Build操作被一系列关键词控制着,这些指定关键词产生的驱动程序的类型﹐组成产品的源文件和不同文件的路径。尽管这些关键词可以被命令行选项传递给Build﹐但是将它们放到SOURCES文件中会更有用。下面是SOURCES文件的一般规则﹕

(1) 文件名必须是SOURCES (没有扩展名) 。

(2) 文件内容的格式为﹕keyword=value。

(3)一个单一的BUILD命令可以通过在行尾使用一个反斜线符号 (“”) 扩展多行。

(4) Build关键词的值必须是纯文本。Build自己只作很少NMAKE宏的处理﹐不处理条件语句。

(5)确定在Build关键词和等于符号之间没有空格,等于符号后面的空格是允许的。

(6)注释行以“#”字符为开始﹒。

下面是一个最小的SOURCES文件的例子﹕

3 实现

串行数据监视显示应用程序使用MFC的单文档架构,主要用于动态加载串口过滤驱动程序、发送串口号及交互事件、共享内存地址等必要参数,并开启监视线程接收串口过滤驱动程序的监视数据显示在用户终端上。

基于单文档架构程序主要分用两部分,一部分主要用于动态加载卸载串口过滤驱动程序及传递清理驱动程序所需的重要参数。另一部分主要用于实时监视接收串口过滤驱动程序得到监视数据,并将其格式化后在显示在应用程序客户区。前者在MainFrm.cpp文件中实现,后者在SerialSpyView.cpp文件中实现,下面将分析实现这两部分。

3.1 动态加载卸载及参数传递

3.1.1 结构定义分析

在应用程序中一般会在.H头文件中声明一起将会使用的变量及结构,在本程序中尤为关注的是应用程序和驱动程序共同的一起变量及结构,一定要在应用程序中加以声明,如:I/O控制功能码等。

驱动程序定义如下:

前者定义了LIST_ENTRY entry;PVOID pData;而后者定义了DWORD Reserved1;DWORD Reserved2;DWORD Reserv ed3;同样的结构名却使用了两种不同的内部成员定义,这涉及了一种特殊数据大小对齐的处理方法。实际上就是用于使结构大小与原定义一致,驱动程序中LIST_ENTRY是一个结构成员,它的内部成员分别是两指针类型占8字节,而PVOID空指针占4字节,共计12字节,所以应用程序中使用了3个DWORD变量来代替正好也是12字节,这样做的原因是LIST_ENTRY entry是一种在内核驱动中常用的链表结构,如在应用程序中定义引用它就需要相应的头文件及库的支持,而在应用程序的实际使用中并没有直接使用它(PVOID pData同样也没有直接使用),所以用这样一个非常实用的替代定义的方法来节省工作量及开发的复杂性。

3.1.2 驱动程序的动态加载卸载

在Windows下驱动程序的加载处理上述方式外,还可以在应用程序里用Service Api实现,驱动程序的动态加载。这时候的Start为3。

具体到本程序,其调用了InstallDevice来加载驱动程序,其代码分析如下:

首先将当前目录下的ComSpy.sys驱动程序复制到计算机系统目录下的Drivers目录中,Drivers目录存入着Windows大部分的设备驱动程序,这是通常的做法。

服务控制管理器:在系统启动的时候开始,是Win系统的一部分,它是一个远程过程调用(RPC)服务器。这也是Win服务系统的核心。

SCM维护着注册表中的服务数据库,位于:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices。其下的子键就是安装的服务和驱动服务。每个子键的名称就是服务名,当安装的时候由服务安全程序的CreateService函数指定

CreatService函数顾名思义产生一个新的Service,即将驱动程序作为一个系统服务动态运行。其中参数hSCManager为指向service control manager database的句柄,由OpenSCManager返回。LpServiceName为Service的名字,lpDisplayName为Service显示用名,dwD?esiredAccess是访问权限。wServiceType指明SERVICE类型。dwStartType为Service启动方式,dwErrorControl说明当Service在启动中出错时采取什么动作。LpBinaryPathName指明Service本体程序的路径名。剩下的?五个参数一般可设为NULL。如函数调用成功则返回这个新Service的句柄,失败则返回NULL。

使用StartService用来启动服务即开始驱动程序。这个函数的原型:

StartService函数启动指定的Service。其中参数hService为指向Service的句柄,由OpenService返回。dwNumSe?rviceAr为启动服务所需的参数的个数。lpszServiceArgs为启动服务所需的参数。函数执行成功返回True, 失败返回False。

这里调用了OpenDevice函数,OpenDevice中使用了DeviceIoControl来与驱动程序进行数据交互。其代码分析如下:

在使用DeviceIoControl之前,首先要使用CreateFile打开该驱动设备,取得设备句柄。

CreateFile的原型为

CreateFile这个函数用处很多,这里用它“打开”设备驱动程序,得到设备的句柄。操作完成后用CloseHandle关闭设备句柄。

与普通文件名有所不同,设备驱动的“文件名” (常称为“设备路径”) 形式固定为“.DeviceName” (注意在C程序中该字符串写法为“.DeviceName”) ,DeviceName必须与设备驱动程序内定义的设备名称一致。

一般地,调用CreateFile获得设备句柄时,访问方式参数设置为0或GENERIC_READ|GENERIC_WRITE,共享方式参数设置为FILE_SHARE_READ|FILE_SHARE_WRITE,创建方式参数设置为OPEN_EXISTING,其他参数设置为0或NULL。DWORD dwReturn;

TCHAR szOutputBuffer[4];

将串口号字符串传递给驱动程序,这里要注意,Ansi型和Unicode型的使用问题,在驱动程序中所在函数变量都是针对Unicode型来处理,因此此处如传递的是非Unicode型数据,驱动需使用Ansi型转化函数处理后才能使用,代码也给出对应的示例码。

//传递的监视数据触发事件句柄。

//传递的用户地址用于记录一次读取操作的数据长度。

卸载时要执行加载的逆顺充, 即要先与驱动程序交互通信通知驱动程序清理一些交互参数所占内存等, 然后使用停止驱动程序API来卸载驱动程序。

具体代码分析如下:

上述函数在MainFrm.cpp中定义,而在SerialSpy.cpp即应用的初始化及退出时被调用,可进一步完善为在菜单中自定义加载及卸载。

3.2 实时接收显示监视数据

实时接收显示处理共分两部分;一部分是创建一个辅助线程接收数据并将数据输出应用程序的数据存储链表中;另一部分是使用了定时器消息在固定间隔时间内定时从数据存储链表中读取数据并显示。下面将分别介绍这两部分的分析实现。

3.2.1 实时接收数据

应用程序首先创建一个事件,然后将该事件句柄传给设备驱动程序,接着创建一个辅助线程,等待事件的有信号状态,自己则接着干其他事情。设备驱动程序获得该事件的句柄后,将它转换成能够使用的事件指针,并且把它寄存起来,以便后面使用。当条件具备后,设备驱动程序将事件设置为有信号状态,这样应用程序的辅助线程马上知道这个消息,于是进行相应的处理。当设备驱动程序不再使用这个事件时,应该解除该事件的指针。

其核心的实现函数就是辅助线程函数,它通过循环等待交互事件的信号状态来判断是否有数据。当有数据时,其调用ReadFile去主动读取。

其代码分析如下:

程序在这里等待两个事件中的任何一个发生,这两个事件一个p This->hEvent用于控制此线程的终止,另一个m_hCommEvent就是监视的与驱动程序交互的事件。

当交互事件为有信号,应用程序主动调用ReadFile从驱动程序数据存储链表中读取数据至lpBuffer。注意此时有可能一次性读取的是几个链表节点的数据,不要假定每次只读一个节点。

3.2.2 实时显示数据

系统使用了一个200毫秒的定时器消息来定时显示数据,因时间片间隔很小所以基本效果可以近似实时显示。

其代码如下:

其中的ShowTraceData函数根据数据类型的不同,如:参数类数据,正常数据包等不同,进行了不同的数据格式化后,再向客户区显示输出。如:正常数据要进行16进制数据显示转化等处理。

至此一个完整的串口监视系统已全部分析完成。

回顾其完整流程可见图5所示。

最后程序运行效果如图6。

4 结语

驱动程序是直接工作在各种硬件设备上的软件,其“驱动”这个名称也十分形象地指明了它的功能。正是通过驱动程序,各种硬件设备才能正常运行,达到既定的工作效果。

在计算机系统中,与外围硬件设备紧密相关的软件称为设备驱动程序。它是用来扩展操作系统功能的一类软件,通常工作于操作系统的核心层,直接操作硬件。设备驱动程序增强了操作系统的安全性和应用程序设计的灵活性。

摘要:讲述了串口监视过滤驱动的原理和工作流程, 列举出了相关的核心代码, 用流程图的方式描述了各个模块的逻辑实现。在开发中按照软件工程的流程, 从需求分析到概要设计, 从具体设计到编码, 以及调试测试, 利用软件工程的工具管理开发代码和文档。

关键词:WDM,串口监视,过滤驱动,串行通信

参考文献

[1]Programming the Microsoft Windwos Driver Model.微软出版社.

[2]翟洪涛.Windows2000驱动程序设计.

[3]刘春立.用VC开发Windows下的串口异步通信程序.计算机系统应用.

[4]柴锁柱, 刘金岭.用Visual C++6.0开发Windows环境下的串口异步通信程序.沧州师范专科学校学报.

[5]李阜, 陈小欧.Windows环境下的串口异步通信程序设计.电子技术应用

[6]李阜, 陈小欧.Windows环境的串口异步通信程序设计.计算机系统应用.

[7]黄硕.Windows环境下的串行异步通信程序设计.广东自动化与信息工程.

[8]陈曙光.利用通信控件开发Windows环境下的串口通信程序.淮北煤师院学报:自然科学版.

生命不需要过滤 篇10

“白雪皑皑的午后,阳光有了一丝和煦,我只身步入郊外的幽径,没有目的地前行,驻足回首,一对恋人缓缓跟来,时而拥抱,时而窃语。望着这幅亲昵的水墨,是那样的熟悉,在我心灵的相册里又一次的重叠。”

“七月,我置身于栾川的卧牛山,漫无边际的行走在绿荫的深处,郁郁葱葱,不见日光,也不见游人,只有鸟儿地轻声呼唤。那一种多年没有过的悠然,那一种流火中难得的清凉,那一片静无声息的空间,让我沉醉。山人合一,无欲也无我。”

细细的回味这些曾经的文字,又一次被深深的感动。在生命的历程中,我无不时时刻刻渴望幸福,憧憬未来,祈祷生命的馨香,竭尽全力地挽留所有的快乐。然而,在日复一日碌碌如蚁的生活中,心,也渐渐变得粗糙与麻木。我们所渴望的情感和美好,最终总是被时光悄然尘封,慢慢地淡忘。

多少年后,在妩媚月夜,在静谧的黎明,我曾试图穿越时光的隧道,回味曾经的一次次温馨,一次次惬意,试图让它成为生命中一道亮丽的永恒!殊不知,这只是一种灵魂地期待和奢望。随着光阴的逝去,这些宛如惊鸿掠影般,了无痕迹。

洒落在漫漫历路上的丝丝美好,我们并不因为了无痕迹而不去回味。每每想起春花的烂漫,想起落叶的飘零,你的心,也许会因此而有些许的温柔和惆怅。这就是思维,这就是时光,这就是生命的颜色。

在很长的日子里,每每的午后,我总会望着案头那杯清茶发呆,在那一瞬间,它静静绽放出一生的美丽。我真切地看到了茶的舞蹈。当茶在杯中升腾,然后,一片、一片,悄无声息的伸展开碧绿的叶芽,相互依偎,又相互分离,然后缓缓坠落,宛如芭蕾舞一般,轻盈地立于杯底,从容,淡定,无所它求。那优雅的姿态,让人心驰神往。这是一杯茶最美丽的生命瞬间!知之者,为之沉醉,不知者,却错过了最应该珍惜的那一段心灵之约啊!不惑之前,我是不知者,所以错过了一次又一次心灵之约的美丽。

过滤系统 篇11

工作面顺槽供水管线中的水经过滤器的进水口进入粗过滤器, 然后进入精过滤器的进液仓, 通过过滤网进入中部的净水仓, 再从侧面的出水口供出洁净水。全自动清洗过滤器控制系统能根据时间和压差自动完成清洗工作, 也可手动完成反冲洗、排污工作。过滤器下腔底部设置了杂质污物仓, 过滤出的杂物沉入此仓, 经排污阀排出过滤器。

本过滤系统采用缝隙式全不锈钢金属滤网和独特的清理、反冲结构, 改变了传统的过滤器滤网式结构。过滤网内设计了6把圆周排列的不锈钢钢丝刷子, 在转轴部件、过滤器上部的防爆电机和减速器的带动下做旋转运动, 可将黏附在不锈钢滤网内壁上的污渍、杂质清理至污物仓, 并按照电控箱内PLC设定的时间开启系统排污阀, 从而实现排污。

为了进一步增强反冲清洗效果, 解决系统中可能存在油膜堵塞滤网的问题, 本装置在旋转的钢丝刷前部设计了一个反冲反吸器。反冲反吸器的工作原理为:在过滤器的底部设计有排污口, 此排污口与底部的污物仓不相通, 与反吸器相通, 并由排污口的执行器控制。当差压变送器检测到滤网被堵塞时, 在启动反吸旋转的同时, 排污口的执行器按设计好的方式执行开、闭程序动作。当球阀打开时, 管道压力大于排污口的压力, 进而产生压力差, 并在反吸器的局部产生反吸力。由于存在压力差, 滤网外侧的水在压力差作用下会流向反吸器, 形成反冲洗效果, 可将滤网上的脏物冲入排污口。该装置的滤网采用三角形滤网丝设计, 焊接编制成圆柱形滤网, 其平滑的内壁更加有利于钢丝滤刷的清洗, 外网采用三角形开口。小于或等于过滤精度的污物都不会卡在滤网上, 将使清洗更加容易, 可始终使过滤器保持良好的工作状态。

差压变送器采集进、出水口的压力差, 并将其转化为电流型号, 显示进、出水口压差的电流数值。当达到设定值12 m A时 (即进、出水压差为0.08 MPa) , 反冲洗装置开始清洗。

2 过滤系统的特点

该过滤系统有以下4个优点: (1) 真正实现了在线、全自动、免维护清洗, 不需要更换滤芯, 滤网使用寿命长, 省去了更换滤芯的费用和时间, 且使用非常方便; (2) 采用PLC全自动控制, 可根据水质情况合理调整清洗过程, 实现了主动清洗, 可保证滤网具有良好的过滤状态; (3) 全自动自清洗过滤器具有过滤原水、自动清洗滤芯的功能, 且清洗吸污时系统可不间断供水; (4) 结构紧凑、体积小、占地面积小。

3 设备检修

主要包括电控系统、执行器的检修, 过滤器体和滤芯的除垢、清洗, 仪表和差压变送器的检验、测试, 各类阀门的密封性测试, 结构件修复和设备组装调试等任务。

3.1 差压变送器

3151系列执行器无机械传动部件, 几乎是免维护的。但使用时要注意因电子线路元件易被静电损坏, 变送器在拆装、操作时要采用防静电措施, 不可直接触摸印刷电路。

3.2 电动执行器

检测执行器的电动机、电容、限位开关和中间继电器等原件, 更换损坏件并开展组装和测试;机械减速机构的磨损状况检测, 加注润滑脂。整机组装后开展通电测试, 测试时行至端点时限位动作并保持。

3.3 电控系统的检修和调试

电控系统故障包括电子元件 (时间继电器、中间继电器、热继电器、差压比较模块、PLC模块) 损坏, 可通过相应的检测手段更换或修复元件, 并按照控制原理组装、测试所有模块。

4 各类阀门的检验、测试

阀门检验、测试主要包括强度试验和密封性试验, 只有测试合格的阀门才可安装。

4.1 强度试验

试验通常在常温下进行, 试验压力一般为公称压力的1.5倍。试验时将阀内腔的空气排净, 阀门开启, 一端封闭, 从另一端注入介质并施加压力。检查法兰和阀体 (体、盖) 外露的表面, 要求在规定的试验持续时间 (一般≥10 min) 内无渗漏, 才可认为该阀门强度试验合格。对于渗漏的阀门, 如果技术条件允许补焊, 则可按技术规范补焊, 但补焊后必须重新进行强度试验, 试验持续时间延长1倍。

4.2 密封性试验

试验时, 先开启阀门, 将通道一端堵住, 压力从另一端引入, 待压力升高到规定值时 (4 MPa) 关闭阀门, 然后逐渐降低堵端的压力。球阀有2个密封副, 因此, 需进行双向密封试验, 另一端应重复上述试验。

5 过滤体组件的修复

过滤体组件的修复主要包括过滤网、滤刷的除垢清洗和零件修复两大部分。

5.1 过滤体的除垢、除锈

拆解后将不锈钢滤网、粗滤网和钢丝刷等零件用质量分数为5%的除垢剂或奥斯克浸泡3~6 h, 并用毛刷清洗, 清洗后的零件要及时吹干并做密封防护, 以防二次污染发生。

5.2 过滤体部件修复

过滤体的主要损坏形式为滤网变形和滤网开焊, 进而导致钢丝刷转轴部件无法整周运转, 需要矫正变形, 以保证圆柱度。对于开焊的滤网, 需要修复不锈钢件。

除垢清洗后组装经过清洗的过滤体、滤网和钢丝刷, 并调整钢丝刷上的弹簧, 使钢丝刷与滤网内部的间隙适中, 既要保证清洗效果良好, 又要转轴钢丝刷不会过度磨损。

6 设备整机的组装和调试

6.1 组装

按照装配标准工艺将电动机、减速器安装于过滤体组件上, 再安装各类阀门、法兰、执行器、仪表和变送器管路, 并按照图纸要求连接水压力管道与差压变送器、仪表盘;将防爆电机、排污、反冲洗执行器电源线与控制箱连接。安装完成后, 按照过滤装置说明书中的要求检查连接线路、管路。

6.2 测试

过滤体的压力应<4 MPa。按照图纸中的要求在控制柜中接入电源线, 并设置时间参数;检查排污、反冲洗动作, 各部分有无过热和异常, 转动是否平稳, 声音是否正常, 是否存在漏油、漏液现象。出现故障及时应停机处理, 直至设备符合运行标准后恢复运行。

上一篇:出版社会计下一篇:无公害胡萝卜种植技术