电路板观视程序的文件格式的转换方法

文档序号:6584050阅读:256来源:国知局
专利名称:电路板观视程序的文件格式的转换方法
技术领域
本发明涉及一种文件的转换方法,特别有关于一种电路板观视程序的文件格式的 转换方法。
背景技术
在开发电子产品的过程中,都需要频繁处理电路板数据文件。厂区通常使用文本 格式电路板数据文件(Computer-aided design,简称CAD),但由于使用资源耗费庞大(例 如绘图计算器需要高等级的处理器或大容量的内存,大尺寸文本数据导致网络传输效率低 下),对于频繁上传,下载,高频度使用文本数据CAD的厂区实在是一大负担。所以为达到 高效,快捷、可持续性平滑处理电路板文件的目的,另有厂商提出电路板的观视软件(Board Viewer)。由于观视软件不需大量处理资源,所以许多生产厂商多会采用观视软件。电路观视软件可以将文本格式电路板数据文件进行加密、循环冗余校验(CRC)与 压缩为二进制数据档(binary data)。这样一来,可大幅度降低文本格式数据大小,可以方 便在因特网上传输。虽然二进制数据文件具有上述优点,但在每次导出二进制数据文件时,电路观视 软件会根据所使用的数据逻辑结构重新组织数据,再生成固定数据结构。电路观视软件会 将固定数据结构存放转换后二进制数据文件中。在二进制数据文件中的数据逻辑结构与物理存储结构之间的强绑定关会严重阻 碍新版的电路观视软件对原有二进制数据文件加载。使得每一次电路观视软件数据结构的 升级都需要对原有二进制数据文件重新转换,这严重影响了二进制数据文件的易用性和可 维护性,极有可能成为基于二进制数据应用的电路观视软件及相关衍生系统全面推广的绊 脚石。

发明内容
鉴于以上的问题,本发明的主要目的在于提供一种电路板观视程序的文件格式的 转换方法,其将电路板观视程序(Board viewer)加载的二进制数据文件转换为新版本的电 路板观视程序所支持的观看文件,实现电路板数据加载的向下兼容性。为达上述目的,本发明所揭露的电路板观视程序的文件格式的转换方法包括下列 步骤步骤a.由电路板观视程序加载二进制数据文件,在二进制数据文件中的每一元 件数据电路模块包括数据逻辑结构与数据物理储存结构;步骤b.对二进制数据文件的元件数据电路模块进行修改,并取得元件数据电路 模块修改后的数据逻辑结构与数据物理储存结构;步骤c.对步骤b所产生的数据逻辑结构与数据物理储存结构运行调配脚本,将数 据逻辑结构与数据物理储存结构绑定(Bound)成动态连结文件; 步骤d.将二进制数据文件加载至电路板观视程序;
步骤e.检查二进制数据文件所属版本是否与电路观视软件一致;步骤f.若二进制数据文件与电路观视软件的版本不一致时,则电路观视软件运 行调配脚本并调用操作接口,通过操作接口从动态连结文件中取出步骤b所修改的元件数 据电路模块与相应的数据逻辑结构与数据物理储存结构;以及步骤g.根据步骤f所取出的元件数据电路模块与相应的数据逻辑结构与数据物 理储存结构加入二进制数据文件中,藉以产生观看文件。本发明提供一种电路板观视程序的文件格式的转换方法,用以将电路开发软件所 能读取的二进制数据文件转换成电路板观视程序所支持的观视文件。并且根据二进制数据 文件在各修改元件数据电路模块的期间,输出相应的动态连结文件,使得电路板观视程序 在进行观看时可以分别的加载不同修改期间的元件数据电路模块。有关本发明的特征与实作,兹配合图示作最佳实施例详细说明如下。


图1为本发明的运作流程示意图;图2为本发明的档案结构示意图;图3为本发明的运作示意图。主要元件符号说明211 数据逻辑结构212 数据物理储存结构311 二进制数据文件312 动态连结文件313 观看文件
具体实施例方式诚如前述所言二进制输出的二进制数据文件虽然可以提供高效、便捷与安全的数 据应用,但是电路观视软件而言无法支持不同版本所输出的二进制数据文件。为能解决前 述问题,本发明应用在电路板观视程序(board viewer)在观看不同新旧版本的电路开发软 件(Computer-aided design, CAD)所输出的二进制数据文件。请参考「图1」所示,其为本 发明的运作流程示意图。本发明包括下列步骤步骤a.由电路版观视程序加载具有多个元件数据电路模块的二进制数据文件, 二进制数据文件的每一元件数据电路模块均包括数据逻辑结构与数据物理储存结构;步骤b.取得元件数据电路模块修改后的数据逻辑结构与数据物理储存结构;步骤c.对修改后的数据逻辑结构与数据物理储存结构运行调配脚本,通过调配 脚本将数据逻辑结构与数据物理储存结构绑定成动态连结文件;步骤d.将二进制数据文件加载至电路板观视程序;步骤e.检查二进制数据文件所属版本是否与电路观视软件一致;步骤f.若二进制数据文件与电路观视软件的版本一致时,则由二进制数据文件 中取出元件数据电路模块的数据逻辑结构与数据物理储存结构;步骤g.若二进制数据文件与电路观视软件的版本不一致时,则电路观视软件运行调配脚本并调用操作接口,通过操作接口从动态连结文件中取出元件数据电路模块与相 应的数据逻辑结构与数据物理储存结构;以及步骤h.根据所取出的元件数据电路模块与相应的数据逻辑结构与数据物理储存 结构加入二进制数据文件中,藉以产生观看文件。为能清楚说明二进制数据文件的转换过程,请同时配合参考「图2」与「图3」所示, 其分别为本发明的档案结构与运作示意图。二进制数据文件311的每一元件数据电路模块 均包括数据逻辑结构211与数据物理储存结构212,在「图2」中所示的GraphAtom用于描 述基础图形元素,如“点”、“线”或“矩形”等。在「图2」中是以描述线段的其中一部份。typedef struct_GraphAtom{GraphAtomType atomType LONG values [4];short width ;} GraphAtom, ^pGraphAtom ;在GraphAtom中各数据成员如下定义GraphAtomType atomType 用以自定的枚举类型变量,藉以说明该元素种类;LONG values [4] :4个长整形变量用存放构成元素数据如点(X,Y)线端点1 (X, 幻,端点2礼幻;Short width 元素线体有效宽度(逻辑单位如um,mm, inch)。在「第=图2」中是以二进制数据文件311中构成线段的数据结构作为说明。在二 进制数据文件311中的元件数据电路模块为设计电路中的各项元件,在每个元件数据电路 模块中除了元件外亦包括有连接线。以微观而言,线段的显示为连续的区段所组成的,而每 一个区段可以对应到如「图2」中的每一个数据结构。换言之,由「图2」中可看中总共需要 22个byte,一个由直线段围成的多边形由若干个此类数据结构所构成。多边形数据结构在 二进制数据文件311中将以连续字节密集存储。导出的二进制的二进制数据文件311中将 包含上千个甚至更多的此类数据结构。在加载二进制的二进制数据文件311的过程中,先根据多边形特征数据(Feature Data)中记录成员特征数据在内创建多边形结构体变量。接着,根据特征数据中记录的 GraphAtomBlock个数在多边形结构体变量创建一组GraphAtom变量并将其视为多边形数 据成员。使用文件块读取指令以GraphAtom占用字节Q2byte)大小从档中以块(block)为 单位读出整体的二进制二进制数据文件311并强制转换存放在GraphAtom变量内存空间。因此,在每一次修改元件数据电路模块时,本发明将修改处所相应的数据逻辑 结构211与数据物理储存结构212取出(对应步骤b)。接着,对修改后的数据逻辑结构 211与数据物理储存结构212运行调配脚本,使得在物理存储结构与数据逻辑组织结构两 者之间引入一中间层。本发明利用中间层对物理存储结构与数据逻辑组织结构在不同时 期,从底层解决了加载观视文件时向下兼容的问题,弱化数据存储结构与数据逻辑结构间 的强绑定。其中,调配脚本可以通过Python脚本程序所实现。在经过中间层的转换后, 将物理存储结构、数据逻辑组织与二进制数据文件311输出为动态连结文件312(dynamic linklibrary,DLL)。弱化逻辑组织结构与物理存储结构间的绑定关系发生在电路板观视程
5序运行时,电路板观视程序是基于微软公司所推出的C/C++及MFC。C/C++及MFC采用静态 链接编译方式创建的。本发明使用调配脚本来代替动态链接库形式的插件,这样可以方便 地根据需求的变化改写脚本代码,而不是必须重新编译链接二进制的动态链接库。将二进制数据文件311加载至电路板观视程序,并检查二进制数据文件311所属 版本是否与电路观视软件一致。由于新旧版本的电路板开发软件所输出的二进制数据文件 311会影响电路板观视程序的开启。因此,在电路板观视程序加载二进制数据文件311时, 需检查开启的版本是否一致。若是二进制数据文件311与电路观视软件的版本一致时,则 由二进制数据文件311中取出元件数据电路模块的数据逻辑结构211与数据物理储存结构 212。换言之,二进制数据文件311不需转换可直接加载于电路板观视程序若二进制数据文件311与电路观视软件的版本不一致时,则电路观视软件运行调 配脚本并调用一操作接口,通过操作接口从动态连结文件312中取出元件数据电路模块与 相应的数据逻辑结构211与数据物理储存结构212。根据所取出的元件数据电路模块与相 应的数据逻辑结构211与数据物理储存结构212加入二进制数据文件311中,藉以产生观 看文件313。在此以下述例子作为说明,但其中相关参数并非本发明的限制。假设在二进制数 据文件311进行修改时分别于第一时间与第二时间产生相应的“A1161. BDB", "A1172. BDB" 二进制的观看文件313。enum GraphAtomType {GAT_LINE, GAT_CIRCLE, GAT_RECTANGLE};//Al 161. BDBtypedef struct_GraphAtom{GraphAtomType atomType ;LONG values [4];short width ;} GraphAtom, ^pGraphAtom ;//1172. BDBtypedef struct_GraphAtom{GraphAtomType atomType ;LONG values [7];short width ;int pointNums ;} GraphAtom, ^pGraphAtom ;通过调配脚本将新修改数据结构打包成为PYTHON脚本程序可调用的文件形式, 其创建动态链接库扩展接口项目如Bdv24DataStruct,并在项目中指定” BOOST. PYTHON”命 名空间以实现引入包装库存空间中指令(请参考下述档头所示)。#include<Bdv24_DataStruct>#include<boost/python. hpp>// 包含 Boost. Python 的头文件usingnamespace boost: :python ;//弓|入名字空间
#progma comment(lib, "boost_python. lib")在建动态链接库扩展接口的项目中,在同一个二进制二进制数据文件311中可 将不同新增版本的数据结构定义创建在不同的命名空间,自定义命名空间名称前缀,如 DataStruct,包装时可用以下格式完成对命名空间包装。在C++中对于自定义结构体而言 可转换为标准类GraphAtom,并定义为//Al 161. BDBNamespace DataStruct_1161{Class GraphAtom{Public GraphAtomType atomType ;Long values [4];Short width ;}}//Al 172. BDBNamespace DataStruct_1172{Class GraphAtom{Public GraphAtomType atomType ;Long values [7];Short width ;Int pointNums ;}}包装命名空间及GraphAtom结构体类,以下为对类别与命名空间进行设定的设 定class DataStruct {};//声明空类,用以包装成新命名空间名。当前设定目标命 名空间名为 B00ST_PYTH0N_M0DULE (BDV24) // 用‘‘BDV24 ‘‘做模块前缀。{//包装命名空间class—<DataStruct>pm(〃 DataStruct_1161〃 );scope*s_1161 = new scope(pm);//包装枚举值enum_<GraphAtomType>(“ GraphAtomType“)· value(〃 GAT_LINE〃,GAT_LINE)0106] value(〃 GAT_CIRCLE〃,GAT_CIRCLE)0107] value(〃 GAT_RECTANGLE〃,GAT_RECTANGLE)0108].export_values()0109]Il 包装类 DataMruct_11610110]class_<DataStruct_1161::GraphAtom>(〃 GraphAtom");0111]Il包装公有成员0112].def—readwrite("atomType“,&GraphAtom:atomType)0113].def—readwrite("width" ,&GraphAtom::width)0114].def—readwrite("values",&GraphAtom::values[4])0115]deletes—1161 ;0116]//包装命名空间0117]class_〈DataStruct>pm(” DataStruct_l172 ” );0118]scope*s—1172 = new scope(pm);0119]Il包装枚举值0120]enum_<GraphAtomType>(“ GraphAtomType“)0121].value(“ GAT_LINE〃,GAT_LINE)0122] value(〃 GAT_CIRCLE〃,GAT_CIRCLE)0123].value (" GAT_RECTANGLE〃,GAT_RECTANGLE)0124].export_values()0125]//包装类 DataMruct 11720126]class_<DataStruct_l172::GraphAtom>(" GraphAtom");0127]Il包装公有成员0128].def—readwrite("atomType“,&GraphAtom::atomType)0129].def—readwrite("width" ,&GraphAtom::width)0130].def—readwrite("values",&GraphAtom::values[7])0131].def—readwrite("pointNums",&GraphAtom::pointNums)0132]deletes_11721 ;0133]}0134]在新生成的” Bdv24__DataStruct. dll”动态连结文件312中包含两组不同成员声
明的同名数据结构类。如果当前的观看文件313内部已更新为新的GraphAtom数据结构。 所以在导入”A1172.BDB”档时,会在核对该文件记录的结构版本信息与观看文件313的版 本产生不一致,因此会在电路板观视软件启动时调用中间层的调配脚本。调配脚本中定义了观看文件313操作所需的对应数据结构操作接口,并可调用 操作接口以接收数据值,进而实现中调用指定版本DLL中C/C++描述的数据结构并创 建” 1172. bdb”数据块所需要结构体类型变量以保存数据值。同时提供数据结构操作接口 以供观看文件313层面使用.最终实现了观看文件313在运行时动态创建”A1172. BDB”所 需要的自定义结构体类型变量构成的底层数据结构,这样一来可以提高电路观视软件对异 构数据结构导出的二进制二进制数据文件311向下的兼容性。本发明提供一种电路板观视程序的文件格式的转换方法,用以将电路开发软件所能读取的二进制数据文件311转换成电路板观视程序所支持的观视文件。并且根据二进制 数据文件311在各修改元件数据电路模块的期间,输出相应的动态连结文件312,使得电路 板观视程序在进行观看时可以分别的加载不同修改期间的元件数据电路模块。
虽然本发明已以一较佳实施例揭露如上,然其并非用以限定本发明,在不背离本 发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变 和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种电路板观视程序的文件格式的转换方法,将一电路观视程序加载的一二进制数 据文件转换为新版本的一电路板观视程序所支持的一观看文件,其特征在于,该转换方法 包括下列步骤步骤a.由该电路板观视程序加载具有多个元件数据电路模块的该二进制数据文件, 该二进制数据文件的每一该元件数据电路模块均包括一数据逻辑结构与一数据物理储存 结构;步骤b.修改该元件数据电路模块,并取得该元件数据电路模块修改后的该数据逻辑 结构与该数据物理储存结构;步骤c.对修改后的该数据逻辑结构与该数据物理储存结构运行一调配脚本,通过该 调配脚本将该数据逻辑结构与该数据物理储存结构绑定成一动态连结文件; 步骤d.将该二进制数据文件加载至该电路板观视程序; 步骤e.检查该二进制数据文件所属版本是否与该电路观视程序一致; 步骤f.若该二进制数据文件与该电路观视软件的版本不一致时,则该电路观视软件 运行该调配脚本并调用一操作接口,通过该操作接口从该动态连结文件中取出该元件数据 电路模块与相应的该数据逻辑结构与该数据物理储存结构;以及步骤g.根据所取出的该元件数据电路模块与相应的该数据逻辑结构与该数据物理储 存结构加入该二进制数据文件中,藉以产生该观看文件。
2.如权利要求1所述的电路板观视程序的文件格式的转换方法,其特征在于,该二进 制数据文件为二进制文件。
3.如权利要求1所述的电路板观视程序的文件格式的转换方法,其特征在于,该调配 脚本为Python脚本程序。
4.如权利要求1所述的电路板观视程序的文件格式的转换方法,其特征在于,若该二 进制数据文件与该电路观视软件的版本一致时,则由该二进制数据文件中取出该元件数据 电路模块的该数据逻辑结构与该数据物理储存结构。
全文摘要
本发明公开了一种电路板观视程序的文件格式的转换方法,将电路观视程序导出的原有版本二进制数据文件转换为新版本支持的文件。转换方法包括因新增功能模块及元件数据逻辑组织,物理存储结构变化,将匹配后的数据逻辑结构与数据物理储存结构绑定成动态连结文件;加载具有数据逻辑结构与数据物理储存结构的二进制数据文件;通过中间层的数据逻辑、物理结构映像自动匹配相适应逻辑结构,若二进制数据文件物理存储结构与当前版本逻辑结构不一致,从相应版本号动态连结文件中结构与数据物理储存结构匹配的逻辑结构实现文件数据加载与呈现,产生观看文件。
文档编号G06F17/22GK102081596SQ200910225758
公开日2011年6月1日 申请日期2009年11月30日 优先权日2009年11月30日
发明者刘玉乐, 陈玄同 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1