大连理工大学OOP大作业_开关盒布线问题_
大连理工大学22春“电气工程及其自动化”《电力电子技术》作业考核题库高频考点版(参考答案)试题号4

大连理工大学22春“电气工程及其自动化”《电力电子技术》作业考核题库高频考点版(参考答案)一.综合考核(共50题)1.软开关电路根据软开关技术发展的历程,可以分成几类电路,下列哪项不属于其发展分类?()A.整流电路B.准谐振电路C.零开关PWM电路D.零转换PWM电路参考答案:A2.零开关PWM电路的零电压开关单元中,含有谐振电感和电容。
()A.正确B.错误参考答案:A3.三相桥式全控整流电路对触发脉冲的要求为()。
A.六个晶闸管脉冲相位依次差60度B.共阴极组脉冲相位依次差120度C.共阳极组脉冲相位依次差120度D.同一相的上下两个桥臂上的晶闸管脉冲相位相差60度参考答案:ABC4.单相电流型逆变电路要求()。
A.负载电流超前于负载电压B.负载电流滞后于负载电压C.负载电流和负载电压同时D.以上都不正确参考答案:A下列各项中属于单相可控整流电路典型电路的是()。
A.单相半波可控整流电路B.单相桥式全控整流电路C.单相全波可控整流电路D.单相桥式半控整流电路参考答案:ABCD6.换流与换相是两个不同的概念。
()A.错误B.正确参考答案:A7.IGBT是一种电压控制型器件。
()A.正确B.错误参考答案:A8.维持电流指使晶闸管维持导通所必需的最小电流。
()A.正确B.错误参考答案:A9.下列哪些电路的变压器中流过的是直流脉动电流?()A.半桥电路B.全桥电路C.反激电路D.正激电路10.下列属于电压型逆变电路直流侧特点的是()。
A.直流侧可能为电压源B.直流侧可以并联大电容做电压源C.直流侧电压基本无脉动D.直流侧电压脉动较大参考答案:ABC11.单相交流调压电路中,电感性负载时与电阻性负载时相比,控制角相同时,随着负载阻抗角的增大,谐波含量将会()。
A.有所增大B.不变C.有所减少D.不定参考答案:C12.电导调制效应使得电力二极管在正向电流较大时管压降较高。
()A.正确B.错误参考答案:B13.单相交-交变频电路由两组特征相同的相控整流电路反向并联构成。
室内电气布线安全作业指南

室内电气布线安全作业指南在我们的日常生活中,室内电气布线是一项至关重要的工作。
正确、安全的电气布线不仅能够确保电力的稳定供应,还能保障我们的生命和财产安全。
然而,如果布线工作不当,可能会引发火灾、触电等严重的安全事故。
因此,了解室内电气布线的安全作业指南是非常必要的。
一、施工前的准备工作在进行室内电气布线之前,我们需要做好充分的准备工作。
首先,要对房屋的结构和布局有清晰的了解,确定电器设备的位置和数量,以及电源插座和开关的位置。
其次,要根据电器设备的功率和使用需求,选择合适的电线规格和型号。
一般来说,家庭常用的电线规格有15 平方毫米、25 平方毫米、4 平方毫米等,对于大功率电器,如空调、热水器等,应选择 4 平方毫米及以上的电线。
此外,还需要准备好必要的工具和材料,如电线、线管、线槽、开关、插座、配电箱、电工工具等。
在选择工具和材料时,要确保其质量符合国家标准,并且具有良好的绝缘性能和防火性能。
二、电线的选择与敷设(一)电线的选择1、材质:电线的材质通常有铜和铝两种。
铜电线的导电性能好,电阻率低,使用寿命长,但价格相对较高;铝电线的价格较低,但导电性能和使用寿命略逊于铜电线。
在家庭装修中,建议优先选择铜电线。
2、规格:根据电器设备的功率和电流大小,选择合适规格的电线。
一般来说,照明线路可选择 15 平方毫米的电线,普通插座线路选择 25 平方毫米的电线,大功率电器线路选择 4 平方毫米的电线。
3、绝缘层:电线的绝缘层应具有良好的绝缘性能、耐热性能和耐老化性能。
常见的绝缘层材料有聚氯乙烯(PVC)和交联聚乙烯(XLPE)等,其中 XLPE 绝缘层的性能更为优越。
(二)电线的敷设1、敷设方式:电线的敷设方式主要有暗敷和明敷两种。
暗敷是将电线敷设在墙内、地面或天花板内,需要在施工前预留好线槽或线管;明敷是将电线直接敷设在墙面或天花板表面,需要使用线槽或线管进行保护。
2、敷设要求:电线在敷设过程中应保持整齐、平直,不得有弯曲、打结、破损等现象。
大连理工大学22春“电气工程及其自动化”《楼宇自动化》作业考核题库高频考点版(参考答案)试题号1

大连理工大学22春“电气工程及其自动化”《楼宇自动化》作业考核题库高频考点版(参考答案)一.综合考核(共50题)1.下列关于组合开关说法不正确的是()。
A.可以用作频繁操作的电源开关B.可以用作控制与测量电路的开关C.可以用作小容量异步电机的开关D.组合开关有多对动、静触点参考答案:A2.定位轴线标号水平方向采用(),()标注。
A.阿拉伯数字,由左向右B.拉丁字母,由左向右C.阿拉伯数字,由右向左D.拉丁字母,由右向左参考答案:A3.照明方式可分为()、局部照明和混合照明。
A.全部照明B.重点照明C.一般照明D.装饰照明参考答案:C4.全频道系统理论上可以容纳()个标准频道。
A.48B.68C.79D.965.在建筑中,照明系统属于弱电系统。
()A.正确B.错误参考答案:B6.强电的作用是能量引入和能量的转换,主要关注的是效果。
()A.正确B.错误参考答案:B7.高供低备主结线方式中的备用电源为()。
A.400VB.3.8kVC.10kVD.10.5kV参考答案:A8.表明光源发光能力的基本量是()。
A.光通量B.光强C.照度D.发光效率参考答案:A9.我们通常所说的熔丝其实就是熔断器。
()参考答案:B10.根据灯罩构造和形状的不同,灯具种类可以分为深照型、配照型、广照型。
()A.正确B.错误参考答案:A11.单元配电箱除了有本层用户引出的线路,还有公共照明、三表数据采集等线路。
()A.正确B.错误参考答案:A12.主配电箱中分开关型号为GM100H-3300/160A,其中00表示()。
A.带漏电保护开关B.单极双线型C.无附件D.有复合脱扣器参考答案:C13.白炽灯属低色温光源,寿命长。
()A.正确B.错误参考答案:B14.下列属于辉光放电式光源的是()。
C.高压汞灯D.LED参考答案:B15.灯具代号H表示()。
A.防爆灯B.花灯C.荧光灯D.壁灯参考答案:B16.空气的主要状态参数有温度、水气分压力及相对湿度等。
电子电路中的布线与连接技巧

电子电路中的布线与连接技巧电子电路中的布线与连接技巧在电子工程中扮演着至关重要的角色。
一个良好的布线与连接方案可以确保电路的可靠性和性能稳定性。
本文将介绍一些常用的布线与连接技巧,帮助读者有效地设计和实施电子电路。
一、布线技巧布线是电子电路设计中的重要环节,合理的布线方案能够最大程度地减少信号干扰和线路延迟,提高电路的工作效率和可靠性。
以下是一些布线技巧的介绍:1. 信号与电源线分离布线:为了避免信号线和电源线之间的相互干扰,应该将它们分开布线。
在PCB设计中,可以通过增加地线层和电源层来实现线路的分离。
2. 信号与地线平行布线:信号线和地线之间的干扰可能导致信号失真,在布线过程中应尽量将信号线和地线平行布线。
这样可以减小线路之间的电磁干扰。
3. 避免直角弯曲:在布线过程中,应尽量避免使用直角弯曲。
直角弯曲会导致信号的反射和损耗,影响线路的性能。
4. 保持线长一致:在布线过程中,应尽量保持信号线的长度一致。
信号线长度的不一致会导致信号的传输延迟和失真。
5. 使用屏蔽线:对于高频信号或者噪声敏感的电路,应该使用屏蔽线来减小干扰。
二、连接技巧连接是构建电子电路的必要步骤,正确的连接技巧有助于提高电路的性能和可靠性。
以下是一些连接技巧的介绍:1. 使用正确的连接器:在连接电子元件时,应该选择合适的连接器。
不同类型的元件可能需要不同类型的连接器来完成连接,并保证连接的可靠性。
2. 检查连接质量:在连接电子元件之前,应该仔细检查连接器和导线的质量。
松动的连接或者损坏的导线可能会导致信号的失真和电路的故障。
3. 保持连接的稳定性:在连接元件之后,应该采取必要的措施来保持连接的稳定性。
例如,可以使用固定装置固定连接器,防止因为外部力的作用而导致连接断开。
4. 使用正确的焊接技术:在焊接电子元件时,应该使用正确的焊接技术。
合适的焊接技术可以确保焊点的可靠性,避免焊接过热或者接触不良的问题。
5. 接地技巧:对于电子电路来说,正确的接地是至关重要的。
电工电路布线原则

电工电路布线原则电工电路布线是指将电气设备之间的电源、开关、插座等连接起来的过程。
电路布线的质量和合理性直接影响到电气设备的正常运行和安全性。
以下是一些电工电路布线的原则,旨在提供一个安全、高效的电路布线环境。
1. 合理布局:在进行电路布线时,应根据实际需要合理布局。
首先确定电气设备的位置,然后根据设备的功率和用途,决定电源插座的位置和数量。
需要注意的是,高功率设备和低功率设备应分开布局,以避免电源过载和干扰。
2. 线缆选择:在电路布线过程中,应选择合适的线缆。
根据电流大小和线缆长度,选择合适的截面积和材料。
对于长距离传输,应选择低电阻、高绝缘性能的线缆,以减少能量损耗和电磁干扰。
3. 保持距离:在电路布线时,应保持不同电气设备之间的安全距离,以防止电磁干扰和火灾。
高功率设备和低功率设备应分开布局,以减少互相干扰。
同时,还应将电气设备与可燃物保持一定距离,以防止火灾发生。
4. 接地保护:在电路布线过程中,应注意接地保护。
合理设置接地装置,确保电气设备的安全使用。
接地线应连接到设备的金属外壳或其他合适的位置,并与地面接地。
接地线的截面积应足够大,以确保电流的正常流动和故障时的安全。
5. 标准化布线:在进行电路布线时,应遵循相关的标准和规范。
不同国家和地区有不同的电气安全标准,应根据当地的规定进行布线。
遵循标准可以确保电路的安全性和可靠性。
6. 定期检查:电路布线完成后,应定期进行检查和维护。
检查电气设备的连接是否正常,线缆是否破损,接地是否可靠等。
及时发现和解决问题,可以确保电路的正常运行和安全性。
7. 防止过载:在进行电路布线时,应根据设备的功率和用途合理安排电源插座的数量和位置。
避免过多设备连接到同一个插座,以防止过载和火灾。
对于高功率设备,应使用独立的电源线路,以保证稳定供电。
以上是电工电路布线的一些原则,希望能对电路布线工作有所帮助。
电路布线的质量和合理性直接影响到电气设备的正常运行和安全性,因此在进行电路布线时应严格按照相关的标准和规范进行操作,确保电路布线的安全性和可靠性。
1909 大连理工大学电源技术大作业

大连理工大学电源技术大作业姓名:袁伟学号:190019128677学习中心青岛博川经济专修学院学习中心题目五:大中型UPS逆变器分析总则:围绕大中型UPS逆变器,介绍其工作原理及其电路,并简述其在实际中的应用。
撰写要求:一、大中型UPS逆变器的工作原理在市电发生故障、异常时,很可能会对正在用电的用户造成数据损坏、硬件故障、编写程序的缺失等一系列问题。
不间断电源UPS 的出现使这个问题得到了解决,从此负载设备的供电质量上升到了一个新的台阶。
为了方便使用,UPS 被安置于市电电网与负载之间。
当市电电网发生故障异常甚至断电时,在电网与负载之间的不间断电源可以起着继续维持负载运行的作用。
在电力电技术子及相关产业不断发展时,大到航天飞机、超级计算机这些与国家战略方针息息相关的产业,小到笔记本电脑,医疗器械,开关等人民生活必需品,UPS 可谓无处不在,而这也显示了互联网时代人们对数据存储,程序设计可靠性的逐渐重视。
UPS 的种类多种多样,按照不同功率划分课划分为大、中、小三类;按照输入输出方式划分单进单出、三进三出等;还有早期的UPS 采用的是柴油机转换电能,不需要功率器件,这种UPS 是动态UPS,而采用功率器件连续向负载负载供电的UPS 称为动态UPS,动态UPS 和静态UPS 是按照UPS 的工作原理划分。
在线式UPS 的两条输出通道分别是交流旁路输出通道和AC/DC、DC/AC变换的输出通道。
交流旁路通道在UPS 未开机时是处于闭合状态。
在UPS 开机后,微处理器立即开始初始化操作程序,然后在线式UPS 进入软起动状态,接着在线式UPS 的逆变器开始正常工作,UPS 电源向负载供电。
(1)在市电对负载正常供电的情况下,在市电电压经过功率因数校正环节后,一方面为逆变器供电,由于逆变器逆变输出的波行是不平滑的,所以还需要经过LC 低通滤波转换为平滑的正弦波交流电提供给负载使用;另一方面,市电会经过充电器处理,之后对蓄电池充电,让电池处于饱和状态,以备不时之需。
建筑电气配管及布线中常见的问题及解决措施分析

建筑电气配管及布线中常见的问题及解决措施分析电气配管及布线是建筑电气工程中的重要部分,它直接关系到建筑物内部的电气设备的运行和安全。
在实际的工程中,我们常常会遇到各种各样的问题,这将给工程的进度和质量带来一定的影响。
了解和解决建筑电气配管及布线中的常见问题是非常重要的。
一、常见问题1. 配管材料选择不当在电气配管中,常用的材料有金属材料(如钢管、铝合金管等)和非金属材料(如PVC 管、PE管等)。
选择不当的材料可能会导致配管线路不能承受电压和电流的负荷,造成电路过载或者短路等问题。
2. 布线不规范在电气布线时,如果线路连接不牢固、接口松动或者缺乏保护措施,容易导致电路短路、漏电等安全隐患。
3. 配管线路走向不合理在建筑物内部,电气配管线路的走向应该能够满足电器设备的布置和接线需求,一旦走向设计不合理,可能影响电器设备的使用和维护。
4. 遇水遇潮一些不符合要求的电气配管线路未能达到防水、防潮的设计要求,容易导致线路漏电和设备损坏。
5. 绝缘层破损电气线路的绝缘层一旦破损,将会导致电路短路或者漏电,严重时甚至会引发火灾等安全事故。
二、解决措施1. 合理选择配管材料根据建筑物的用途和环境要求,选择合适的金属或者非金属材料进行电气配管,保证线路的安全和稳定运行。
2. 严格按照规范布线在进行电气布线时,必须严格遵循相关规范和标准进行操作,确保线路的连接牢固,接口良好,具有安全的保护措施。
4. 做好防水、防潮工作对于电气配管线路,应做好防水、防潮的工作,确保线路的安全性和可靠性。
5. 定期检查绝缘层定期对电气线路的绝缘层进行检查,一旦发现破损及时修复,确保电路的安全稳定运行。
建筑电气配管及布线中的常见问题及解决措施需要我们重视并严格执行,只有这样才能确保建筑物内部电气设备的正常运行和安全使用。
希望各有关单位和技术人员能够深入研究,不断完善解决方案,共同为建筑电气工程的质量和进展做出更大的贡献。
电器电线布线技巧分享

电器电线布线技巧分享电器电线布线是家庭装修、电气工程中至关重要的一环。
正确的布线可以保障电力供应的可靠性,提高安全性,并且美观整洁。
本文将分享一些电器电线布线的技巧,帮助读者正确规划和实施电线布线。
I. 布线前的准备工作在开始布线之前,对家庭电路进行仔细的规划和准备工作是至关重要的。
1. 熟悉家庭布线图:准备工作的第一步是熟悉家庭的布线图。
布线图会显示房间、插座、灯具和电源的位置。
通过了解布线图,可以更好地确定电线路径,避免出现不必要的走线。
2. 计算负荷需求:根据各个房间的用电设备和照明设施,计算每个房间的负荷需求。
确保布线时足够的电力供应,避免电线过载。
3. 选择合适的电线规格:根据负荷需求和距离选择合适的电线规格。
使用过粗或过细的电线都会带来问题,因此选择合适规格的电线非常重要。
4. 获悉当地电气规范:在布线前要了解所在地的电气规范,确保布线符合安全标准。
II. 布线技巧1. 选择合适的线槽和线管:线槽和线管是布线中常用的材料,它们可以隐藏电线,保持墙面整洁。
选择合适的线槽和线管来安装电线,可以有效地避免电线外露。
2. 使用开关盒和插座盒:在安装开关和插座时,使用开关盒和插座盒来保护电线连接点。
这样可以有效地防止电线暴露在外,减少安全隐患。
3. 引入电线的位置:根据布线图和实际需求,选择合适的位置引入电线。
尽量选择离电器设备近,便于布线和日常使用。
4. 合理划分电路:按照不同用途和负荷需求,合理划分电路。
避免多个高负荷设备连接在同一个电路上,以免引发电线过载和安全隐患。
5. 采用嵌入式布线:嵌入式布线是一种现代化、美观的布线方式。
通过在墙体或地板内预留布线空间,将电线完全隐藏起来,增加了美观性,也更易于日常清理和维护。
III. 安全注意事项在进行电器电线布线时,务必注意安全,遵循相关规章制度,确保项目顺利进行。
1. 确保断电:在进行布线前,务必关闭并确认断电,以免发生触电事故。
2. 不擅自改变线路:遵循原有布线图,并不擅自更改或添加电线路线。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计大作业开关盒布线问题31209020硕电信1211张博一、 问题分析开关盒布线问题可以分为两个步骤:分析布线的可行性以及布线的具体实现。
对于布线的可行性分析,仔细观察布线盒可以发现,可行的布线方案均具有栈的结构。
即:从第一个针脚开始检查,若栈空或当前针脚与栈顶元素不属于同一个网组,则将其入栈;若当前针脚与栈顶元素属于相同网组,则将栈顶元素弹出。
当所有针脚检查完成后,若栈中没有任何元素,则该布线方案可行,否则该布线方案不可行。
例如,对于题目所给布线盒,有如下布线方案:可行布线方案:(1,4)(2,3)(5,6)(7,8)1入栈→2不与栈顶元素1一个网组,2入栈→3与2一个网组,2出栈→4与栈顶元素1一个网组,1出栈→栈空→5入栈→6与栈顶元素5同一个网组,5出栈→栈空→7入栈→8与栈顶元素7同一个网组,7出栈→栈空→针脚检查完成,此时栈空,因此此方案可行。
不可行布线方案:(1,3)(2,4)(5,6)(7,8)1入栈→2不与栈顶元素1一个网组,2入栈→3不与栈顶元素2一个网组,3入栈→4不与栈顶元素3一个网组,4入栈→5不与栈顶元素4一个网组,5入栈→6与栈顶元素5一个网组,5出栈→7不与栈顶元素4一个网组,7入栈→8与栈顶元素7一个网组,7出栈→针脚检查完成,此时栈不空,因此该方案不可行。
而布线的具体实现,本质上是在布线区域内选择若干个拐点,使得通过这些拐点的连线能从一个网组的一个针脚到达另外一个针脚而不与现有的任何一条布线相交。
在此过程中,最重要的问题就是如何选择拐点。
为解决这个问题,本文设计了一种递归算法以完成布线拐点的搜索实现。
为尽可能简单的实现在MFC 中对数据库的IO 操作,本文使用了轻量级的开源数据库SQLite ,同时设计实现了一个简单的接口类DBIO ,将本设计需要用到的所有接口函数封装到该类中,尽可能的简化了数据库的IO 操作,为上层程序提供支持。
二、 算法选择1 2 3 74 5 6 8在分析布线的可行性阶段,首先要检查输入针脚和网组的合法性,即:针脚总数必须为偶数,网组编号必须包括1到N(N是针脚总数)的每一个整数。
为此,本文使用了C++标准模板库中的sort函数,这是一种基于快速排序、堆排序和归并排序等算法的综合算法,同时在效率上做了优化,能够满足设计需要。
在检查合法性之后需要判断布线是否可行,由上文的问题分析可知,需要有一种堆栈结构完成这项工作。
为此,本文同样使用了STL的stack适配器,结合上文提到的检测算法,用于检测布线可行性。
在布线的具体实现阶段,本设计实现了一个递归算法,即:首先从起始点开始,按照一定方向搜索到达结束点的路径,如果尝试的搜索路径不与任何一条已知布线相交,则将该搜索路径连线并加入已知布线的集合(此时连线的终点即布线的拐点),然后递归搜索拐点到达结束点的路径,直至达到结束点为止;如果搜索路径与已知布线相交,则尝试搜索另外的搜索路径。
在实际调试中,为解决一些bug,另外增加了一个算法,在网组确定之后,将网组按照间距从大到小进行排序,即先布置相距较远的网组连线,然后布置相距较近的网组连线。
该算法无法在STL中找到对应的原型,故对其进行了基于快速排序的实现。
在数据库接口的实现方面,由于需要存放不确定数量的网组分布,而关系型数据库要求数据表的列数恒定,针对这个矛盾,本设计将网组分布的int数据用特殊字符分割后转换为变长字符串存入数据库。
网组分布的拆分和组装工作由数据库接口类负责实现,写入数据库时,上层只需要传递int数组的指针和数组大小即可,而从数据库中读出数据时,上层可以直接获得int数组的指针。
为了统计算法耗时,最初使用的是MFC的API,使用过程中发现它的精度虽然已经达到了1ms,但是还是不能满足设计要求。
事实上,布线算法计算的耗时远小于1ms。
为此,使用了底层的Windows API函数QueryPerformanceFrequency和QueryPerformanceCounter用于从硬件直接获取高精度时间。
三、方案设计作为对底层数据库的支持,本设计首先实现了数据库的接口类DBIO。
SQLite是一个轻量级的关系型数据库管理系统,全部代码只有约5MB,特别适合小型程序对数据库管理的需求。
数据存放于data.db中的switchbox表,该表由五列组成:边1的针脚数量(int)、边2的针脚数量(int)、边3的针脚数量(int)、边4的针脚分布(int)、网组分布(varchar)。
此接口类封装了读取和写入数据库的接口函数。
写入数据库时,上层只需要提供存放针脚数量的int[4]指针和存放网组分布的int数组指针,由接口类负责将网组分布的int数组元素用‘#’字符分割后转换为字符串,然后将四个边的针脚数量分别读出,最后把所有的数据写成一条SQL语句,完成对数据库的写入。
读取数据库时,DBIO类通过一条SQL语句将数据从数据库中取出,进行适当的转换和分割后存入新开辟的数组中,然后将数组地址返回给上层。
出于对稳定性的考虑,DBIO类中的所有数据库接口函数返回类型均为bool,如果读取和写入数据失败这些函数返回false,上层即可进行相应的处理,防止程序出现意外的崩溃。
接下来设计实现的是布线盒类switchbox,该类封装了布线盒针脚和网组分布的数据存储和布线的可行性检测操作。
Switchbox类拥有两个指针成员变量:pnet和ppin,分别是存放针脚和网组分布的int数组的首地址,网组在其中按照题目所给的方式存储,例如(1,4)(2,3)(5,6)(7,8)即存储为{1,4,2,3,5,6,7,8}。
Switchbox拥有两个成员函数checknet和checkwiring,前者检测一个网组是否合法(网组序号必须包括1到N的任一整数),后者检测一个网组对本switchbox对象是否可以布线。
相关排序算法在类内实现。
在布线阶段,本设计实现了CLine类,该类拥有两个CPoint成员变量和多种构造函数,重载了赋值运算符,为接下来的设计提供支持。
程序可以通过新建布线盒对话框来建立新的布线盒。
输入特定的针脚数量和网组分布后,如果针脚数量合法(偶数且不为零),新建布线盒对话框将创建一个switchbox对象,然后对该对象调用checknet和checkwiring函数,检查网组分布是否合法和是否可以布线,如果结果是肯定的,将该网组存入switchbox对象,并向视图类发送一个CREATEABOX消息,其wparam参数即指向新建的布线盒的指针。
额外的,在将网组存入新建的switchbox对象的时候,程序对网组数组进行一次排序,相距远的网组在数组中的位置靠前,相距进的网组在数组的位置靠后,这样可以保证相距较远的网组先布线,提高布线区域的空间利用率。
打开已存在的布线盒对话框首先从数据库中读出所有的针脚和网组分布,将其列表显示。
当用户选中其中一组数据后,对话框会根据该数据创建一个switchbox对象,然后向视图发送CREATEABOX消息。
同样,其wparam参数为新建的switchbox对象的地址。
视图类拥有一个switchbox*成员变量和两个容纳CLine的CList:m_linelistm_linelistbuffer。
两个CList分别存放已经绘制的连线和未绘制的连线,不仅为动画效果提供支持,而且方便对WM_PAINT消息作出正确响应。
在收到CREATEABOX消息后,从wparam中提取到新的switchbox地址,然后将自身switchbox*成员变量指向该swichbox。
根据switchbox中的相关数据,视图首先绘制出针脚分布,然后清空m_linelist,使用搜索算法确定布线方案,将所有要绘制的线条加入m_linelistbuffer,刷新显示。
每个定时器中断到来的时候,视图从m_linelistbuffer中取出一条线加入m_linelist,然后刷新显示。
WM_PAINT 消息响应函数负责从m_linelist中取出函数并绘制在屏幕上。
递归搜索算法voidSearchLine(intdir,CPointbegin,CPointend,CList<CLine,&CLine>&linelist)基于以下方案:(1)若begin和end点横纵坐标均不相同,且前进方向为水平,则试图用─┐方式抵达目标点;若前进方向为垂直,则试图用L方式抵达目标点。
检查begin与第一个拐点的连线是否用已知布线集中的任一相交,若无相交,将begin与第一个拐点的连线加入已知布线集,然后改变方向,递归调用本函数搜索拐点与end之间的连线。
若有相交,取与begin最近的交点的连线中点作为第一个拐点,将begin与此拐点的连线加入已知布线集合,然后改变方向,递归搜索该拐点与end之间的连线;(2)若begin和end点x坐标相同,证明试图连接的begin和end在同一竖直线上,此时若前进方向为水平,证明begin和end是从某网组中位于同一边的两个针脚。
这时先找到begin的水平线与已知布线集的最近交点(一定存在交点,因为布线区域是有界的),然后取begin与最近交点的连线中点作为第一个拐点,将begin与此拐点的连线加入已知布线集,然后改变方向递归搜索该拐点与end之间的连线。
若前进方向为垂直,证明搜索已达终点,直接将begin与end的连线加入已知布线集,return。
(3)若begin与end的y坐标相同,与(2)类似。
四、编程实现程序最初使用VS2008编写,后根据题目要求在VS2010上进行了转换。
主程序为MFC 单文档结构,程序文件夹下除了MFC自动生成的ChildView.h、MainFrm.h、SwitchBox.h、stdafx.h、targetver.h之外,其余头文件分别是:AboutDlg.h(关于对话框)、NewBoxDlg.h (新建布线盒对话框)、OpenBoxDlg.h(打开已存在的布线盒对话框)、OptionDlg.h(选项对话框)、Line.h(Cline类的头文件)、DBIO.h(数据库接口类头文件)、sqlite3.h(sqlite3数据库头文件)、box.h(布线盒类头文件)。
分别实现以下功能:AboutDlg类、NewBoxDlg类、OpenBoxDlg类、OptionDlg类:定义相应对话框的行为;CLine类:定义了本次设计需要的一些直线方面的操作,为程序布线方案选择算法提供基础;DBIO.类:封装数据库输入输出接口,使上层能够实现简单的数据写入和读出;switchbox类:实现布线盒类,布线方案的可行性算法在其中实现。