(光学工程专业论文)fpc紫外激光加工中gerber文件的解析转换研究.pdf_第1页
(光学工程专业论文)fpc紫外激光加工中gerber文件的解析转换研究.pdf_第2页
(光学工程专业论文)fpc紫外激光加工中gerber文件的解析转换研究.pdf_第3页
(光学工程专业论文)fpc紫外激光加工中gerber文件的解析转换研究.pdf_第4页
(光学工程专业论文)fpc紫外激光加工中gerber文件的解析转换研究.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(光学工程专业论文)fpc紫外激光加工中gerber文件的解析转换研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 摘 要 紫外激光的冷加工特性,使它在 fpc(柔性电路板)加工领域有着无可取代的地 位。随着高功率 dpss 紫外激光器的发展,将激光加工技术与现代数控编程技术相结 合,开发适用于 fpc 的紫外激光加工系统具有积极的现实意义。 作为 pcb 行业的通用文件格式, gerber 文件的图形数据读取是激光加工 fpc 的关 键环节,直接影响加工的精度和效率。本课题运用编译原理的基础知识,在对 gerber 文件进行词法和语法分析的基础上,采用 boost.regex 正则表达式类库作为匹配和分 析工具,开发出一种匹配速度快、精度高、具有较强通用性和兼容性的 gerber 文件解 析转换软件。该软件能够读取 gerber 文件,快速提取其中相关的 fpc 图形信息,绘制 加工轨迹,并能够将 gerber 文件转换为 cad 软件能识别的 dxf 文件。 本文的主要内容是从以下四个方面来组织的: (1) 介绍 fpc 紫外加工系统的特点和应用, 并从实际应用需求出发, 设计出 gerber 文件解析转换软件的结构框架、工作流程、开发环境和开发流程。 (2) 分析了 gerber 文件的总体结构以及具体的数据记录格式, 在此基础上提出文件 的解析算法,并引入了 boost 库的正则表达式类库函数对其进行分析处理,保证了解 析的快速和准确性。 (3) 将面向对象技术应用到该软件的开发中, 研究了 gerber 数据的读入方法和解析 数据的保存方式,并利用 mfc 绘制加工图形。 (4) 研究了与常见 cad 软件的接口问题,将解析数据转换为 dxf 文件输出,改善 了该软件的可移植性。 关键词关键词:紫外激光加工系统 gerber 文件 dxf 文件 正则表达式 boost 库 ii abstract with the “cold” processing character, uv laser have a indispensable effect on fpc processing field. along with the development of the high power dpss uv laser, its meritoriously to develop a uv laser processing system which is based on laser and moderm nc programming technology for fpc. the gerber file is the standard file format of pcb industry. as the key step of the fpc laser processing, the figure data of the gerber file parsing has a notable influence on the efficiency and precision of the processing.the paper adopts the boost. regex formula expressions library researched and developed in microsoft research lab as strong match and analysis tool, which based on lexical and syntactic analysis. it works out a kind of gerber file parsing and switching software with rapid match, high precision, better versatility and compatibility. this software can read the gerber file and pick-up the figure imformation according to the fpc rapidly. it plots processing figure with the imformation and switches it to the dxf format which can recognize by any cad software. the paper can be divided into four segments: (1) first, the fpc uv laser processing system is studied. and then introduced the framework, main task, the procedure of design and the principle of the gerber file parsing and swithing software according to the practice. (2) analysis the holistic configuration and data register format of the gerber file. and introduce the parse means which adopts the boost. regex formula expressions library function as analysis tool based on it, insure the speed and precision. (3) introducing the object-oriented technology to the software. study the means of the gerber datas reading and saving, then plots the processing figure with mfc. (4) study the interface problem with general cad software. improve the expandability of the software by switching the parse data to dxf. key words:uv laser processing system gerber file drawing exchange format (dxf) formula expressions boost 独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个人或集体 已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体,均已在文中以 明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有权保 留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本 人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密, 在 年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名: 指导教师签名: 日期: 年 月 日 日期: 年 月 日 本论文属于 1 1 绪论 1.1 课题研究背景及意义 1.1.1 什么是 fpc fpc 是柔性印刷电路板(flexible printed circuit board)的简称,它是由柔性绝缘 基材制成的印刷电路,具有许多硬性印刷电路板不具备的优点。 fpc 基材是通过胶粘剂将挠性绝缘薄膜与金属箔按照一定设计要求, 覆合在一起 制成的,常用的绝缘薄膜为聚酰亚胺(pi)薄膜和聚酯(pet)薄膜,常用的金属箔为 铜箔1。薄膜材料耐热性高、尺寸稳定性好,与兼有机械保护和良好电气绝缘性能的覆 盖膜通过压制而成的最终产品,具有良好的散热性和可焊性,易于装连、综合成本较 低。它可以自由弯曲、卷绕、折叠,依照空间布局要求任意安排,并在三维空间任意 移动和伸缩,从而达到元器件装配和导线连接的一体化。fpc 可大大缩小电子产品的 体积,适用于电子产品向高密度、小型化、高可靠性方向发展的需要,已经成为电子 产品中不可缺少的重要组成部分。 1.1.2 fpc 产业发展概括 现今,fpc 板在航天、军事、移动通讯、手提电脑、计算机外设、pda、数字相 机等领域或产品上得到了广泛的应用,需求量也逐年提高。techsearch 预测在未来几 年内,fpc 年销量增长率为 26 %1, 2;ipc(美国互联与封装协会)预测在未来几年中, 全世界柔性印制电路板的产值将以 13 %15 %的年增长率高速发展2。 当前国内电子工业正飞速向前发展,引进的轿车生产线、通讯设备、计算机等工 业生产中需要大量使用 fpc,使中国的 fpc 制造工业在短短几年内迅速发展起来,每 年会有两位数字的增幅,许多国外订单投入中国。另一方面,欧、美、日印刷电路板 公司陆续来华兼并投资,印刷电路板生产规模越扩越大,价格战越打越烈,企业面临 着成本、资金、管理、技术、价格等方面的巨大挑战。现代高性能电子产品、计算机 技术和现代通讯技术的高速发展,使电子产品“轻、薄、短、小”的普遍要求同 fpc 制作工艺中高密度、高层次、细线路、表面贴装等技术应用要求变得越来越高,随之, 2 对 fpc 加工制造设备中的关键设备cnc 切割机床的依赖性也就越来越大。 早期印制电路板的生产采用手工绘图或人工布线贴图、周期长、精度低、正确性 检查困难1。随着计算机系统在速度、容量、软件和图形工具上的高速发展,以及自动 布线算法的深入研究和实现,cad(computer aided design,即计算机辅助设计)技 术日益完善并广泛应用于印刷电路板的制造中。目前高精度、高密度的制作印制电路 板技术已采用了先进的 cad 工作站硬件和软件,包括 cad/cam 软件、数据库软件、 专家系统软件以及网络系统软件等。 cad 包括 pcb 设计输入, 可对电路图形进行编辑、 校正、修理和拼版,以磁盘为介质材料并输出光绘、钻孔和检测(包括 aoi 和电气检 测)的自动化数据。 目前,电子工程人员可以在计算机上利用商品化的 cad/cam 软件来辅助设计, 辅助生产印制板。由原始的手工贴图到计算机画图,再由计算机自动布线到带有智能 的模拟仿真布线,把一个电子产品的理想设计到现实产品之间的距离缩得更小,使产 品的周期完成得更快、更好、更有效率2, 3。近年来,国内的一些高科技公司通过努力 解决了一系列技术难题,成功地推出适合国内应用的激光绘图系统(又称为光绘机)。 光绘机绘图控制器读取系统绘图文件后,根据用户绘图需要通过键盘及视频显示器进 行系统参数调整、设置、修改、调试,然后将有关系统参数储存备用。开始绘图时再 从用户处读取绘图数据,控制绘图平台及曝光系统运动,在设定的位置对放置在平台 上的胶片进行曝光,形成线条、焊盘、字符等图形。绘制完毕,将胶片进行冲洗处理 后,获得制板用底片。为了使光绘机工作顺利、方便,通常都配有计算机及相应的绘 图软件,以便配合 cad 软件随时检查有关绘图文件及图形等。光绘机普遍采用 gerber 格式的绘图文件。 计算机辅助制造技术(computer aided manufacturing,简称 cam)是一种由计 算机控制完成生产的先进技术。计算机技术的发展和激光绘图机的出现,使得 pcb 的计算机辅助制造技术走向了实用性的道路。cam 技术使 pcb 的设计生产上了一 个新的台阶,一些过去无法实现的功能得以实现。各种 cam 系统一般都能对光绘 数据(gerber 数据)进行处理,排除设计中的各种缺陷,使设计更易于生产,大大 提高了生产质量。 3 1.1.3 紫外激光的加工优势 (1) 激光在 fpc 制造过程中有三个主要功能:加工成型(切割)、切片和钻孔。 在以往 fpc 的大批量生产中,都使用机械硬冲压成型的模具压制成型3,但是硬冲模 法损耗较大、交付周期长,对小部件的加工和成型而言显得不实用且成本高。 激光具有可控性强、能量稳定集中、光束方向性好、光束细等特点,加工精度高, 是 fpc 成型处理的理想工具。激光切割有诸多优点,例如切割速度快、切口光滑平整、 无需后续加工;切割热影响区域小、切割变形小;加工精度高、重复性好、加工质量 稳定;能数控编程、可加工任意图形、无需模具、经济省时、切割过程容易实现自动 化控制等3。 (2) 从本质上来说,紫外激光微处理过程与红外加工不同:紫外激光是利用高能量 的光子直接破坏材料的化学键,这一加工过程称为“光蚀”效应4;而可见光和红外光 激光器利用聚焦到加工部位的热量来熔化材料,产生热影响区。 但是, 许多塑料和一些大量使用在 fpc 基体材料中的特殊聚合物 (如聚酰亚胺) 不能通过红外处理或“热”处理过程进行精细加工。“热”会使塑料变形,在切割 边缘产生炭化形式的损伤,可能导致电路板结构性的削弱和寄生传导性通路,从而 不得不增加后续处理工序以改善加工结果5, 6。因此,红外激光器不适合处理柔性电 路板。 相比之下,紫外激光加工材料是冷处理过程,热影响区微乎其微,并且大多数材 料吸收紫外光比红外光更加容易。用高能量的紫外光直接破坏许多非金属材料表面的 分子键,这种“冷”加工出来的部件具有光滑的边缘和最低限度的炭化影响。另外, 紫外激光器的输出波长在 0.4m 以下,适合处理聚合物材料5。由于光束的衍射现象 是限制加工部件最小尺寸的主要因素,因此波长较短的紫外激光能够加工更小的部件, 可达到的聚焦点的最小直径随着波长的增加而线性增加6, 12, 14。 随着小型电子产品和微电子元器件需求的日益增长,聚合物材料的精密处理日渐 成为激光在工业应用中发展最快的应用领域之一。良好的聚焦性能和冷处理特性使紫 外激光成为处理广泛应用于微电子元器件工业中的塑料(如聚酰亚胺)和金属(如铜) 等材料的理想工具7, 13。 固态激光器的最新技术推动了新一代结构紧凑, 全固态的紫外 4 激光器的发展,从而使之成为 fpc 加工领域中更加经济有效的处理手段8, 9,具有广泛 的应用前景。 1.2 课题研究目的 (1) 随着高功率紫外dpss激光器技术的发展,直接使用紫外激光加工柔性电路板 逐渐成为颇具吸引力的工艺手段。在此背景下,对激光加工系统的研究和开发具有重 要的现实指导意义。 图1-1 紫外激光加工系统 本实验室将紫外激光加工技术与计算机技术结合起来, 开发出一套适合fpc的激光 切割系统, 使用该系统可以有效提高fpc的加工效率和精度。 该紫外激光加工系统可以 对不同种类的fpc进行加工, 将最终成型的电路板裁剪下来。 激光切割系统主要由机床 主机、激光器、控制系统三大主要部分组成。控制系统是整个系统的控制中枢,负责 协调整个系统的正常工作,主要完成加工轨迹控制、焦点位置控制和机、光、电一体 的协调控制。按功能的不同,可分为六个部分:gerber文件解析、运动控制、系统状态 显示、激光控制、ccd自动定位及变形矫正和系统补偿与矫正。 5 (2) 目前,在fpc的实际制造工艺中使用的是gerber文件格式。gerber文件不包含 设计时元器件的电气性能和网络属性,只包含最基本的物理特性,如焊盘和导线的坐 标、形状、大小等10,很适合生产厂家直接使用, 所以gerber文件已经成为了pcb行 业通用的文件标准。 我们在进行fpc加工时,使用的是生产厂家提供的gerber文件。但是,紫外激光切 割系统仅接受线性图形文件, 要使市场通用的gerber文件能够被激光切割系统接受, 必 然牵涉到文件格式转换的过程。因此,对输入的gerber文件进行解析,提取激光切割系 统所需要的图形信息, 并将其转换成可以被激光切割系统接受的文件格式, 是进行fpc 加工的关键环节,对fpc激光加工系统的开发研究具有重要意义。 1.3 课题主要研究内容 本课题按照紫外激光加工fpc的实际要求, 编写单独的gerber文件解析转换软件。 该软件能够自动解析 gerber 文件,提取加工所需的图形信息,绘制出进行 fpc 加工轨 迹图,并将图形信息转换为一般 cad/cam 系统都能识别的 dxf 文件。gerber 文件解 析转换软件不仅解决了激光加工系统的信息读取问题,提高了激光加工系统的工作效 率;另一方面,该软件能够将 gerber 文件进行格式转换,输出包含 fpc 图形信息的 dxf 文件,使用户能够在常见的 cad 软件上对图形进行处理和修改,从而提高了加 工系统的灵活性和可移植性 该解析转换软件的设计方案为:以 windows xp 为系统环境,采用 vc+6.0 为编 程工具,应用正则表达式为分析工具进行信息提取。 本文共分为六章,各章节内容安排如下: 第一章概述了 fpc 制造产业的发展现状和紫外激光在 fpc 加工中的优势, 说明了 紫外激光加工系统开发的实际意义,并简要介绍了本课题的主要研究内容和实现目标。 第二章主要研究了解析转换模块的总体设计思路,并根据实际生产需要,按照主 要实现功能设计了该模块的结构框架、工作流程、开发环境和开发流程。 第三章介绍了 gerber 文件解析时使用的匹配分析工具正则表达式,特别对 boost 库的正则表达式库函数进行了研究,为下一章的解析的具体实现做了准备,最后 介绍了 boost 库的编译方法。 6 第四章介绍了 gerber 文件的格式和结构,并由此提出解析部分的实现原理和设计 思想,其中还重点分析了文件参数和代码的解析流程以及解析数据的存储结构和方式, 并且对具体实现做了详细介绍。 第五章概述了 dxf 文件的结构、应用和创建要求,提出了转换部分的实现原理和 设计思想,分析了不同转换数据的处理方法,并对转换部分的具体实现进行了介绍。 第六章阐述了在本模块的研究开发过程中,对 fpc 紫外激光加工技术,文件格式 转换和编程技巧等方面的了解和收获,总结了课题研究成果和不足,并对紫外激光加 工系统的应用以及文件解析和转换的研究做了展望。 7 2 gerber 文件解析转换模块的需求分析和系统设计 2.1 系统需求分析 我们在进行软件设计之前,必须通过对应用问题及其环境的理解和分析,为软件 所涉及的信息、功能以及系统行为建立模型,将用户的需求精确化和完全化,也就是 进行系统需求分析15。 在实际的科研和生产活动中, 对 gerber 文件的解析转换一般发生在 fpc 加工的预 处理阶段,解析转换软件主要有以下两个用途:一是用来提取图形信息。由于激光加 工系统不能直接识别 gerber 文件, 所以在加工前需要利用解析软件提取 fpc 的线性图 形信息,用来绘制激光加工轨迹以及进行后续的加工代码生成。 该软件的另一用途是提供与其他 cad 系统的接口功能。为了灵活处理加工信息, 需要能够对用户提供的 fpc 信息进行修改或者扩充,激光加工系统本身不能提供这一 功能,但是将解析得到的图形信息转换为 dxf 文件后,就能够在常用的 cad 软件上 处理 fpc 的加工图形,同时也提高了加工的灵活性。 图2-1 软件的需求分析 通过对软件进行需求分析,我们把其功能和性能的总体概念描述为具体的软件需 求规格说明,从而奠定软件开发的基础15。需求分析工作是一个不断认识和逐步细化 的过程,将软件范围逐步细化到可详细定义的程度,并分析出各种不同的软件元素, 然后为这些元素找到可行的解决方法15, 16。通过需求分析,将软件的功能进行了分解, 如图 2-1 所示。 gerber 文件 读 取 文 件 字符串形式 的数据流 匹 配 解 析 字 符 串 加工图 形信息 存 储 数据 数据 显示 加工 轨迹 图 形 输 出 d x f 文 件 8 2.2 总体设计 2.2.1 编译原理概述 总体设计阶段主要解决“how to do”这个问题,对后续工作的开展有着指导作用。 从前面的需求分析可以看出,我们需要设计的 gerber 文件解析转换软件的执行实际上 是一个“从 gerber 文件加工数据加工图形和 dxf 文件”的实现过程,它可以 看成一个编译程序。 一般所说的编译程序是将一种语言翻译为另一种语言的计算机程序,它将源程序 语言编写的程序作为输入,而产生用目标语言编写的等价程序,并且在转换过程中向 用户报告源程序中出现的错误17。这一过程可由图 2-2 表示18: 图2-2 编译过程示意图 由源程序到生成一个可以在计算机上执行的目标程序,除了编译程序,还涉及到 预处理程序、装配/链接程序以及某些库程序等。在计算机上执行用高级语言编写的程 序,一般要经过两个阶段:第一阶段称为编译阶段,它的任务是由编译程序将源程序 编译为目标程序;第二阶段称为运行阶段,其任务是在目标计算机上执行编译阶段所 得到的目标程序17。 这里的编译程序完成从源程序(gerber 文件)到目标程序(图形和 dxf 文件)的 翻译过程,从概念上来讲,是划分为六个阶段的,各个阶段进行的操作在逻辑上是紧 密相连的。编译过程划分为词法分析、语法分析、语义分析、中间代码生成、代码优 化和目标代码生成六个阶段。另外还要涉及到信息表格管理和错误检查处理两个程序, 出错处理 源程序 目标程序 编译程序 9 这两个程序与上述六个阶段都是紧密联系的。编译过程中,源程序的各种信息都保留 在不同的特定的数据结构(或者表格)中,各阶段工作都涉及到构造、查找有关数据 结构或者表格,因此需要数据结构的管理工作。另一方面,需要在编译过程中发现并 报告错误,这样才能将错误造成的影响限制在尽可能小的范围内,因此需要错误检查 处理程序。 图 2-3 编译阶段划分示意图 上图描述的是各阶段的逻辑关系,在我们实际编译的过程中,可按照不同的执行 流程来组织各个部分的工作,一般把编译过程分为前端和后端:前端通常包括词法分 析、语法分析和中间代码生成,这些阶段依赖于源程序语言,即 gerber 文件的结构和 规范;后端一般不依赖于源程序语言,只与中间代码有关,包括目标代码生成(图形 和 dxf 文件)和出错处理等阶段19。这在很大程度上依赖于编译过程中对源程序扫描 的遍数,以及如何划分各遍数扫描所进行的工作。 2.2.2 总体流程 在 gerber 文件解析转换程序中,我们将 gerber 文件作为源程序输入,产生相应的 线性图形和 dxf 文件,这一翻译过程同样可以分为前端和后端。其中,程序的重点 gerber 文件解析部分属于前端,要涉及到编译原理中的词法分析、语法分析和语义 分析等。后端对解析数据,即中间代码进行处理,产生对应的图形输出和 dxf 文件输 出。 错 误 检 查 和 处 理 程 序 词法 分析 程序 语法 分析 程序 语义 分析 程序 中间 代码 生成 代码 优化 程序 目标 代码 生成 目 标 代码 信 息 表 管 理 程 序 源 程 序 10 gerber 文件解析转换程序的总体流程如下图 2-4: 读取 gerber 文件 读入一行 词法、语法检查 否 是否出错 是否完成 绘制加工轨 迹图形 返 回 并 检 查 输 入 文 件 gerber 文件 规范 解析数据块 前 端 分析错误 信息 解 析 数 据存储 开 始 是 否 是 功能选择 生成中间代码 创建 dxf 文 件并输出 结 束 后 端 图2-4 程序总流程图 11 2.3 详细设计 总体设计阶段以比较概括的方式提出了解决问题的方法,详细设计阶段的任务就 是把解决方法具体化16, 19。这一阶段主要完成三项任务: (1) 过程设计:设计软件体系结构中包含的每个模块的实现算法; (2) 数据设计:设计软件中需要的数据结构; (3) 接口设计:设计软件内部各模块之间、软件与协作系统之间,以及软件与使用 者之间的通信方式。 考虑到该软件的通用性和兼容性,在选择开发环境时考虑了以下几点要素: (1) 采用面向对象的开发方法,具有强大的开发能力,便于后期进行功能扩展; (2) 与现在通用的编程工具(如 vc+)有接口,以便于词法、语法分析、代码生 成等程序可以转换为常用的编程工具语言,并提高可读性。 针对以上的要素, 我们将 gerber 文件解析转换软件的开发环境确定为: 以 windows xp 为系统环境,采用 vc+6.0 为编程工具,并应用正则表达式为分析工具,对 gerber 文件进行词法和语法分析。 2.4 系统功能设计 根据上述系统设计, 我们可以确定 gerber 文件解析转换软件应该具有以下的功能: (1) 优秀的词法、 语法分析功能: 可以快速、 准确的提取 gerber 文件的参数和代码; (2) 良好的语义分析功能: 能够根据 gerber 文件规范快速、 准确地处理提取的参数 和代码; (3) 良好的可移植性和兼容性:具有高内聚低相关的软件特性15, 16,能够便捷的与 其他 cad/cam 软件进行联接; (4) 良好的可扩展性:能够随着用户要求的变化对现有功能进行扩展。 2.5 本章小结 主要介绍了编译原理的基本知识和概念,通过 gerber 文件解析转换程序的需求分 12 析,阐述了程序的系统设计思路,完成了程序的总体设计流程,并确定了开发环境和 系统功能,为后续设计奠定了基础。 3 基于正则表达式的 gerber 文件解析方法研究 3.1 正则表达式模板类库概述 3.1.1 什么是正则表达式 正则表达式萌芽于 1940 年的神经生理学研究,最早是由数学家 stephen kleene 提 出,他在对自然语言的递增研究成果的基础上定义了一个代数系统,并且引入了一种 记号系统来描述正则集,这种记号系统被称为“正则表达式”20。unix 系统的创造 者 ken thompson 于 1968 年第一个把正则表达式用于计算机领域, 并取得了巨大成功。 自从那时起,正则表达式经过几个时期的发展,现在的标准已经被 iso(国际标准组 织)批准并被 open group 组织认定。 正则表达式并非一门专用语言,但它可用于在一个文件或字符里查找和替代文本 的一种标准。它具有两种标准:基本的正则表达式(bre) ,扩展的正则表达式(ere) 。 至今为止,正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分,现 已广泛地应用于字符格式、匹配、替换和转化等方面。正则表达式不仅仅是国际标准, 还是跨平台的, 在 unix/linux、 windows 中均可以使用, c+、 c#、 javascript 、 vbscript、 python、perl、php 等语言都支持它21。 3.1.2 正则表达式的主要用途 在编写处理字符串的程序或网页时, 经常会有查找符合某些复杂规则的字符串的需 要。正则表达式就是用于描述这些规则的工具。换句话说,正则表达式就是记录文本 规则的代码。 在典型的搜索和替换操作中, 必须提供要查找的确切文字。 这种技术对于静态文本 中的简单搜索和替换任务可能足够了,但是由于它缺乏灵活性,因此在搜索动态文本 时就会遇到困难,有时甚至是不可能的。而使用正则表达式,就可以: 测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是 13 否存在一个电话号码模式或一个信用卡号码模式,这称为数据有效性验证。 (1) 替换文本:可以在文档中使用一个正则表达式来标识特定文字,然后可以全部 将其删除,或者替换为别的文字。 (2) 根据模式匹配从字符串中提取一个子字符串:可以用来在文本或输入字段中查 找特定文字。 在本课题中,利用正则表达式作为匹配工具,在输入的 gerber 文件数据段中提取 需要的数据信息。 例如,利用“s*(%)(%+)(%)”这个正则表达式可以匹配读入行包含的 gerber 文件参数信息;而“s*(ggmm?)s*(d*)s*(%*)(*)”可以匹配出读入段中的 操作码信息。 3.1.3 支持正则表达式的常用模板类库 由于现在仍被广泛使用的 vc+6.0,并没有提供对正则表达式的直接支持,于是 第三方 c+正则表达式库就应运而生。常见的有 atl catl regexp 类库、greta 类 库和 boost.regex 类库,其中以 greta 和 boost.regex 最为有名22。greta 是微软 研究院推出的一个正则表达式模板类库,而 boost 是 c+ 标准委员会工作组发起的一 套开放源代码的、可移植的、基于模版 c+库。其中的 regex 正则表达式库应用方便 灵活,很适合本课题中的解析算法。 boost 提供了 boost:basic_regex 来支持正则表达式23。 boost:basic_regex 的设计非 常类似 std:basic_string: namespace boost templateclass basic_regex; typedef basic_regexregex; typedef basic_regexwregex; 14 3.2 boost.regex 库的主要类和函数 由上一节中对于支持正则表达式模板类库的介绍可以知道,boost.regex 库具有高 度的可移植性,并且支持各种字符类型,适合 gerber 文件的代码匹配,能够灵活地应 用在 gerber 文件的解析中,并达到理想的匹配速度。 下面是 boost.regex 库的主要模板类: (1) basic_regex 类 该类用来保存一个“正则表达式”的类。其定义为: template class basic_regex; 表 3-1 basic_regex 类的主要构造函数表 basic_regex re 产生空的正则式 basic_regex re(str) 正则式为str, str可以为basic_string, 也可以是0结尾的char* 字符串 basic_regex re(re2) 拷贝构造 basic_regex re(str,flag) 正则式为 str,使用 flag 语法选项,flag 是一组常量的组合。 例如:icase 可以使正则式匹配忽略大小写 basic_regex re(beg,end) 使用迭代器构造正则式。可以是 basic_string 的迭代器,也 可以是 const char* basic_regex re(beg,end,flag) 使用迭代器构造正则式,flag 是语法选项 表 3-2 basic_regex 类的迭代器表 regex:iterator it 常迭代器类型,即 const_iterator re.begin( ) 返回的是常迭代器,const_iterator re.end( ) 没有逆向迭代器 (2) sub_match 类 该类继承于 pair迭代器组, 用来表示匹配的一个结果, 定义如下: template 15 class sub_match : public std:pair public: typedef typename iterator_traits:value_type value_type; bool matched; ; 这个类表示和处理一个子串匹配结果。match 成员变量指示匹配是否成功。由于这 个类是从 std:pair 派生的,所以它有 first 和 second 这两个数据成员,如果匹配成功, first 保存匹配字符子串的开始位置,second 保存匹配字符串的结束位置。 表 3-3 sub_match 类的主要成员函数表 length( ) 返回长度,即两个迭代器之间的距离 operator basic_string ( ) 隐式的 basic_string 转换 str( ) 显式的 basic_string 转换 (3) match_results 类 这个类处理 sub_match 的 std:vector 集合, 用来表示一次搜索或匹配算法的所有结 果,类似于 vector。定义如下: template class match_results private: typedef std:vector vector_type typedef sub_match value_type; private: vector_type m_subs; / subexpressions 16 ; 这个类主要处理 std:vector m_subs,在几个接口函数中 会用到。 表 3-4 match_results 类主要成员函数表 m.size( ) 容量 m.max_size( ) 最大容量 m.empty( ) 容量是否为 0 mn 第 n 个元素,即 sub_match m.prefix( ) 返回代表前缀的 sub_match,前缀指字符串的开头到第一 个匹配的开头 m.suffix( ) 返回代表后缀的 sub_match,后缀之最后一个匹配的结尾 到字符串的结尾 m.length(n) 返回第 n 个元素的长度,即 mn.size() m.position(n) 返回第 n 个元素的位置 coutm 流输出,输出整个匹配,相当于 cout directories 分别配置 include files, (5) library files 打开工具选择 projectoption directories 分别配置 include files,library files。 (6) 打开工具栏(project)选中 seting c/c+选项卡,然后在 category 栏中选择 precompiled headers 项和 customize 项。 3.3.2 正则表达式的测试 在本解析模块中,使用 boost .regex 库对 gerber 文件进行词法和语法分析。对于 一个 gerber 文件来说,除去空格和注释等,剩下的信息可以大致分为参数和代码(操 作码) 。 本文提出以正则表达式为分析工具对 gerber 文件进行词法和语法分析: 对于一 行 gerber 代码,只需按照一定的匹配模式,用正则表达式提取字符,加以分析,并同 时进行归约,就可以完成解析。在利用 boost 正则表达式类库函数解析时,就是按照 定义匹配模式匹配提取字符插入归约链表的操作流程,进行词法和语法分析检 查以及信息提取的。 在定义匹配模式前,需要测试相应的正则表达式,避免由于匹配模式错误引起的 程序异常或者提取错误,导致解析失败。一般来说,可自行编写一个简单的测试程序 进行测试。 3.4 本章小结 本章主要介绍了本课题的专用分析工具正则表达式的应用,以及一些支持正 则表达式的重要模板类库,着重介绍了 boost regex 库的函数和功能,并针对 gerber 文件解析的应用,举例说明了怎样测试匹配模式,利用正则表达式对字符进行提取。 18 4 gerber 文件解析模块的设计和实现 4.1 gerber 文件概述 4.1.1 什么是 gerber 文件 gerber 文件本是由美国 gerber 公司自行制定,专门用于该公司所生产的光学绘图 机的一种文件格式, 也因此称之为 gerber data24。 由于该格式颇符合电子业间的需求, 也因此被广泛使用,久而久之演变成一种业界标准的资料格式。 gerber 文件是所有光绘机都能够识别的一种语言, 它用于控制画图的光束的状态、 形 状、粗细及在感光膜上具体的 x、y 坐标感光,从而产生图象。所有 pcb 设计软件都可 以生成 gerber 文件, 线路板厂商加工线路板, 不是照 pcb 文件来加工的, 而是按照由 pcb 文件生成的 gerber 文件来加工的。gerber 格式的文件不包含设计时元器件的电气性能和 网络属性,只包含最基本的物理特性,如焊盘和导线的坐标、形状、大小等,很适合生产 厂家直接使用, 所以 gerber 文件已经成为了 pcb 行业通用的文件标准。 但是在实际生产中,由于设计文件千差万别,加上设计人员对生产厂家所使用的 gerber 文件并不十分了解, 所以交给厂家的 gerber 文件可能会存在这样或那样的问题, 导致生产厂家不能正确的读出10, 24。研究 gerber 文件的解析算法,针对不同加工需要 提取 gerber 文件中包含的有效信息26,对于提高 pcb 加工的灵活性具有积极意义。 4.1.2 gerber 文件的格式和结构 (1) gerber 文件的格式 gerber 文件有多种格式,如rs-274-x、rs-274-d、rs-274、fire 9000、mda 9000 和 barco dpf 等。 标准的gerber 文件格式可分为rs-274-d 与rs-274-x 两种27, 其不同在于: rs-274-d 称为基本gerber 格式,其中的gerber 文件与aperture(d 码文件)是分开的,要 同时附带 d 码文件才能完整描述一张图形;rs-274-x 称为扩展 gerber 格式,本身就包含 d 码信息,即aperture 文件是整合在gerber 文件中的。rs-274-x 增强了处理多边形填充、 正负图组合和自定义 d 码等其它功能,它还定义了数据文件中嵌入光圈表的规则。常用的 cad 软件都能生成这两种格式,在本文中我们只讨论这两种格式的gerber 文件。 (2) gerber 文件的结构 19 gerber 文件是由很多数据块构成的,这些数据块由参数和代码构成,每个数据块 有一个块命令结束标志,一般为“*” 。 数据类型可分为两种:rs-274x参数和标准rs-274d代码。其中rs-274x参数又叫 做质量参数或者扩展gerber格式,一般位于文件开头;而标准rs-274d代码主要分为两 大类:功能代码和坐标值。 1) rs-274x 参数分为: 直接参数(directive parameters) :控制全部文件的处理; 镜像参数(image parameters) :提供镜像信息; 光圈参数(aperture parameters) :描述光笔形状; 层参数(layer-specific parameters) :描述一个或者多个数据层的处理; 混合参数(miscellaneous parameters) :提供其他功能。 具体参数设置见下表 4-127。 表 4-1 gerber文件参数设置 参数 功能 内容 缺省 必须 可选 as 坐标选择 a=x,b=y fs 格式声明 mi 镜像 无 mo 模式(英寸或者毫米单位)英寸 of 偏移量 a=0,b=0 sf 比例因子 一般单独使用, 多次使用时, 将 这些参数输入 层的开始处。 这 些代码不建立 新的层。 a=1.0,b=1.0 ij 镜像判断 无 in 镜像名 io 镜像偏移 a=0,b=0 ip 镜像极性 阳极 ir 镜像旋转 0 pf 绘图薄膜 在文件开始处, 只使用一次。 ad 光圈类型 am 光圈宏 ln 层名 lp 层极性 阳极 ko 敲空 关 sr 分步重复 a=1,b=1 ro 旋转 单独使用, 并输 入文件或者层 的开始处。 无旋转 20 2) 标准rs-274d代码主要有: n 代码(sequence numbers) :0 至 99999,用来标记数据块,可缺省; g 代码(general functions) :设置各种命令,例如,g01 表示画线、g02、g03 表示画弧; d 代码(plot functions) :d 代码有多种意思,可控制绘图光束的开关状态, 以及选择光束形状; 表 4-2 d代码功能表 代码 功能 注释 d01 (d1) 画线,方向开启 不能由光圈宏定义光圈。这样的 光圈不会被显示 d02 (d2) 方向关闭 d03 (d3) 光圈闪 d03 在新的层出现前一直有效 d10-d999 选择一个由 ad 参数定义的光圈 m 代码(miscellaneous functions) :提供其他功能,如停止程序; 坐标:x,y 坐标定义线性位置;i,j 坐标定义弧线。 总的来说,gerber 文件包含的信息分为参数和代码两种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论