




已阅读5页,还剩53页未读, 继续免费阅读
(测试计量技术及仪器专业论文)vxi总线测试软件平台运行调度算法设计与实现及其平台性能的优化.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
电子辩鼓丈学顼 论文 接要 本磺 学锭论文缝合总装备部下达豹 十五 v x l 总线溯试软件平 台一基于w i n d o w s 的自动测试系统软件平台的完善 预研课题 并根据作 学在该潆题中掰承担熬任务撰写完成 自动测试程序的软件开发平台在自动测试系统中占有重要地位 怒组建 鑫裁测试系统鹣软磐秀发工具 它褥诗舞规懿数摆分褥帮显示姥力与仪器驱 动器融合在一起 为用户开发虚拟仪器提供必须的软件工具和环境 v x i 总线测试软件警叁 热囊动测试系统挝供了一个可视纯豹强形壤程环境 用户能方便的组建自动测试系统而不需要具有高级语言编程能力 适合在 部队 王厂等人员素鹱不是很避熬环境中推广应用 该平台为测试疲熙提 供丰富的编程元素 擒件 及方便的调试和遮行方式 单步执行 断点执 季亍 暂傍 此外 乍为图形化的绽程语蠢还要提供友善媳编程爨嚣及简便直 观的运行界掰 这个平台怒建立在w i n d o w s 操作系统之上 兼容 w i n d o w s 9 8 w i n d o w s 2 0 0 0 和w i n d o w sn t 等多个操作系统 完全中文化 的软件平台 本文重点讨论了侈者在 v x i 总线测试软 孛平台 项蓦中负责优他平 台运行性能 斑高平台运行稳定性和完成部分控件功能的工作 主要包括 以下几方疆的内容 1 运行控制函数的运行调度算法的设计与实现 包括对平台原有运 雩亍控铡透数运行算法豹分辑 对国岁 同类产菇瓣分攒 囊冀法豹 提出和实现等 2 实现逡雩亍功麓貘块与鼹示塞鄹无关 毽怒关 l l 子模块对应缡程塞 口和恢复的实现 运行功能与控件和子模块编程窗口的实现 对 运行孵塞口熬处理等 3 部分拽件功能的设计和实现 包括确定按钮按件 开始控件和标 题栏按俘等莰诗和实毽 另外 本文还对作者负责部分程序功能的测试进行了简雄介绍 关键词 v x i 想线 测试敦彳牛乎台 予模块 运行调度 链表 窝羽 电子科技大学硕士论文 a b s t r a c t t h em a s t e rd i s s e r t a t i o nw a sw r i t t e nw i t ht h ev x 乙b u s l b s ts o f t w a r e p l a t f o r mt h a ti sap r o j e c to f t h et e n t hf i v ey e a r sp l a no f e q u i p m e n td e p a r t m e n t o f n a t i o n a ld e f e n s ea n dt h et a s k st h ea u t h o rh a d a c c o m p l i s h e d t h ed e v e l o p m e n te n v i r o n m e n to ft h ea u t o m a t i ct e s tp r o g r a ms t a n d sa n i m p o r t a n tr o l ei n a u t o m a t i ct e s ts y s t e m a t s i tp r o v i d e st h ec o m p u t e r s g r e a ta b i l i t i e so fc o m p u t i n ga n dd i s p l a y i n g v x i b u st e s ts o f t w a r ep l a t f o r m p r o v i d e s av i s u a l p r o g r a m m i n ge n v i r o n m e n t f o ra t s u s e r sc a nb u i l da t s c o n v e n i e n t l yt h r o u g ht h i ss o f t w a r ew i t h o u tk n o w i n ga n ya d v a n c e dp r o g r a m m i n g l a n g u a g e a s a d e v e l o p m e n t e n v i r o n m e n to f s t h ep l a t f o r m p r o v i d e sa b u n d a n t p r o g r a m m i n ge l e m e n t sa n dc o n v e n i e n c ed e b u g g i n go rr u n n i n gm o d e b e s i d e s t h e s e i tp r o v i d e sf r i e n d l yp r o g r a m m i n g a n d r u n n i n g i n t e r f a c e i ti sa c o m p l e t e l yc h i n e s ep l a t f o r mb u i l to nm i c r o s o f t sw i n d o w so p e r a t i o ns y s t e m i t c a nr t l no nw i n d o w s 9 8 w i n d o w s 2 0 0 0a n dw i n d o w sn ta sw e l l t h et h e s i sd i s c u s s e ss o m eq u e s t i o n so fv x lb u st e s ts o r w a r ep l a t f o r m w i 攮e m p h a s i s 髓l e c o n t e n ta s f o l l o w i n g d e s i g n i n ga n dr e a l i z i n go f t h ea r i t h m e t i co ft h ec o n t r o l l i n gf u n c t i o nw h i c h c o n t r o lt h er u n n i n go ft h et e s tp r o g r a m s i n c l u d i n gt h ea n a l y z i n gt h eo l dr u n n i n g a r i t h m e t i co ft h ep l a t f o r m p u t t i n gf o r w a r dan e w n m n i n ga r i t h m e t i ca c c o r d i n gt o t h ef o r e i g ns i m i l a rs o f t w a r ea n d r e a l i z i n g i t d e s i g n i n g a n d r e a l i z i n g o fs e p a r a t i o nb e t w e e nt h e r u n n i n g f u n c t i o n a l m o d u l ea n dt h ec o n t r o l s w i n d o w st h a ta c t sa st h ed i s p l a y f u n c t i o n i n c l u d i n gt h e c l o s i n ga n dd e s t r o y i n gt h eu s e rm o d u l e sp r o g r a m m i n gw i n d o w s r e s u m i n gt h e d e s t r o y e dw i n d o w s r e a l i z i n g t h er u n n i n gf u n c t i o nw i t h o u tk n o w i n gt h ec o n t r o l s a n dt h eu s e rm o d u l e s w i n d o w s h a n d l e d e s i g n i n ga n dr e a l i z i n go fc o n t r o lf u n c t i o n i n c l u d i n gc o n f i r m s t a r ta n d 1 c x t n et h e s i sd i s c u s s e st h et e s to f t h e p r o g r a m f u n c t i o nt h a tt h ea u t h o rf i n i s h e d k e yw o r d s v x ib u s t e s ts o f t w a r ep l a t f o r m p a n e l u s e rm o d u l e r u n n i n g d i s p a t c h l i s t w i n d o w 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果 据我所知 除了文中特别加以标注和致谢的地 方外 论文中不包含其他人已经发表或撰写过的研究成果 也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意 签名 金哇 日期 d 砷3 年3 月3 曰 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留 使用学位论文 的规定 有权保留并向国家有关部门或机构送交论文的复印件和磁 盘 允许论文被查阅和借阅 本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索 可以采用影印 缩印或 扫描等复制手段保存 汇编学位论文 保密的学位论文在解密后应遵守此规定 签名 导师签名 伴绐 u 日期 年月 日 牛 电子科技大学硕士论文 第一章引言 没有测量 就没有科学 随着电子学 计算机科学的发展及其广泛应 用 日益复杂的测试任务对电子测量技术及电子测量仪器设备提出了越来越高 的要求 可见仪器仪表的应用对推动电子行业发展和国民经济的重要作用 现 代测试任务不仅需要对多参数 相关参数 瞬间信息进行快速 实时 连续 准确的捕捉和测量 且需完成浩繁的数据处理工作 完成这些工作都远非人工 测试所能胜任 即使是简单的产品测试 也需要采用自动测试替代效率低下的 人工测试 但是没有任何一种通用测试系统能够全面满足速度 精度 可靠性 升级性以及预算等各方面的要求 测试系统必须根据不同的应用进行改进 因 此对自动测试技术的研究具有十分重要的理论价值和应用前景 1 1 v x l 总线测试软件平台开发概述 1 9 8 7 年 由美国几家大仪器公司联合制订了v x i 总线规范标准 1 9 9 2 年又 成立了v x l p l u g p l a y 联盟 在近1 0 年时间里 v x i 系统以其强大的生命力在各 个领域都得到了迅速的发展 为适应现代高新技术武器装备日益增长的计量保障的需要 军用自动化测 试设备 a t e 大量采用和我国军事测试技术逐渐发展 v x l 技术也已经越来越 得到各个部门的重视 我国对v x i 总线技术的跟踪和研究始于8 0 年代末 在引 进 消化和吸收国外先进v x i 技术的同时 国内测试界开展了v x i 产品国产化研 制和应用工作 在十余年的时间里 先后研制出v x l 总线主机箱 v x i 总线控制 器模块 v x i 总线接口模块 v x i 总线仪器模块 v x i 总线通道模块 v x i 总线专 用模块 v x i 总线微波模块 v x i 总线仪器模块 v x i 总线通道模块等上百种硬 件产品 开发出符合v x ip l u g p l a y v i s a 要求的模块驱动程序 仪器软面板程 序 v i s a 库 测试程序应用框架等自主产权的软件产品 并集成了上百套v x i 总线测试系统 广泛应用于航天 航空 兵器 核工业 海军 空军 总参 二 炮等国防领域及铁路 石油 家电 环保等民用行业的测试 取得了可喜的成果 电子科技大学c a t 教研室开发的 v x i 总线测试软件平台 是在充分 研究h p v e e 和l a b v i e w 外特性的基础上 研究它们所实现的功能及实现 的方法 比较它们的优 缺点及兼容性 以确定我们的研究目标 v x i 总线测试软件平台是真正面向对象的编程语言 软件平台功能隐 藏在其图形控件的背后 并要图形控件对象提供可视化接口 在平台中控 件对象就是普通编程语言中的代码 v x i 软平台作为测试应用的集成开发 电子科技大学硕士论文 环境必须掇供丰富的编程元素 同时提供方便的调试和运行方式 此外作 为黧形纯数编翟诿言还要撵供友黪熬缡糕秀蚕及篱饔塞菠瓣运幸亍雾嚣 软件实现的主要困难是 图外可以借鉴的软件平台如l a b v i e w l a b w i n d o w s c v i 稆h pv e e 只能通遗使瘸 了解它们的羚特经 平台设计的 核心技术没有公开 也无这方面的源程序可借壤 故分析和编程具有 定 难度 v x i 总线测试软件平台 的目标是提供 套具有自主版权的v x i 总线测试软件开发平台 并经实际使用之后 逐步完善 提离版本 以推 动我国v x i 总线测试系统的发展 解决v x i 总线系统硬件和软件的标准化 觚两罐高系统的甄糟佳 使之更荔子集成和应用 1 2 课题在理论和实际应用方面的意义和价值 基于 v x i 总线测试软件平螽 我们开发了总装铸部下达的 九五 预研项霹 菜火控谮达v x i 自动灏试系统 帮 某型学雷达接受视v x i 自动测试系统 并顺利通过了圉家验收 在 十五 期间 电子科技大 学c a t 教磷宝继续对软辞平台遴行完善 不餐餐原有的往能更船完善 舔 且增加了不少新功能 如 c 编译器接口 对数据库管理和操作和调用 a c t i v e x 控佟等 该软锌醴经达弱潼际先送汞 目前 在国内好有许多院校 研究所和公司在系统集成和软硬件开发 方瑟傲了许多研究工作 僵在软件平台级的产鼹上滏凭类戳予n i 公司 l a b v i e w 安捷伦公司v e e 的软件 国内在该领域的研究还是空白 该课 题静蟒翎开发在莺内岗属蓠家 这对于维表完全依靠冒辨技术产品开发睦 动测试系统 建立完全具有自主开发权的自动测试系统歼发平台 特别是 对予军雳窀子设备豹测试方蘑吴蠢重要翡意义帮价蓬 为瓮 慈装备部对 该项目十分重视 1 3 毕韭设计的主要任务 作者予2 0 0 1 肇3 胄遴入该顼藩缀 在导拜的悉心指导下 与项霹维 成员 起努力完成了以下主要几方面的工作 设计并实蕊了控秘测试程序运行功能鹤逡行控秘函数的运行谲度 算法 改避了子模块控件的实现机制 实现了冀正的关闭予模块对成的 编稷视窗口 减少用户在编辑测试程序期间的窗口对象的数目 电子科技大学硕士论文 实现了运行功能与控件和编程视的窗口无关 在关闭窗口时测试 程序同样能够运行 从而减少了平台运行期间的占用系统的资源 优化了平台的性能 控件功能 包括确定按钮 开始按钮和标题控件等控件功能的设 计和实现 本课题全体成员经过探索 研究和实践 克服了许多困难和障碍顺利 完成了课题预期要求 目前 软件已经通过了全部的功能测试和内部鉴定 本论文就是该课题和作者毕业设计相结合的成果表现 电子科技大学磺士论文 第二肇乎台运终调度算法垂皇设计和实现 v x i 总线测试软件平台燕 个蒸子控佟编程豹可聿霓纯测试软箨开发平螽 用 户在平台上通过创建 放置控件 并用连线连接各个控件实现测试程序的编写 所隧 控俘楚平台缡程戆基零元素 它类骰予普逶缡程语言中豹保鼯字蠢命令语 句 每个控件都具有自己的功能 平台在运行测试稷序时调用 运行控件 通过 实褒各个控件懿功麓来完戒整个测试程亭豹动麓 瓣筵 平台运露功戆是实璇该 平台测试程序功能的核心 没有运行功能 用户编辑的测试程序只慰一堆没有任 露塞义魏稳学 帮銎形 只存在运行粥润 测试程痔方莛一个霹羧控肇l 嚣量 殳器 完成某种测试功能的软件 2 平台运行功簇分析 洋台为矮户瘫袋了各静羟俘 予遁数 予程彦帮纹器驱动摩等丰塞豹编程资 源 这些可视的部分都是一个人机交互界面 平台可视化编程的特点就是具有很 友磐戆爱户爨嚣 诖绽翟人受飙糖爨熬我强缡写过戆中舞魅趱来 瑟乎套运雩亍动 能是位于这魑显示界面的下层 属予运行在后台进行处理和控制的程序 与运行 有关熬功麓按镪包据 运行按锺 饕婷按镪 事盘遮行按镪 与谖试蠢关豹拶3 入 子模块 跳出子模块和跳过予模块按钮 如图2 1 所示 黧2 l 运行 诱试相关功能按钰 控律在缡程实褒上莽是一个独立熬类 在这些类燕嚣不程骞绘潮控传乡 黢豹 函数 也有控件功能实现函数 比如 o n p r o e c s s n o w 该函数是消息响应函 数 簿令控转类都重裁缝写这个函数实理控转功能 运霉功熊麸表瑟上看 麟是 在用户按下 运行 溅是单步调试按钮以后 通过调用程序中每个撩件的功能实 瑷丞数 放瑟实瑷测试程痔豹功能 实甄土 乎叁力每一令缀程塞暖设萋了一个 运行链表 用于存放用户在该编程窗口中产生和放最的控件 该链表中存放有程 彦中每个控 串熬对象摇铮 奖存款矮净锿爨鲻户产生控 粤熬蹶彦 与程序中控孛 4 电子科技大学硕士论文 之间的连线关系无关 运行控制程序根据撩件之间的相互关系 主疆是控件之间 数连线关系 接据菜秘数学算法 按一定蹶序对遮行链表巾每个羧传进行刿断 调用执行满足运行条件的掇件对应类的功能实现函数o n p r o c e s s n o w 渴链表 中敷有控僻都已经运芎亍完毕或是找不至q 瀵足运行条件的控传 整个浏试程摩运行 就结束 图2 2 是一个简单的测试程序例予 图2 2 一个简单的程序例子 2 2 运行调度算法问簇的提蹬和分析 从上文的分孝斤可以知邋 运行控翻函数就是鲡筒根据撩侔之阀的关系 在运 行链表中顺序地找到满足邋行条件的控件 然后调用相关函数从而实现其功能 由予在同 个对阊霹能有多个控 睾蔺时满楚运行条侔 鲡黼2 2 掰示酶镶子中 当计数循环控件运行结束后将数据通过数据输出引脚和控制输出弓i 脚传递到连 接程它螽稀豹控讳 在褥翻这些数据螽公式运算霾佟 整数控俘帮予程序2 控俘 都满足运行条件等待运行控制程序调用其避行 这时控制稷序应该应该调用哪个 控徉运行 藏是与逡行谲凄舞法蠢关 不隧豹实臻冀法决定了翟露不同兹遮行矮 序 为了便于分耩 可醵将用户编辑静溅试程序逶行数学圈形j 辔蒙纯 将羧俘看 作 个点 控件之间的连线看作点到点的遗线 那么 测试程序就w 以抽缘为数 据络梅中静 揉 树 平螽运行控籁函数就是对 祷 上每一个节点逶行羚瑟 分析 访问树上节点的过稷 运行控制函数实现算法就是对 树 进行遍历的算 法 褥子强2 一l 显示翡程謦 圈2 3 舞示了它进霉裁形掊象亿螽褥戮弱褪形绥鞫 图 电子科技大学硕士论文 图2 3 测试程序的树形结构图 对子复杂的测试稽序 箕结零每可能是由多裸稿曩独立静树维成 氇胃畿怒一 棵树上带有多个头节点 这些复杂树的遍历问题都可以利用对一棵简单树的遍历 算法解决 掰黻我免j c 雩一揉褥静请琵进行分析 对予鍪2 2 显示豹树 控释l 由于没有输入是树的头节点 控件2 控件4 和控件5 连接在控件1 上 可以看 成燕国关节纛发出懿三令树技 氇就是关节杰懿三个子苓熹 同样 控箨3 蹩控 件2 的子节点 控件6 和控件7 是控件4 的予节点 运行控制算法就是规定程序 应该按魏侮黪蹶彦慕遍历这穰壤土每 令繁患 不嚣瓣访阉簇痔决定了测试稔滓 中控件运行顺序的不同 也就对应了不同的运行调度算法 本位认为 一个好的 控裁算法不爨应该爨窍涛繇懿数学摸整 藐麓效遗遮掰菇上掰毒节患謦羹较荛容易 用程序实现铎普通算法的特点 同时 作为控制测试程序的逡行调度算法 迸应 该其骞测试稳房运行黪特点 能强诞灏试程黟裁够秘学 塞羧蟪运李予 令好豹 运行调度算法能在一定程度上简化和优化测试程序的设计 碍淤翔遂 对一揲耱有鬻耱经焚兹逮魇算法 一转是 潦度饶强 一耱是 广度优先 简单的说 深度优先 算法就是在访问了一个节点以后继续访问 该节患豹子磐点 戳及这个子繁点蠡孽子苓点 塞委一个节煮熟嚣弯孑肇蠡都谤 蠢 完后 才访问这个节点的兄弟节点 从算法实现方法上看 深度优先 算法在 编穗实现主毙较楚草 在找到瓣豹头节点 农谤润了该节点嚣 建交 令链袭来 保存连接到该节点上所以予节点 然后依次从这个镳装中读出每一个节点 同时 在访润它嚣魄为该节点建立一令臻移其予节点链表 在这令镳表串联骞款子节点 全部访问完厝 才返阐继续从链表中读出另 个节点 访问它和它的予节点 反 复这个过程瓷劐爱以麴节点全部邦被谤阕 髑程序载实现 可以通过逡 磬调照一 个访问一个节点的予节点的黼数实现 对于 广度优先 算法 就是在找到树的 头节点螽 毙访翘该节点豹联有子节点 然殿依次访问这些予节点款子节点 逐 层访闯 直到最下屡的节点被访问 在程序爽现上较 深度优先 算法复杂 因 电子科技大学硕士论文 为这种算法不但要建立这个节点的下一层节点的镟表 同时还需要一个链袭用来 傈存已经被访阉 j 雯 僵是述没有谤淘它静下 层节点豹节点 司辩对这个链表的 存取上必须是有序的以保证能逐层递进地访问树上的节点 基于上面的分析 深爱优先 弊法具宥占用资源较少 易于编耩实现静优点 平台原来的运行控制函数就采用 深度优先 算法实现的 图2 4 是 深度优先 冀法的一令简单的实现挺黼 图2 4 深度优先算法的实现樵图 然而本文发现 用单一的算法窳现运行控制函数 使平台在运行某些测试程 序的对候存在一些缺赡和不足 对予图2 2 所示的程序例子 在乎台上运行顺序 是 循环控件一 熬数控件一 子稷序l 控件一 下次循环一 然后回到循环控件 同样连接到循环控传上的波达式控件没有被调用 这是由于在循环控件运行结束 后 整数控侔和表达式得到了循环控侔输出的数据满足运行条件 运行控制函数 先得到整数控件的对象并执行该控件 根搽控制函数的实现算法 它这时首先访 问连接在熬数控释籍面酶靛件 发现下次循环控伴也满足逮行条悴 所殴藤先调 用执行下次循环控件并开始新的循环过程 从而跳过了表达式控件 可以看出 由于平台采精肇一的深度优先遍历冀法使平台在运行菜些特殊测试程序时 测试 程序的运绁会出现控件运彳亍顺序上的不合理 作者认为 运行控制黼数实王见算法 上瓣缺陷魏蹩这种不舍理弱原因 为此 本文为平台运行掩髑蟊数提赉新的实现 算法 电子科技大学硕士论文 2 3 运行调度调度算法的提出 9 1 试程序由控件和它们之间相飘连接的连线构成 控件是构成测试程序最基 零懿元素和肇位 要褥婪一个合瑾熬程彦接铡遍历舅法黄先疲该麸分辑终热用户 编程元素的控件入手 根据控件和测试程序的特点提出运行调度算法 歇蚕2 i 孛懿测试摇黟作者发溪 一般控终篡旁嚣穆炎型豹琴 辫 一耱是 数据引脚 俄于控件的左右两侧 是测试数据在控件上的输入输出接口 位于控 磐左鼹戆是数据辕入萼 辫 寒舞是数撵输出孳 嬲 男 耱是羟割雩l 辫 垃予控 孛 上下两侧 控制输入引脚位于控件上面 引脚位于控件下面 由于引脚类型的不 露 逐接到按箨豹逡线类型瞧有嚣秘 一秘是数据线 在平台上锺菝色表示 通常是从一个控件的数据输出引脚谶接到另 个控件的数据输入引脚上 用来传 递控 孛自己产生或燕控 孛通过计算德到静各葶孛数据 它 是测试程摩中的主簧信 息流传递的通道 备种格式的数据 包括实数 整数 浮点数以及命令字符等 也都可以在数据线上传递 另一种怒控制线 在乎螽上用灰色表示 它可能是 从控件数据输出引脚或是控制输出引脚连接到另一个控件控制输入引脚上 在这 张连线上传播的数撼可能是从数据输出引脚上输出的各釉测试数据 也可能是由 控制输出弓f 脚输出的控制信惠 但是由于其数据接鬣端都是控制输入引脚 所以 控件只会确认控制遗线上有无数据聪不会去分析连线上的数据格式翱数据信息 控讳不一定需要控制数据输入 但是辩于控锖 输入g 脚连接肖连线的控件在控裁 数据没有到达时该控件不能运行 平台正怒由于忽略了连线和弓l 脚类型上的区别 将连接弼一个控件上所肖控 谗都潼作是这个控件的子控伴 运行完了所有子控件后再运j 亍其他控传 才会出 现上面测试程序运行的缺陷和不足 为了在装述上方便和准确性 根据数据终构中的定义并结合平螽中的测试程 序的特点 在这里先定义几个名词 父按终积予按秸 慰子有连接关系的几个控传 称其中数攒按出控伴为 数据接受控件的父控件 反之 接收数据控件就是输出数据控件的予控 件 在图2 3 中 按件1 燕控件2 控件4 和控件5 豹父控传 冠样这 三个控件就是控件1 的子控件 兄麓控枣 逶接到鄹一个控 孛同类裂辕出弓l 脚上豹掰有控侉 她奶糖亘 称为兄弟控件 比如控件2 楚控件4 的兄弟控件 但控件5 不是它们的 兄弟控件 毅戈它们连接在控锌l 不恩类型豹输出萼 脚上 同滕控件 把连接到一个控件数据输出引脚上所有控件 包括直接逑接 电子科技大学硕士论文 和连接狂它子控件数据输出引脚上的控件称为同层控件 图2 3 中控件 1 瓣嚣屡控臀包懿控传2 3 4 7 下层控件 将连接在一个控件控制输出引脚上所有控件和这些控件的同 鬃控停称为该控佟夔下髹控箨 奁踅2 3 中控舞5 蔗控馋l 是下滋控锌 控件6 是控件4 的下层控件 利用 深度我先 算法实现豹运行控翻函数崮予忽硌了弓l 舞秘连线在炎鍪l 上 的区别 这种运行调度方式虽然对于一般测试程序是可行的 但是从上面的分析 哥淤看出这并不怒簸合理 最辩学翡调度舞法 终者透过对嚣癸两类登产貉安捷 伦公司 a n g i l e n t 的v e e 进行分析后发现 对于连接在控件不同类型输出引脚 上戆控终菸骞不凌鑫孽运孬俊先缓 连接在数豢辕瘗雩 瓣上懿控终懿运行优先级毒 予连接在控制输出引脚上的控件 同对 乍者还辩各静参数在实酝漏量串静溺羹 j 篷程和测试特熹结合劐平台中 的测试程序进行了分析 在实际测量中一个仪器将测试数据或是自己产生的波 形 毫压彀流绩号逶 i 童接鞠纛连接电缓输入型荚 龟经器中 这些仪器在褥澍数据 以后就对这些数据进行相应的处理 这个过程用测试程序反映就是 个控件将自 己数据逶避雩l 辫竣出嚣 接受到这些数据黪控 牛载依次霹这令数攒避嚣分缀 处 理 或是传递给其他控件或是将他们显示出来 根据实际中的测试顺序 平台在 调建一令控转运行结束以菇 氇盛该蓄走访翊 帮谭羯您到这些数攒豹控 争 因为 控件接受到新数据后就应该马上对数据进行处理和分析 特别是对测试实时性比 较态豹参数融 更趣该如此 控俅控毒l 输残弓 嬲输出的控剿信号 竣者控传控割 输入引脚得到的数据只是一种允许控件运行使能信号 用户控制引脚连接糖件是 为了确定多个控传之间的运行先鼷顺序 它与实现测量中豹测量数据没有关系 将实际测试的顺序在运行测试程序上实现就是在一个控件运行结束后 将控件产 生成处理磁褥到的数据通过数据输出弓i 脚输出到长之连接的控件中 同时从控制 输出引脚输出控件数据 褥到数獬的控件有可能都已经满越了运行的条件 等待 运行调度溺数调用他们运行 根搦测试首先应该运行那些得到测试数据的控件 在将所有处理测试数据的控侔全部运行结荣后 才进行下黼的操作 也就楚才运 彳亍郏些得到控件傣号的控件 从程 芋运行调度顺序角度进行分析 涟接到一个控件的数据输出引脚上的控 传在运行优先级上比连接农控件输出引脚上的控l 牛离 对于一棵运行树 调用树 的节点控件运行优先级关系可以表示为 个控件的同层掇件的运行优先级高于 它的同层撩 牛的下层控件的运行优先级离于它的下层控传的运行优先级 从算法实现角度分析 如果只考虑一个控件的间层控件而不考虑它的和它同 9 电子科技大学硕士论文 层控件的下胺控件 其运行顺序应该是符合 深度优先 算法 及强调用运行连 接京它豹数攥裣氆攀l 瓣嚣上豹一个羧俘磊 繁鼹羞会调羯连犊在这个控彳睾数据裣 出引脚上的控件运行 直到它的同层控件运行完后才运行它的兄弟控件和兄弟控 譬熬弱层控 警 热暴考瘩将 令控 警及萁两攫控锌鹣下层控馋 郡么疆痒熬运露 倾序就符合 广度优先 算法 因为只有将一个节点的所有同层控件运行结荣以 嚣 力 运行它爨兹下爆控磐 对予下缮控咎运行慰是按照从下往上的j 蠖彦调用粒 先运行予控件和它同层控件的下层按件然后运行父控件的下层控件 瓣子强2 2 中爨示豹溅试程瘳翡援影模墼 羧 警l 运行结束爱 控馋2 控件3 得到它从数据输出引脚输出的数据 同时控件5 也得到了数据 它们都满 足运行条终 投摇上嚣分辑瓣结票 控磐2 4 毙控黪5 具鸯爨寒兹遮嚣爨必缓 所以先运行4 控件2 和控件4 运行的先后顺序是由用户产舷他们的先后顺序决 定豹 竣爨数据屠控 孛7 我控供6 遐黠褥努 数据瞧满足运行豹条移了 然褥控 件7 由于连接在控件4 的数据输出引脚上 比控件2 和6 具有高的运行优先级 所以先运行挖锌7 然后才是按 孛2 以及连接在它数据输出引脚上的控传3 在连 接到控件l 的数据输出引脚上所有掇件全部运行结束以后 才运行连接在它们控 件璇出引脚上嚣的控件6 和按件5 对这个程序的逡幸亍也就结束了 通过以 匕的分析 本文提出了一种更适禽测试平台运行 使测试程序运行更 为科学豹运行调度方式 这琴孛运行调度算法怒一静赫予经典 广度优先 算法 而又有别于它的算法 对于撩件的下层控件来说 它们运行麟于该控件的同朦控 件 这时算法类似 广度优必 算法 但是 只是对于控件豹月层控传来看 其 遍历算法符含 深度优先 辩法 所以这种算法结合了经典 广度优先 和 深 度优先 算法规则 根据实鼯测试特点和平螽申控传特点提出的 悬符合实际测 试舰则 平台所特裔的运行控制算法 2 4 运行调度算法豹实瑷 2 4 1 经典 广皮优先 篝法的实现 上文介绍了 深度优先 算法 佬可以利用循环递归调用方法实现 由于上 文提翻 本文提出懿运行谖浚算法实残基予 广废臻受 冀浚 繇戳 撵者蠢毖 要在这里先对实现 广度优先 算法作简要介绍 广度傀先 算法不稚摹l 用一个篱荜懿循环递麴谪震方法实褒 它需要一个 辅助链表作为保存已经访问邋但是还没有访闷其后继节点的节点 同时 对这个 链表鹃操俸蒸有骞净经 对这个链表翔不同读敬l 骧淳实褒酶冀法对褥躲速象鞭彦 也不相同 经典 广度优先 算法的实现方式是将新节点添加到这个链表尾部 1 0 电子科技大学颈 论文 需要访问其后继节点的节点从这个链表的头部依次驳出 这样程序将按照节点在 褪上的层次邂层访 赫 然两本文提魄的运行遍历算法需要先访闻数攒接渡接俘懿 下鼷控件然后才访问数据输出控件的下层控件 先访问下层控件的下层控件然后 访阏上次控佟黥下鼷控箨 这释速掰颞序与经典 广度优先 算法又有掰酝鄹 为了实现运行调度算法 作者改变了对这个临时链袭的读取顺序 图2 5 悬经典 广瘦优先 算法蠡奄实现瀛程餮 b 1 圭 岁 7l 乒 一 茹 孳 1 1 w t 图2 5广魔优先算法的实现流程圈 2 4 2 掰个瞧爵镞袭的实竣 本文提出的运彳予调度算法是一种基于 广度优先 算法思想 同时在调用运 行控俸静两朦控彳孛鼯 又遴德 深度优先 算法熬一稀特殊箨法 魏栗采用 广 度优先 算法实现思路作为新调度算法的基本框架 那么新算法实现的关键在于 弼俺确定一个控释静两层控律和这个控释斡下层控锋 乍者遴遥控侉疆锌褥搿该 控件输出引脚 包括数据输出引脚和控制输出引脚 的对象指针 弼由这些日l 脚 可以缮至l 连接裂这蘩g 舞上箕链控 串 由予遴接在数据输出孳 辩上煞控锌与羟铡 输出引脚上的控件程运行上其有不同的优先级 需要对连接刹这两种不同类型引 电子科鼓太学硕士论文 脚土豹控彳孛嚣要用不同链表进行保移 所以 乍者设计了两个遍历连接到一个控 件输出引脚上控件的函数分别构建一个链表 用于保存控件的闻层控件和下朦控 件 根据运行调度算法规则 遍历谶接在控件数据输出引脚上的控件应该滋循 深度优先 算法 乍者在剁建控传的同层控孛 时 满要包禽它的予控借以及连 接在子控件数据输出弓l 脚上的所有控件 利粥类似实现 深度优先 算法的递归 调用遍历函数方法产生这个蠛对链表 图2 6 是在基炎中构建 个控传同层撩件 链表函数f o r 姗n e x t a r r a y c p t r a r r a y 竹a 的流程框图 图2 6 建立同层控件链表的实现流程图 该遗数豹入强参数戥是嚣要撞建鹣链表撵锋 羁跨该强数是控 串萋类c b a s e 1 2 电予科技大学硕士论文 中一个成员函数 需要构建同层控件链表的控件可以通过t h i s 指针调用该函数 这个函数必访闯溺褥该嚣数麴控移豹鼗熬输窭弓 脚 禳鬃夸l 繇上豹连线稳滚 依 次找到连接在这引脚上的所有控件 在得到一个控件对蒙后 将这个控件指针添 鸯蓊至l 链表张逵帮 同辩瓣这令掇锌迸行劐瑟 麴渠该控终不是孝嚣嚣控 串 裁裂 用这个控件指针递归调用本函数将这个擦件的同层控件也加入到链表中 实现 深度後先 算法中懿递努调舞l 辫子缓环控佟鑫l 予连接在毽匿覆爨控传楚震予 循环体的一部分 在运行调度顺序上有其独特性 将在后面进行帮独的讨论 这 壤不调臻该丞数露找锈舔控 牛熬溺层控 警班及矮垮髂中蕊毽控锌 对于鸯多个数 耀输出引脚的控件 要依次对连接在每一个引脚上的控件进行遍历进行相同的操 俸 在翟跨上薅一令多重簇强实疆 这撵擒建豹链表中缳蠢豹是与调羯该涵数豹 控件处于同一个朦次的所有控件 通过这种方式构建成的链表 控件在镳表中存 救戆顺序建按照 深度饯先 舅法顺序撼判 在遨行函数中调用该运数竞戏犀层 掇件链表的构建 直接从该链表中依次取出控件指针 调厢控件类中的功能实现 濑数 在完成构建一个控件的同层控件链袭后 还需要构造这些控件的下腠控件 媳羧是寻找连接凌该控传以及这令控 譬鼹层控 串控制输爨弓l 瓣上黔赝有技锌 为 此 作者在基类中还定义了构建保存连接在控件的控制输出引脚上控件的函数 f o r m n l a r r a y c p t r a r r a y t a 该函数的入口参数t 矗同群是嚣鬟构建镳表的对 蒙指针 函数通过调用该函数的控件指针得到控件控制输出引脚对象 也就可以 得到连接委h 该输如弓l 脚上的其他按件 在找到连接到控制引脚上的控件并将其加 入茔 链表的尾部以后 稔序并没肖结束 闲为 要构建的链表中不但需要包含连 接在控件控镱4 输出引脚上的控件 还要将连接在控制引脚上的控件以及这些控件 的同层控件全部加入至u 这个链表中 所戳在找到 个控彳牛后 作糟利用这个控件 对象调用构建同燃控件链表的函数f o r m n e x t a r r a y c p t r a r r a y t a 这样在运 行控件的下层控律时 就会依照 深度优先 算法顺序运行连接农控制输出弓 脚 t 的控件 圈2 6 是该函数实现流程框图 2 4 3 遁行控带 j 主函数的实现 上文介绍了蘸令函数爝类 援 深度饶先 算法实现方法建立 7 爨今旗辩链表 这两个函数都将烧运行控制主函数中被调用 运行调度算法也是在控制主函数中 棱实王霓 豢完成了翎建控 孛錾嚣链表螽 嚣要聪麓 广凄往先 冀法佟为筵本框 架来实现本文提出的运行调度调艘算法 根据上面给出的经典 广度优先 算法 滚疆模螯 舞羁弼上瑟嚣令建立镳表熬丞数 裁霹戳实褒我粕溅试平台蘩特骞豹 运行调度算法 电子摹萼技大学琰士论文 根据运行判断条件 对于没有数据输入引脚的羧件 豳于不需疆输入数据 它最先满足运行条件 通常这些控伴位子某一个运行树的头节点 诡就是运行的 起始控件 用户按下运行功能按钮以后 这些控件已经满足运行条件可以逡行 运行控制算法程序也是通过在这个辩候通过遍历运行链表 采寻找这些可醣运行 的控件 从而也就得到树的头节点控件 在得到树的头节点厝 运行控制主函数 可鞋依照上文介绍的建立恼翳寸链表溺数建立运行控 辱酶同蘑控俘和下层控件 强2 6 建立下层控转链袭懿蜜现流程强 作者定义了一个全局函数 e x e c r u n l c s y s r u n 奉p s r u i n tn r u n t y p e c v i e w p v i e w 入瑟参数审p s r 怒簧运行豹链表黪蒙豢钟 n r u n t y p e 是姿耱熬运行装 态标志变量 p v i e w 是运行镳表所在视的指针 一般情况下没有用 在单步滋行 露 霹疆逶 i 窭这个撂铮薅享雯孛控 孛避嚣重绘 在运抒控 孛蜜掰多 覆熬绘一个黄色 或是红色边框起到指示作用 在用户按下运行或是调试按钮厝 程序需要完成一 系残运行兹戆秘戆纯撩终 然嚣囊繁绞孛潺了一个毅线程专门躅予运行测试程 序 在运行线程函数e x e c t h r e a d l p v o i dp a r a m 中调用这个函数 开始根据调 度葵法翘剿遮魇运嚣链表 诵翅滚黑运孳亍条 孛抟控传运行 电子科技大学硕士论文 这个函数主簧实现流程是 首先 遍历运行链表中每 个控件的当前状态 找副一个嚣经满足运行条件豹控饽 这个控停只熊是没有数摆输入弓 嬲积控件输 入引脚上没有联系的控件 这样的控件就可以认为是位于用户编辑的测试程序中 一棵程序辩头节点的控件 在找到这个头节点控4 牛后 逶j 遣调用上蕊第一个链表 建立函数f o r i i l n e x t a r r 叫 c p t r a r r a y 灯丸 及递归查找控件的数据输出弓i 脚 建立头节点控件的同层控件链表 这就是临时链袋1 t a 调用t a 链表中每一 个控件运行 运行完t a 链表中的控件后 依次从链表张尾部取出 个控件 并 通过调用上文介绍的第二个建立链表函数f o r m n l a r r a y c p t r a r r a y t a 建立 这个已经遨行控髀的下层控侔链袭 这就蹩临时链表2 t b 完成 个控件下层 饿表t b 的建立后 运行该链表中每一个控件 并在每一个控件运行结束以后 爵该控彳辛力群入至 餍于傈存融经运行过但是还没有运行萁下层控件的晦时链表豫 尾部 当一个控件的临时链表t b 中所有控件都运行介绍以后 说明该控件的下 屠控律已缀全部运行奔缁 将临霹链表秘清空 释放资潦防止肉存渣漏 接下 寐继续从临时链袭t a 的属部取出 个已经运行过但是其下层控件还没有遮行的 控俘 芳建立 运行它静下层控释箍对链袭疆 蘩复自舔对链表张的尾帮船入 已经运行过的控件和从临时链表t a 中取出其尾部控件 直到链表t a 中控件个数 为0 氇虢是已经将嚣舂羧侔豹下联控谗帮运霉鬃寨 这榉 怼一橡褥熬遍历操 作也就结荣了 这段程序也就运行完成 我们用先进后出的顺序读取临时链表 强 霖涯7 在运行下层控绛薅是按照放褒麓淘主爨熬撬嚣颓痔 使予薅熬上滢豹 控件先满照运行条件 先被控制稷序调用逡行 也先进入链表t a 他们能于t a 粒蔫蘩 瓣位子运行秘疯爨豹控黪竣热劐了链表张嚣尾熬 我霞不薮楚铁链表 1 a 的尾部读出控件对象 井运行这些控件的下层控件 位于t a 前部的上朦控件 鹣下层控锉在最蜃方被运行 程序中 棵树运行结威后 整个测试程序的运彳亍却没有全部结束 因为在一 爹缝旁中弼缝存套多擐独立熬穗 掰疆嚣蘩继续寻找其镳头繁点控磐 重裁速溪 运行链表 直到发现链表中没有其他运行树的头节点 测试程序才运行结束 如 傅列颧运牙链表中没窍霹默运行瓣控转豹 我 3 葶i 震嚣令变量掺为擐翔送费链 表的两个指针 一个头指针h e a d 和一个尾指针t a i l 并初始化时都指向链袭的头 笋点 在逡历运行链表过糕孛 h e a d 不叛移动搔淘链表中熬控 孛 发褒 个可 以运行的控件时就让t a i l 指向这个控件 然后运行控件及其同羼和下层掇件 在 棵运霉予 据 运孝亍结藤惹霉要继续遍历运行镌袭 h e a d 继续耀后移动 丽 z a i l 保持指向在最近运行的运行 树 头节点控彳牛 当这两个指针再次相遇时 说嬲h e a d 遍历了躜毒控件且没有发现可以运行的按传 整个测试稔序运行结塞 漫厝 返回线程函数 结寐运行线程 图2 7 是该函数实现流程圈 电子科技大学硕士论文 圈2 7 运行控制函数的实现流程图 2 4 4 循环功畿静实臻 土文会绍了终黉为平螽提出熬运毒亍调度算法豹基本实现过程 对于鼷2 3 中照示的测试程序例子 篡运行顺序是 控件1 首先运行 然后悬控件4 控件 7 控终2 擦 牛3 竣螽才鼹控l 牛4 骢下层撩 孛 控传6 以及控搏l 戆下层控传 控件5 但是在我们的测试平台中有一些特殊的控件 他们的运行溉则不满足这 样的运行煅序 比如 缓环炎控件程缓环体中要进譬亍多次逡雩亍跳转 露并行按钮 控件则需要反复运行不断地响应用户消息 运行控制程序都需要对这些特殊功能 进行特别处理 测试穰序中控件运行顺序基本上按照从头节点副各个树枝节点依次运行 上 电子辩技大学磺 宅文 层挖 譬运零亍结束后 将褥到藏是计算出的中闽结果数据通过连线传递到和它有连 线关系的下层控件中 这戴控件在得到数据后满足了运行条件开始运行 它们将 自您处理戚的数攒结果继续向后传递 直到整个测试程序全部运彳亍结束 遨是一 种顺序的运行方式 然而夜测试程序中还会出现镶多非顺序的运彳亍情况 眈如利 用循环控l 牛 包括计数循环控件 变数循环控件 范围循环控件 循环到终止控 件和下次循环控件簿 可以让测试程序反覆执行其中菜一段程序 在实际测试过 程中 也经常会出现反复运行测试的情况比如要重复接收1 3 个数据 对波形进行 采样等都需要用到循环控件 循环控件运行与普通羧件的运行规则不同点在于 控 譬根据用户对其设置的 循环范围 超始点数值 循环步长等信息反覆运行滚接在数据输出弓i 脚上的控件 以及连接到这些控件上的其他控件 这些控件和缎环控件 起组成了一个循环 侮 胍循环体整俸运行过稔来看 出于要多次反复运行和跳转 英迳行顺序有尉 于 般程序的运行顺序 但是 循环体某一次运行顺序又是和整个测试程序的运 幸亍颓序相同 所班 对循环体中控件的遍历算法帮燕程序瀚调度算法相同 在循 环控件运行了用户设定的循环次数后 才从它的控制输出引脚输出控制信息 运 行德强控 串鼢下层控俸 幽予循环遮行有窭瑷程序蹒转兹憾滋 翔祭在主掇翻函 数的运行调度算法上对循环控件进行判断和实现各种循环跳转 主运行控制程序 瓣实现冀法不毽复杂瑟显运行效率低 嚣梵箨滓嚣簧鼹搪环控俘进行傈存黻实瑗 循环跳转 判断循环体的构成控件 如果遇到多重循环 情况就更加复杂 所以 终蠹挺凄 在运行期闺对缀嚣控謦滋行羯凝 手g 溪专门邈数实褒缓繇功缝 作者通过分析发现 循环体是 个比较独立的部分 在程序的萁他地方不会 雾 遴一个循环体牵运行循舔俸内部控传 奁锤环体避霉亍赣阗程序氇不会雾 转戮循 环体外 所以 我们可以把由循环类控件以及连接程其数据输出引脚的所有控
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论