第三章原理图API
1. 前言
原理图编辑器是一个为原理图设计而研发的、完整的,有很多吸引人的特征设计平台环境。原理图编辑器服务器运行在设计资源管理器平台上,支持开放的构架,以作为软件开发者的一个工具。在原理图编辑器的开放的构架中,应用程序接口(API)技术是主要的驱动力,API的开放性允许供应商、用户和第三方程序开发者,无需依赖任何唯一的供应商就可直接来管理工具集成。
原理图编辑器的开放构架在电子设计自动化软件市场上是唯一的,其它EDA软件应用程序是封闭的构架,结果是导致开发者很难开发在这些封闭的构架内请求服务的应用程序,开发者也许会为某些功能特征不得不向EDA供应商请求帮助。现在,使用开放的API,就不存在这个问题,开发者可以使用API来增强服务器的特征,如扩展加载或保存格式的范围(加载/保存非Protel格式文件)或提升编辑器编辑多种多样的原理图对象的能力。
原理图的开放构架允许从设计资源管理器内部扩展服务器,来访问和处理数据,为了提供一个开放的构架,使用了动态连接库的技术,来从原理图编辑器中暴露服务。

图3-1 原理图编辑器
原理图API在原理图编辑器和其它服务器之间实现信息的交换。DLL接口允许客户化的服务器来从原理图编辑器中提取必需的数据,执行相关的操作。输入/输出向导和原理图物料清单(BOM)向导是原理图编辑器的智能向导的例子,输入/输出向导允许您输出原理图电子表格的原理图对象的属性到一个电子制表软件服务器,您也能从电子制表软件服务器输出编辑器属性回到原理图电子表格。这些向导使用原理图的API,来抽取所选择的原理图对象数据到一个电子制表软件服务器。BOM向导按它们的流水号产生一个组件报表。可使用三个BOM格式,ASCII文本列表格式的Protel格式、CSV格式(逗号分隔值)报表、客户端电子制表软件格式。
2. 原理图编辑器系统
原理图编辑器是多系统同时工作的强大的应用程序,数据库系统是原理图编辑器的心脏,数据库中存储所有的有关原理图文档的信息。在原理图编辑器数据库系统中,迭代(Iterators)和原理图消息交互作用。原理图编辑器已暴露到外部的系统,通过API来简短地略述它们的功能和它们与第三方开发者之间的关联。原理图编辑器系统与原理图编辑器数据库系统相互作用,在数据库系统中要素是一个直接的原理图文档对象。
2.1 原理图编辑器数据库系统

图3-2 原理图主数据库
图3-2显示原理图编辑器的主要数据库。原理图编辑器使用一个32位数据库系统,并且有两种不同的数据库结构可利用。每一个原理图文档都存放在一个数据库系统中,数据库有关于原理图文档的所有信息。原理图编辑器数据库系统存储两类对象,绘制对象和电子对象。
原理图编辑器数据库系统有两类不同的数据结构,数据结构的类型依赖于需求的原理图编辑器而被自动地选择。两类可用的数据结构分别为扁平的数据库和空间数据库。在图3-2中左边主数据库是扁平的数据结构,由原理图对象线性列表组成。在图3-2中右边的第二个数据库在性能是优选,在第二个数据库系统内,每一个容器保存相同的对象类型,例如,公共项目容器由一个公共项目对象的线性列表组成,按它们的坐标进行组织。
2.2 迭代程序系统

图3-3 原理图API
迭代程序功能提供顺序地访问一个集合对象单元的方法,而无需暴露它的下层的表现。原理图编辑器数据库系统使用迭代程序,来提供一个紧密的访问原理图对象的方法,无需跨越API创建一个镜像数据库。迭代程序主要功能是通过遍历数据库,来读取某些原理图对象。主要有三个迭代程序类型,对象迭代程序、空间迭代程序和组迭代程序。
迭代程序在原理图编辑器的数据库系统内搜索相似的对象。对象迭代程序被用于处理全局搜索,空间迭代程序被用于处理内部搜索,组迭代程序被用于在确定的原理图对象内处理图元搜索,如涉及在对象内部还有对象的的搜索,使用组迭代程序,组对象一般是图表符号和元件对象。从外部服务器中,一个迭代程序在原理图编辑器内部遍历数据库,原理图编辑器自动选择使用哪一个数据库系统,依赖于哪一个迭代程序方法被使用。
2.3 原理图文档类型和高速缓存系统
2.3.1原理图文档类型

原理图编辑器服务器包括两类文档编辑器,原理图文档编辑器和原理图库文档编辑器。原理图文档编辑器被使用来捕捉原理图,原理图库文档编辑器被使用来创建和修改在这些原理图所使用的组件。
在图3-4中,有两类不同的原理图文档编辑器。当您在原理图图表编辑器中打开一个库,组件是可利用的,能被放置到您的原理图文档中,但它们不能被编辑。当您在原理图库编辑器中打开一个库时,组件能被编辑。已提供的原理图编辑器带有很多组件库,包含工业标准的符号,以及ANSI IEEE 和DeMorgan等。原理图库由元件描述,由单独的部份组装在一起,放置在原理图图表中,整体组成一个原理图库文档。
一个库是一套组件,并且组件的到零件划分是完全的。例如,一个中继能由两个零件组成,中继线圈零件和触点零件。每一个零件能有多到三种图形表示或模型,一般、De-Morgan和IEEE,仅一般的模型必须被呈现或创建,其它两类可随意。在一个原理图文档中的零件对象仅是原理图库中的实际组件的图形表示,在一个原理图文档中编辑零件的图元是不可能的,然而在电子表格的编程中通过使用SCH的API来操作部件对象的属性是可能的。
2.3.2高速缓存
为了有效地访问组件,原理图编辑器使用了一个特别的组件高速缓存。高速缓存本质上是一个临时的主要的库,创建在计算机内存中,其中保存每一种放置在所有打开图表中的组件类型的一份拷贝。
高速缓存保存所有当前使用在原理图环境中的组件拷贝,请见图3-5。当打开其它项目时,所有它的组件被从图表中备份库中复制到高速缓存。当您从原理图库中选择一个元件,放置到原理图文档中时,您实际上是先把元件放到高速缓存,再从高速缓存放置到原理图文档中。然而,如果文档被移去或项目被关闭,这些项目中的组件没有被清除,当原理图编辑器应用程序被关闭时,高速缓存被清除。(e-works)

图3-5 原理图高速缓存系统