VS2005系统

2024-06-18

VS2005系统(精选五篇)

VS2005系统 篇1

前段时间想为学校虚拟社区增加一个投票功能, 便在网上搜寻, 结果均是C#作品。本人只爱vb, 所以只好自力更生了。本系统启动后界面如图1:

本系统后台数据库采用了桌面型的ACCESS2003。内含两张表:一张vote_body, 只含两个字段:编号和body, body中存储了本次的话题。另一张表vote_choice, 只有三个字段:ID, choice, num。其中choice中存储了各个选项, num中存储了各选项的投票数。

以下是主页面load的代码:

其实, 每次只在VOTE_BODY中取出body字段中的数据来, 只取最后一条。不过我们在网站管理中, 最好把以前的BODY记录删除为好。

另一个getChoices也是自定义函数, 代码如下:

这个函数中, 取出的是当前的各个选项 (注意:当我们更换主题时, 要把原来的选项全部删除!) 。

“投票”按键的代码:

最后是一个“查看”按键, 代码最简单了, 只有一句话:showResult ()

本程序中, 对重复投票也做了一定的限制。原来的想法是取出其IP进行限制。在制作过程中又想到这是学校内部论坛的投票, 本来就有一定的游戏性质, 所以使用了SESSION进行限制, 在这个机制下, 投票20分钟后才能重新投票, 或是你重新启动进入本程序才能投票。在一定程度上限制了学生们无意识的乱点行为。

基本归因错误VS系统化思考 篇2

对于这个犀利幽默故事的真假我没有发言权。但和很多美国朋友分享后发现,无论任何国家的医院里,既可能会发生文章中的美国护士的版本,也可能会发生中国护士的版本。所以我认为物理的、地域上的差异并不是导致整个过程和结果产生巨大差异的核心所在,而恰恰不同版本故事下隐藏的人们解决问题过程中两种完全不同的逻辑:基本归因错误和系统化思考,才是导致整个过程和结果大相径庭的核心差异点。

当同样的问题发生后(如发错药),你用不同的逻辑去思考和探寻时(基本归因错误和系统化思考),你会得出截然不同的结论,从而促使你采取不同的解决方案,最终导致从当事人、团队士气和业绩等方面完全不同的结果。事实上,无论你在中国还是美国,无论你的工作是管理护士,还是管理跨国企业,它都可能让你“失之毫厘,谬之千里”。

我们先一块探寻一下基本归因错误和系统化思考这两种不同逻辑背后的差异究竟在哪里?

思考方式一、基本归因错误法

概念解析:基本归因错误(fundamental attribution error,FAE)是指人们常常把他人的行为归因于其人格或态度等内在特质上,而忽略他们所处情境的重要性。而且,行为学家发现非常有意思的现象是人们对他人和自己行为的归因经常会采取双重标准。即针对他人的行为,我们倾向于低估外部因素的影响,而高估内部或个人因素的影响的倾向。而针对自己的行为,我们则恰恰相反,会倾向于外部归因。结果是,我们相信其他人做错事时因为个性上的缺陷,而我们做了错事时因为被逼的。

这个现象在我们现实工作和生活随处可见。比如看到一个员工上班迟到了,我们很容易认为这个行为背后的原因是由于他缺乏责任心,不重视工作,性格懒散,没有时间观念等,而低估了外部影响因素;但如果是我们自己迟到,我们很清楚有很多外部因素对我们的行为造成影响,比如天气原因、交通管制、车坏了等等,总之我们不是有意为之,我们内心是非常希望准时的。

回到《发错药》的故事,中国医院的管理部门简单粗暴地认为造成发错药这个行为背后的根本原因就是护士本人不负责任,粗心大意,轻视病人的健康和医院的声誉,即使当护士玛丽分享了很多事实,如病人增加30%,孩子哭闹睡不好觉,药片颜色容易混淆等客观因素时,也统统被人们认为是找借口推脱。医院管理部门、媒体等每个人都通过简单归因快速得出自己的结论,大家都倾向于低估外部因素的影响,而高估内部或个人因素的影响,继而采取简单粗暴的解决方案,扣发玛丽当月奖金,全院通报批评,最终玛丽不堪压力辞职……

这种思考方式带来的解决方案,表面看似解决了问题,但那些被忽视的外部负面影响因素仍然存在,它们会继续引发新一轮问题,相信在不远的将来,发错药的事,甚至更严重的事件继续会在张丽、王丽身上发生,新一轮的蝴蝶效应会继续下去……

思考方式二、系统化思考的方法

概念解析:系统化思考的概念非常广泛。在这里,我们特指与基本归因错误截然相反的思考逻辑。即我们重视行为背后环境等诸多的影响要素,更全面系统的探寻原因和寻找解决方案。

其实我们中国人熟知的“孟母三迁”的故事就是一个运用此原理的好案例,孩子不好好学习,你不能只是简单归因为他不想好好学习,从而采取简单粗暴的奖惩措施,这可能一时有效,但行为很难持续。而“昔孟母,择邻处”,充分体现了孟母重视促进孩子努力学习背后的环境等重要影响因素。当他们住在墓地旁边,孟子就经常学着大人跪拜、哭嚎的样子,玩办理丧事的游戏;当搬到市集旁边去住时,孟子又学起商人做生意的样子,一会儿鞠躬欢迎客人、一会儿招待客人或和客人讨价还价;当他们搬到了学校附近,孟子开始变得守秩序、懂礼貌、喜欢读书。通过努力为孩子创造一个良好的环境,同时加上“子不学,断机杼”,予以自身示范鞭策,孟子最终成为了中国历史上影响深远的思想家。

系统化思考重要性毋庸置疑,工作中领导也经常提出这个要求,但这说起来容易,做起来难!过去人们更多是凭借个人在实践中经验和教训积累,就像是个黑匣子。美国Vital Smarts公司经过30多年最佳实践的研究和与社会研究成果相结合,最终破解了这个黑匣子,结构化地提出了人们行为背后的六大影响要素(如图示),可以帮助我们很快建立起系统化思考的框架。

动力和能力构成影响力模型的两大领域,同时又进一步将这两个领域细分为个人、社会和系统三个层面。这三个层面也反应了发展成熟而各自独立的不同方面——心理学、社会心理学和组织学。

来源1:个人动力:主要指从个人意愿。是喜欢还是讨厌,是否能从行为中找到意义所在。

来源2:个人能力:主要指个人是否有履行行为所需要的知识、技能和实力。

来源3:社会动力:主要指你周围的人对你的行为是积极鼓励还是消极打击。

来源4:社会能力:主要指你周围的人对你的行为是否能够提供支持和帮助。

来源5:系统动力:主要指工资、奖金和绩效体系等非人为要素是激励还是抑制你的行为。

来源6:系统能力:主要指空间、工作布局、工具、数据等非人为要素是否支持和配合行为。

在某一时间点,这六大要素中的某几个或全部可能在共同影响着人们的行为。如果你不去全面系统分析和诊断,将无法对症下药,找到真正长期解决问题的方法。

结合这个六大要素的模型,让我们再次回到《发错药》的故事中,中国医院管理部门没有全面诊断,简单认为玛丽发错药行为背后的原因就是粗心大意,不重视(来源1),所以解决方案也简单粗暴;而反观美国医院的管理部门,他们没有犯简单归因的错误,认为玛丽是不重视,甚至是故意为之,而是去多维度了解行为背后的原因,比如从最近一段时间病历记录发现“玛丽负责区域病人增加了30%,而护士人手并没有增加”,造成玛丽工作量加大,劳累过度。人员调配失误是造成发错药这个行为的影响要素之一。(来源4)

nlc202309040037

通过了解玛丽的家里最近有什么问题得知,她的孩子刚两岁,上幼儿园不适应,整夜哭闹,影响到玛丽晚上休息。这也是造成发错药这个行为的影响要素之一。(来源2和来源4)。

通过把玛丽发错的药放在一起进行对比,发现几种常用药的外观、颜色相似,容易混淆。药物本身的原因也是造成发错药这个行为的影响要素之一。(来源6)

当他们对影响行为背后的原因全面系统分析和诊断后,再针对性地采取了一系列举措:

针对来源2和4:与玛丽夫妻探讨如何照顾孩子,并向社区申请给予她10小时义工帮助。玛丽下夜班,义工照顾孩子,以保证她能充分休息。同时医院特别批准她“放几天假,帮助女儿适应幼儿园生活”。 医院心理专家走访了她,告诉她不用担心病人赔偿事宜,已由保险公司解决。

针对来源6:向药厂发函,建议改变常用药片外包装,或改变药的形状,增加辨识度,尽可能减少护士对药物的误识。

最后导致的结果是,玛丽工作更加认真细致,(来源1提升)也没有人发生类似错误。她和同事们都很喜欢自己的工作,想一直做下去。

如果我们就是不同工作场景中的玛丽,相信也会和主人公同样的选择。

从以上的案例和分析可以看到,当同样的问题发生时,我们采取不同的思考方式会导致完全不同的结果。处理得当,我们会促成问题短期和长期地解决,让坏事变为好事,而如果处理不当,我们会引发问题升级,并为未来埋下隐患。而避免基本归因错误,找到系统化思考问题的方法就是帮你迈向成功的关键路径。如果你有意识并掌握和运用核心方法,无论你在中国还是美国,无论你的职业是管理护士,还是管理跨国企业,你都能游刃有余,获得更好的结果,成为更有影响力的人。

后记:

有的读者看到这里,可能还有一个疑问,系统化思考与找借口的区别在哪里?如果以后工作中员工犯了错,每个人都不从自己身上找问题,而是抱怨公司这样或那样的问题怎么办?

我的观点是,应该辨证地来看:

首先作为当事人,即犯错误的人,不应该片面夸大环境的影响要素,应努力从自身找问题,反求诸己;

而作为管理者,应该避免陷入基本归因错误,简单武断的下结论,首先全面客观地从行为背后的六大影响要素探寻真正的原因,有的可能主要是由于环境的影响,当然也不排除就是当事者自身的粗心和马虎,也有可能两者兼而有之,但无论如何,只有你真正找到原因后,才能采取有效和长久的解决方法。

“基本归因错误”的双重标准(即当我们评估他人时,会高估其个人或内在因素,低估其外部因素;而针对自己时,则恰恰相反)是人的本性,但现在反向而为,要做到“对内自省”而“对外明察”的新双重标准的确十分不易,但心智的成熟、领导力的修炼从来就是一段艰难的历程,需要不断与自己的本性做斗争,现在前方的路径已经清晰,就等待你坚实的步伐了!

发错药后的美国护士 中国护士VS

这位护士叫玛丽,在纽约一家医院已经工作了三年。这年纽约气候异常,住院病人激增,玛丽忙得脚不沾地。一天给病人发药时,她张冠李戴发错了药,幸好被及时发现,没有酿成事故。

但医院的管理部门依然对这件事情展开了严厉地“问责”。

首先问责护理部。他们从电脑中调出最近一段时间病历记录,发现“玛丽负责区域病人增加了30%,而护士人手并没有增加”。调查部门认为护理部没有适时增加人手,造成玛丽工作量加大,劳累过度。人员调配失误。

然后问责人力资源部门的心理咨询机构。玛丽的家里最近有什么问题?询问得知,她的孩子刚两岁,上幼儿园不适应,整夜哭闹,影响到玛丽晚上休息。调查人员询问后认为“医院的心理专家没有对她进行帮助,失职!”

最后问责制药厂。专家认为“谁也不想发错药,这里可能有药物本身的原因”。他们把玛丽发错的药放在一起进行对比,发现几种常用药的外观、颜色相似,容易混淆。他们向药厂发函:建议改变常用药片外包装,或改变药的形状,尽可能减少护士对药物的误识。

那几天玛丽特别紧张,不知医院如何处理。医院心理专家走访了她,告诉她不用担心病人赔偿事宜,已由保险公司解决。还与玛丽夫妻探讨如何照顾孩子,并向社区申请给予她10小时义工帮助。玛丽下夜班,义工照顾孩子,以保证她能充分休息。同时医院特别批准她“放几天假,帮助女儿适应幼儿园生活”。

这以后,玛丽工作更加认真细致,也没有人发生类似错误。她和同事们都很喜欢自己的工作,想一直做下去。

护士工作辛苦是众所周知的,在美国,护理业成为非常受人尊敬的职业,除了护士较高的薪水和待遇外,我相信还有很多其他原因。

如果是在我们国家呢?

领导先劈头盖脸训斥玛丽:“你怎么能犯这种低级错误?现在医患关系这么紧张,医院没错还天天被人揪斗呢,你这不是给咱们院长找麻烦吗?”护理部召开紧急会议,最终,本着对患者负责、对护理部负责、对医院负责、对社会主义医疗卫生事业负责、对全太阳系、全银河系、全宇宙(含异次元空间)负责的态度,扣发玛丽当月奖金,全院通报批评。

患者听说自己险些被发错药,大怒,跑回家安排了一番。一个小时后,三十多个壮汉高举着“无良医院,还我公道”的伟大旗帜,闯入医院,把护理站砸了个稀巴烂。院长赶忙前来交涉处理,这些壮汉声称,他们都是患者家属,其中六个是患者的哥哥,七个是患者的弟弟,五个是患者的舅舅,九个是患者的爸爸……他们要为患者讨还公道,“公道”的具体内容是:赔一百万(必须是现金,不连号的旧钞),否则就向媒体“报料”。

然而,还没等双方开展进一步的协商,新闻嗅觉极其灵敏的无冕之王——记者就蜂拥而至了。记者们赶到护理站的废墟上,把玛丽围在中间。

CCAV记者问玛丽:“你为什么发错了药?”玛丽回答道:“是我疏忽大意,我承认自己的错误,以后一定注意认真核对。”记者又问:“你觉得有什么客观原因吗?”玛丽说:“主要是我自己的错误。”记者继续友好、和善、循循善诱地开导她:“也不能全怪你吧,难道一点客观原因都没有吗?”玛丽想了半天,很不确定地说:“最近我们病区的病人增加了30%,但护士人手没有增加。也许,病人多了,我们太忙了,就忙中出错吧。不知这算不算您说的客观原因?”CCAV记者听到这句话,大喜,马上结束了采访。第二天,CCAV播出了剪辑过的采访录音,录音中的玛丽只有一句话:“忙……就……出错”。播音员义正词严地评论道:“护士竟然公然叫嚣‘忙就出错’,按照她的逻辑,其他职业的人,如果工作忙,也都可以出错了?主刀医生忙,就可以给病人切错了地方?麻醉师忙,就可以给病人麻错了剂量?教师忙,就可以给学生讲错了知识?司机忙,就可以给乘客拉错了道路?况且,生命是最宝贵的,人的生命只有一次,而作为掌管生命的医护人员,尤其不能以任何理由当作出错的借口。生命,不容出错!谢谢收看,咱们明天再见!”

nlc202309040037

《正义日报》的记者问玛丽:“你以前发错过药吗?”玛丽回答道:“我以前从来没发错过药。”记者又问:“那你觉得这次发错药有什么原因吗?或者说,你现在的工作状态跟以前有什么不同吗?”玛丽说:“我首先承认自己的错误,发错药是我的工作疏忽,我以后一定注意认真核对。如果一定要说原因的话,我的孩子最近经常在夜间哭闹,我夜里要醒来哄他好几次,白天的工作状态也许受了影响吧。”第二天,报纸刊出文章:《护士只顾自己孩子却给病人发错药》。Balabala一顿义正言辞……

“亲民之声”网站的记者问玛丽:“你为什么发错了药?”玛丽答道:“是我的错误,我以后一定严加注意。”记者又问:“你觉得这两种药本身容易发错吗?”玛丽说:“也许这两种药的外观确实很相似,容易混淆吧。”第二天,“亲民之声”网站首页刊出文章《护士发错药,反怪药相似》。Balabala一番义愤填膺……

患者的三十多个家属天天来医院闹,医院于是报警了。距离医院数百米之远的***的JC,仅仅用了七个小时就赶到了医院现场。然而,面对三十多人打砸医院、打骂医护人员,JC却站在原地不动。院长问何故,JC说,这属于医疗纠纷,不是治安事件,不归我们管。最后卫生局和当地**都被惊动了,**拍板决定:医院一次性赔偿患者十万元,免除患者此次住院的全部费用,双方责任均不再追究。

院长回到办公室,心中不爽。打开电脑,正巧看到“亲民之声”网站上的一篇关于此事的帖子。帖子标题是《生命当儿戏,岂能一罚了之?》,帖中说:“像玛丽这样粗心大意、拿患者生命健康当儿戏的护士,不但应该严加惩罚,还应清除出医疗护理队伍,以保障广大患者的安全。”院长一琢磨,对,有道理。于是发布命令,将玛丽开除了。

护士长向院长诉苦:“20个护士管80张病床,本来就忙不过来。现在再开除一个,剩19个了,更忙不过来了。”院长说道:“要充分发挥护士们的积极性和能动性,大力挖掘护士们的工作潜能!你就跟大家说,从今天起,夜班费由五块钱涨到五块一毛钱!只要值十四个小时的夜班,就能轻松赚到五块一毛钱,她们就该有工作动力了!劳动力就像海绵里的水,只要你挤,总还是有的!”护士长不服气,反驳道:“工作更忙了,出差错的概率就更大了啊!到时候真要出了差错,还不是我们护士担责任?”院长一瞪眼,训斥道:“工作再忙,也不许出差错!哪怕只剩下一个护士,管一百个病人,也不许出差错,也不许完不成工作任务!这才体现你的管理水平呢!要常抓医德教育,提高护士们的责任心,制订严格的规章制度和考核标准,加强监督和惩罚力度,鼓励大家发扬一不怕苦,二不怕累,三不怕困,四不怕饿,五不怕骂,六不怕打,七不怕病,八不怕死的‘八不精神’!明白了吗?”护士长连声应允,退下去了。

VS2005系统 篇3

钣金加工过程中展开下料是第一道工序, 也是最重要的一道工序。传统的设计与制造首先是要完成钣金件的设计, 然后将其展开, 得到平面的展开图, 再根据展开图的尺寸来下料进行加工。正确完成钣金件的设计工作以及由工件的设计尺寸准确得到展开图尺寸是加工钣金件的前提条件, 传统方法是手工进行, 劳动强度大, 效率低, 而且特别容易出错。CAD技术正是解决这一问题的有效手段, 它不仅提高了钣金工的展开效率, 而且也大大提高了产品质量。

1技术基础

目前在钣金行业中, CAD技术应用还处于探索与起步阶段, 工件的三维设计及由三维到二维的工艺展开是进行钣金软件开发时所要着重处理的环节, 而如何圆满地实现三维设计与工艺展开功能则成为软件开发中重点需要解决的问题。

(1) 三维机械设计软件SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统, 是在Windows环境下实现的第一个机械三维CAD软件。SolidWorks提供了完整的、免费的二次开发工具, 多达数百个的API接口。凡支持COM编程的开发工具均可直接调用这些API函数开发出用户自己的程序模块, 提高了设计效率与正确率。

(2) COM技术是SolidWorks API的基础, 是由Microsoft提出的组件标准, 它定义了组件程序之间进行交互的标准。COM定义了一种创建、使用和扩展基于组件模型的应用标准, 是面向对象技术的扩充。它的语言无关性, 使编写组件所使用的语言与客户程序所使用的语言可以不同, 为跨语言的合作开发提供了统一的标准。组件对象的重用性是建立在组件对象的行为方式上, 而不是具体的实现上, 程序员可以用不同的方式来编写客户程序和组件程序。

(3) ActiveX插件是一个开放的集成平台, 为开发人员、用户和Web生产商提供了一个快速而简便的在Internet创建程序集成和内容的方法。使用ActiveX, 可轻松方便地在Web页中插入多媒体效果、交互式对象及复杂程序。ActiveX插件是当用户浏览特定的网页时IE浏览器即可自动下载并提示用户安装的插件, ActiveX插件安装的一个前提是必须经过用户的同意及确认。

2钣金件开发应用实例分析

本文以VS.NET 2005为开发环境, 以圆锥管钣金展开设计为例来说明系统的使用方法。此系统客户端只需装载Volo View Express和Spinfire两个插件, 用于显示二维展开图形和三维生成图形。正圆锥台展开设计图见图1。

2.1 钣金件展开计算模块

展开计算模块主要完成圆锥管展开的计算, 并将计算结果写入SQL Server数据库中。组件对象模块的开发采用C#、VB编程语言来实现。用C#语言做界面的设计, 用VB语言来实现COM模块的定义和类接口。用VB语言来实现图形的绘制代码的编程, 用类封装起来, 因为AutoCAD的VBA、Visual Basic编辑器和SolidWorks的宏录制及API函数都是采用VB语言的, 而系统设计可以直接调用这些类, 这样就大大提高了编写代码的效率和代码的可重用性。

利用这个展开模块, 用户只要在展开界面中输入钣金展开的已知条件参数, 然后在COM模块中进行计算, 通过图形绘制代码与SQL Server数据库存取数据, 利用API函数接口和生成图形类就能完成绘图, 自动生成钣金展开图形。最后利用Volo View Express插件把生成的图形显示出来。其中Volo View Express嵌入IE中的代码如下:

<object classid="clsid:8718C658-8956-11D2-BD21-0060B0A12A50"……>

<param name="src" value="F:img7.dwf"/>

……

</object>

其中, classid是必须的, 它是ActiveX控件的URL地址, 可以在注册表的“我的电脑HKEY_CLASSES_ROOTCLSID[BF{classid}”下找到。不同对象 (ActiveX控件) 的URL地址是不同的。

展开模块的界面见图2。在该界面中输入圆锥管展开参数并单击展开图按钮, 系统会利用计算参数并调用钣金展开组件中的接口函数进行计算, 并调用生成图形代码进行绘图。相应的展开计算公式如下:

(1) 整锥台高:

H=Dh/ (D-d) 。

(2) 上部锥台高:

h1=H-h

(3) 整圆锥展开半径:

R=Η2+ (D/2) 2

(4) 上部圆锥展开半径:

r=h1R/H

(5) 展开料夹角:

α=180×D/R

(6) 展开料大端弧长:

SD

2.2 钣金件生成图形模块

生成图形模块完成三维图形的生成, 主要用三维机械设计软件SolidWorks的宏录制和API函数来实现, 其基本原理与展开模块相同。其中生成图形的显示部分是采用Spinfire插件嵌入IE中实现的。生成的正圆锥台立体图见图3。

在建立的网站上添加引用“SolidWorks 2006 Type Library”COM组件, 用于三维图形的生成。其生成图形的代码由SolidWorks的宏录制产生, 用VB语言生成一个图形生成类, 这样就实现了网站平台的语言无关性, 大大提高了工作效率。具体的图形生成代码如下:

//定义变量

SldWorks.SldWorks swApp

ModelDoc2 Part

Long longstatus, longwarnings

……

//链接SolidWorks

swApp= CreateObject ("SldWorks.Application") ;

//建立一个SolidWorks应用对象, 打开文件

Part = swApp.OpenDoc6 (save, 1, 0, "", longstatus, longwarnings) ;

Part = swApp.ActiveDoc;

……

//变量驱动需要修改的尺寸

……

Part.SaveAs2 "D:demo.SLDPRT", 0, False, False;

swApp.exitapp;

Part = Nothing;

swApp.CloseDoc;

……

3小结

本系统应用组件对象模型技术和ActiveX插件、COM技术将钣金件展开中大量复杂的计算过程独立出来, 既方便了系统程序的模块化设计, 又利用了COM模块的可重用性。COM组件具有语言无关性, 使该模块的移植和升级成为可能。而ActiveX插件的使用, 使客户端不必装载庞大的AutoCAD和SolidWorks, 只需安装两个很小的Volo View Express和Spinfire插件, 就能完成图形的浏览。

摘要:以V S.NET 2005为开发环境, 应用COM的模块化编程技术, 开发了钣金件设计系统。在IE中显示钣金件的二维展开图形和三维生成图形, 为设计人员提供了方便、高效的设计途径, 大大提高了钣金件的设计效率。

关键词:VS.NET 2005,组件对象模型,ActiveX,钣金件

参考文献

[1]江洪, 张培耘, 江帆.So lidW orks钣金实例解析[M].北京:机械工业出版社, 2006.

[2]So lidW orks公司.So lidW orks AP I二次开发[M].生信实维公司, 译.北京:机械工业出版社, 2005.

[3]翟洪绪.钣金展开计算法[M].北京:机械工业出版社, 2000.

VS2005系统 篇4

由于众多严重害虫(如棉铃虫、蝗虫、粘虫、甜菜夜蛾、草蛉、玉米螟及蚜虫等)都具有迁飞习性,使得对昆虫飞行行为的研究具有重要意义。自Hocking(1953)研制出第一部昆虫飞行磨以来,昆虫飞行磨便成了研究昆虫飞行的主要设备。对于揭示昆虫的起飞、降落规律;昆虫与环境条件(如温度、湿度、光照和气流)之间的关系;以及食物营养对昆虫飞行能力的影响等关系具有非常重要的作用。

昆虫飞行磨一般采用磁性材料,使昆虫处于磁悬浮状态下绕磨飞行,以尽量减少摩擦阻力的影响。由于摩擦阻力是不可能完全避免的,传统飞行磨在数据处理时,只是加入了统一的摩擦补偿系数以对瞬时飞行速度进行校正。显然对于不同飞行磨,因其制造工艺所限,摩擦补偿系数不尽相同,随着飞行磨的使用,不同的损耗程度使得摩擦补偿系数也会发生不断的变化。早期飞行磨由Applesoft语言编写在DOS系统下运行,在20世纪末仍由Quick Basic编程在UC-DOS系统下启动[1],目前很多研究用飞行磨仍使用这样的计算机软件进行数据收集和处理,明显已不能适应当前通用的Windows系统环境。

本软件采用自动校准的方法,每次使用前自动修正摩擦补偿系数以最大限度还原昆虫的飞行行为;并且以VS2005作为软件实现平台,这样在Windows系统下可以方便安装、使用本软件;利用通信控件[2],图表控件,表格控件实现一次处理20个飞行磨数据,记录飞行时间、飞行距离;计算飞行速度的最大值、平均值、最小值等数据统计功能,并可保存结果到文本文件中,对昆虫飞行领域的研究有很大的帮助作用。

1总体方案概述

昆虫飞行磨采用计算机软件控制和单片机数据采集,适用于微小昆虫和鳞翅目昆虫的昆虫飞行信息的采集及分析处理。本文根据昆虫飞行磨硬件采集系统的要求,设计一套针对昆虫飞行时间、飞行距离、飞行速度的自动收集处理软件。整个飞行磨系统由飞行磨装置、光电信号转换、数据串口传输和计算机数据处理结果显示几部分组成[3]。昆虫飞行磨系统整体框图如图1所示。

对软件部分,本文采用普通PC机作为信号处理装置,通过计算机串行端口与飞行磨外部设备相联。使用灵活方便的MSComm控件通过串行端口传输数据,为软件提供串行通信功能。使用TeeChart控件支持多曲线共用1个坐标轴的显示功能,独有的无限坐标轴功能使每条曲线有各自的坐标轴及相应坐标高低值,完全满足多条速度曲线同时显示的工程应用需求,并使用UltimateGrid72控件将采集到的数据及统计结果以表格的形式显示出来。

1.1 自动修正摩擦补偿系数

每次在带虫飞行前,空磨测该飞行磨当前的速度衰减情况。即计算单位时间速度的变化量(Δv/t),也就是空磨时由于摩擦力作用而形成的负加速度,由于假定在每次实验中空磨摩擦力不变,根据F=ma,可知加速度也是恒定的,又有undefined,所以计算出的单位时间速度的变化量是恒定的,即可做为昆虫飞行速度的补偿系数。

这样昆虫瞬时飞行速度为

undefined

式中,v为昆虫飞行速度,r为昆虫飞行轨道半径,ΔT为昆虫飞行N圈的时间间隔。

1.2 数据采集及处理

首先要为每一个飞行磨输入一些基本信息,确保记录清晰,方便日后分析整理,具体包括:飞行磨上的昆虫名称、性别、日龄、体长、体重、翅展、来源及一些其他的相关备注信息。采集数据时每收到一次信息就将当前的时间(精确到秒)和采集到的数据一起存盘备份。

需要计算每个飞行磨各自的昆虫飞行情况,总的飞行时间、净飞行时间(扣除昆虫停歇时间)、平均飞行速度及净飞行平均速度、飞行里程、瞬时飞行速度、最大瞬时飞行速度及最小瞬时飞行速度等。这些数据结果以表格的形式显示出来,也可以通过坐标图来进行显示。这样就可以模拟各种自然条件,比如营养、温度、光照、风速及湿度等,研究它们与昆虫个体飞翔行为的关系,以便对昆虫飞行能力进行深入研究。

为了计算以上各参数,需要记录昆虫飞行磨飞行N圈的时间间隔ΔT、停飞的时间间隔ΔTs。

瞬时飞行距离为

ΔS=2πNr (2)

式中r为昆虫飞行轨道半径。

瞬时飞行速度为undefined

式中ΔS为瞬时飞行距离,ΔT为飞行N圈的时间间隔,δ为摩擦补偿系数。具体可参考式(1),知道瞬时飞行速度就可求出最大瞬时飞行速度及最小瞬时飞行速度。

将每次正常飞行的飞行距离累加即为总的飞行里程S。

undefined

同理正常飞行的时间间隔的积累即为总的飞行时间T。

undefined

平均飞行速度undefined

式中S为飞行里程,T为飞行时间。由于昆虫是间歇性飞行,所以计算净飞行速度及净飞行时间具有重要意义。净飞行时间TS为飞行时间(T)减去飞行时间内所有停飞时间段的累加和undefined,即

undefined

故净飞行平均速度undefined为

undefined

式中S为飞行里程,TS为净飞行时间。

2 主要功能的实现

本软件流程图如图2所示:

首先打开VS2005,建立一个基于对话框的MFC应用程序[4]。在对话框上的空白处点击鼠标右键,在弹出的快捷菜单中,选择“插入ActiveX控件”,在接着弹出的对话框中列出了本机所有的已经注册的控件,选择“Microsoft communication control, version 6.0”,点击确定,这时对话框中就出现了一个电话图案的图标,程序运行后,这个图标是看不到的。

2.1 使用MSComm控件实现串口通信[5]

为了使用MSComm控件来实现串口通信,首先需要为该控件添加变量。右键单击“电话图标”,在弹出的快捷菜单中选择“添加变量”,在接着弹出的对话框中,“变量类型”默认为CMscomm1;“类别”为Control;这里将变量命名为m_ctrlComm。这样就为该控件关联了一个成员变量。

然后应该对该控件进行必要的初始化,相对于VC6.0,VS2005要容易得多。选中“电话图标”,打开其属性列表:“CommPort”是端口号,此处设为1,即选择com1进行串口通信;“InBufferSize”是输入缓冲区的大小,此处设为1024;“OutBufferSize”是输出缓冲区的大小,此处设为512;“InputMode”是设置输入方式,此处选择Binary,即二进制方式;“Setting”是设置波特率等参数,此处采用默认设置即9600,n,8,1;“RThreshold”为接收阈值,此处设为1,表示接收缓冲区中有多于或等于1个字符时引发一个接收数据的OnComm事件;其他属性可按默认设置,也可根据需要做适当调整。

这里MSComm控件采用比较实用的事件驱动方法,即有事件(比如接收到数据)时通知程序。双击对话框中的“电话图标”,在OnComm函数中对事件进行处理[6]。

本软件中接收到的数据会以字符串的形式保存在strReceive变量中,并且根据需要设计了一个接收数据结构体,用来有序的存放接收数据。另外,可根据需要将接收到的数据转成double型或int型,比如:

oneFeiXM.cmR=_wtof(strReceive);

本文使用UNICODE数据集,如要使用以上函数需包含“#include”头文件。此外本文采用C++标准模板库(STL)中的矢量作为主要的数据存放容器,这种方法可以动态的改变数据大小,比常规数组灵活,又不会引起由指针使用不慎造成的内存泄漏等问题。为了使用矢量类型,需要包含“#include”头文件。

实现数据的串口接收功能后,就可对接收到的数据采用前面介绍的各种计算公式进行计算,求解出所需的各参数值,即对结果数据的显示工作。首先介绍:1) 使用TeeChart显示速度曲线图;2) 使用UltimateGrid72将各数据以表格的形式显示出来。

2.2 使用TeeChart控件显示速度曲线

首先要添加一个新对话框用以显示速度曲线,在“资源视图”中,选中“Dialog”点击鼠标右键,在弹出的快捷菜单中,选择“插入Dialog”。在新对话框中,单击右键,在弹出的快捷菜单中,选择“添加类”,在接下来出现的对话框中,定义“类名”为CSHOW,点击完成。然后定义该类的一个对象,比如CSHOW showV,在CSHOW类中定义一个成员变量data用以存放需要显示的速度数据。例如

showV.data=allFeiXM;

// Display the dialog as modal

showV.DoModal();

在新的对话框中,如同添加MSComm控件相同的办法,添加“TeeChart Commander v5”和“TeeChart Pro Activex control v5”两个控件[7],介绍如何使用TeeChart控件。

首先,根据需要对TeeChart控件进行初始化,双击“TeeChart Pro Activex control v5”控件对应的图标,出现如图3所示对话框:

点击“Add”键,选择“Fast Line”,点击OK。如此总共添加20条线,用来表示20个不同的飞行磨的数据。在“Series”选项卡内可为每条线设置合适的颜色,“Titles”选项卡可用来设置标题。

下面对“TeeChart Commander v5”和“TeeChartPro Activex control v5”两个控件分别关联成员变量,方法跟MSComm控件关联成员变量时一样,这里分别命名为m_teecommander和m_chart。

图4为通过一个昆虫飞行磨采集到的数据计算出的速度值画出的速度曲线图,在此用第4个飞行磨进行实验,由于实验数据较少,这里仅为4次实验的速度曲线图。在此界面中可以任意选择所需观察的飞行磨,Series0—Series19分别对应了从1—20个昆虫飞行磨,并且可同时显示多个飞行磨测出的速度曲线,另外在此界面中还显示了测试环境的一些基本参数,比如温度、湿度等。

2.3 使用UltimateGrid72控件以表格显示数据

使用UltimateGrid72控件可以方便地以表格的形式显示数据。UltimateGrid72控件因为是开源形式,可以直接把所需代码文件加入到工程中。本文使用两个表格控件:一个用来显示所测信息,一个用来显示该飞行磨的统计结果。主要设计代码在“MyCUG.cpp”文件中编写。通过SetNumberCols()、SetNumberRows()函数可以设计所需的列数及行数,然后通过QuickSetText()函数可以对指定的表格赋值,就可以将计算结果通过这个函数显示出来。另外如对齐、复制、改变背景色等功能,都有相应的函数进行设置。图5为实验使用的4号飞行磨的飞行数据记录界。

到此就完成了本软件中从串行数据接收到数据计算、数据显示等主要内容。最后可以利用VS2005的打包功能将控件MSComm、TeeChart所需要的动态库跟主程序打包在一起,形成一个*.exe的可执行文件,方便使用。

3 结束语

在VS2005环境中引用第三方控件MSComm、TeeChart、UltimateGrid72,用计算机串行端口将单片机接收到的数据传给本软件;通过TeeChart控件显示速度曲线图;以UltimateGrid72控件显示数据表格,程序自动修正摩擦补偿系数,得到更好的修正测速结果,对于帮助揭示昆虫的飞行特性具有重要的意义。

参考文献

[1]王洪平,胡振东,王萌长.昆虫吊飞数据采集与处理新技术的研究[J].沈阳农业大学学报,1999(3):281-284.

[2]李长林,高清.Visual C++串口通信技术与典型实例[M].西安:西安电子科技大学出版社,2006.

[3]王世磊.昆虫飞行磨系统与昆虫飞行能力测试系统[D].石家庄:河北科技大学,2011.

[4]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2007.

[5]侯艳.VS2005中串口通信的实现[J].信息技术,2009(4):15-20.

[6]黄大勇,王萍.基于MSCOMM控件的微机与单片机多机通信[J].总线与网络,2008(10):26-28.

VS2005系统 篇5

在农业气象中, 经常需要针对农作物对气象数据进行综合分析, 并通过图形化方式进行显示处理。进行程序设计时,如果采用常规的库函数调用来实现绘图往往费时费力而且图形生硬。而选用一个合适的Active X控件, 有时可大大减少编程工作量。Active X控件 (又称OCX) 基于COM技术, 作为独立的软件模块, 它可以在任何程序设计语言中插 入使用。Tee Chart是西班牙Steema SL公司开发的图表类控件 , 主要用来生成各种复杂的图形图表。通过对特定图行的绘制来介绍Thart控件在VS2005下的几种使用方法与技巧。

2 绘图要求

(1) 图形需要绘制出日气温 ( 包括日最高、低、 平均气温) 的变化曲线;

(2) 要以日为单位展现 出每日的 低温冷害 指数柱状 图 ,(该指数根据气温和水稻生长期参数计算得出 ; 在这里不是文章讨论的重点, 不作阐述)。

(3) 根据水稻生长的不同发育期以背景颜色示意出气温是否达到导致水稻受害的标准。

3 代码实现

3.1 同一绘图区双轴坐标系

由于图1需要绘制出温度变化曲线和低温冷害指数柱状图两种图形, 为绘图界面的美观, 此处采用双坐标系绘图的方式。图1中下半部分是以日期时间值为X1坐标, 低温冷害指数值 (即图示TI指数) 为Y1坐标; 上半部分是以生长天数为X2坐标, 温度数值为Y2坐标。部分关键代码如下:

3.2 曲线图和柱状图

图1中曲线和柱状图应位于不同的坐标系, 曲线绑定于X2Y2坐标系, 柱状图绑定于X1-Y1坐标系。关键部分代码如下:

3.3 矩形分块背景色

图1采用分块的方式来实现不同背景颜色的绘制, 总体上在Y轴方向颜色由深红色逐渐变浅, 以此来表现温度对农作物生长的影响更为直观好看。此段代码主要由两部分组成, 一部分为每个矩形色块的通用填充方法, 另一个部分通过对第一部分方法的调用以达到绘制所需图形的目的。关键部分代码如下:

4 结语

上一篇:黔东北地区下一篇:体育学习障碍