ZOS-API、ZPL和DLL之间的区别

本文对ZOS-API、ZPL和DLL进行了比较。我们将会对与OpticStudio的互联、代码执行、语句和数据存取与处理这些方面进行解释说明。

作者 Haosheng Hu

概述

在OpticStudio中,用户可以通过编程(Programming)选项卡访问OpticStudio的编程功能,如Zemax编程语言(ZPL)应用程序编程接口(ZOS-API)动态链接库(DLL)。每种编程方法都有其独特的特点。本文描述了这三种编程功能的特点和区别。

ZOS-API 和 ZPL之间的区别

ZOS-API和ZPL在许多方面都有所不同,包括它们的语句、应用程序和运行环境。以下部分将提供这两种编程方法的概述,并详细描述这些差异。

什么是ZOS-API?

ZOS-API

ZOS-API是一个应用程序接口,它是为使OpticStudio能够支持与其它应用程序的连接和自定义而开发的。虽然ZOS-API依赖于COM接口,但它来源于.NET库,因此可以使用任何能够访问API库的编程语言(如C++、C#、Python、MATLAB)进行API编程。ZOS-API允许应用程序与OpticStudio中打开的实例直接交互,或者将OpticStudio作为背景程序运行。有关不同交互模式的详细资料,请查看文章ZOS-API用户可用的示例文件

什么是 ZPL?

ZPL

Zemax编程语言(ZPL)是一种宏语言,它允许用户在OpticStudio中直接编写自己的程序。ZPL可以:

  • 自动地重复键盘和鼠标操作
  • 基于OpticStudio数据执行计算
  • 以特定格式导出数据
  • 生成数据的图表和文本清单

想要获得更多关于ZPL的信息,可查看文章Zemax编程语言(ZPL)简介

不同之处

以下为ZOS-API与ZPL之间最基本的差别。

  1. 接口

ZPL宏是一个文本文件。可以在OpticStudio内的ZPL编辑器中创建和编辑ZPL宏。ZPL宏很容易学习,不需要任何编程经验,并且在其中提供了能够执行一系列命令的强大工具。下面的截图显示了ZPL编辑器中的ZPL宏。

ZOS-API应用程序是用可以访问API库的编程语言编写的。ZOS-API支持四种编程语言:MATLAB、Python、C++和C#。下方截图显示了用于连接至ZOS-API的Matlab代码。

 

  1. 代码执行

ZPL宏在OpticStudio图形用户界面(GUI)中运行。要执行或编辑ZPL宏,请单击:编程(Programming)> ZPL(ZPL Macros)>编辑/执行(Edit/Run)

ZOS-API应用程序的执行取决于使用的模式:

  • 独立应用程序(A Standalone Application) 模式是一个外部可执行文件(.exe),它将启动一个全新的OpticStudio实例作为背景程序。在这种模式下,OpticStudio作为服务器运行,没有用户界面。必须小心确保运行实例数量没有达到OpticStudio许可运行的最大数量。
  • 自定义扩展(User Extension)自定义分析(User Analysis) 模式是从OpticStudio 内置的GUI中启动的,可构建类似于扩展程序的应用程序。它们可以通过编程(Programming)>ZOS-API.NET接口(ZOS-API.NET Applications)> 自定义分析/扩展(User Analyses/Extensions)来访问的。
  • 交互扩展(Interactive Extension)编程(Programming)>ZOS-API.NET接口(ZOS-API.NET Applications)>交互扩展(Interactive Extension)打开。它可以将外部的ZOS-API应用程序连接到OpticStudio的现有实例。
  1. 语法

ZPL是一种可编译的“宏”或“脚本”语言,类似于带有光线追迹函数BASIC编程语言

所有ZOS-API程序和扩展都是用C#、C++、MATLAB或Python等外部编程语言编写的。

  1. 数据存取和处理

ZPL宏由存储在文本文件中的一系列命令组成。这些命令可以给变量(数值或字符串)赋值、使用关键字调用函数或进行注释。在ZPL中,所有数据存取和处理都基于已定义的命令。ZPL作为解译型代码,在运行复杂计算时,它可能比完全编译的代码慢。

在ZOS-API中,数据存取和数据处理更加灵活和强大。ZOS-API可以利用其它高级编程语言(如MATLAB)的数值分析和矩阵计算能力。

  1. 互用性

ZPL不能通过ZOS-API调用,反之亦然。

  1. 对比表格
  ZOS-API ZPL
接口 取决于所选的编程语言 OpticStudio内置
代码执行 非常灵活(可以是可执行文件,可以从编程语言运行,也可以嵌入到OpticStudio中) OpticStudio内置
语法 取决于所选的编程语言 非常基础;易于学习
数据存取和处理

灵活而强大的数据存取和处理

可以利用其他编程语言的数值分析和矩阵计算能力(如使用MATLAB的ZOS-API)

解译型语言

进行复杂计算时,比完全编译的代码更慢

ZOS-API 和DLL的区别

什么是DLL?

动态链接库(Dynamic Link Library,DLL)是一个共享库。它是一个Windows程序,但不能像EXE程序那样直接运行。它可以被另一个程序调用,即我们的OpticStudio。DLL根据需要调用,并在完成时关闭。只在需要时使用DLL,使得内存管理方面更高效。在OpticStudio中,发送到DLL的数据是指定且有一定限制的。存在不同类型的DLL,如用户自定义表面、用户自定义散射配置文件等。对于每种类型的DLL,可以在文件夹{Zemax}/DLL下的示例DLL源代码中找到数据结构。有关DLL的更多信息,请查看文章如何编译用户自定义DLL。

不同之处

ZOS-API和DLL之间最根本的区别是客户端-服务器角色是相反的。

  • ZOS-API脚本是一个客户端,它调用OpticStudio作为服务器来执行任务。ZOS-API脚本可以访问OpticStudio接口,并且OpticStudio内几乎所有方面的功能都可以通过ZOS-API脚本访问和运行。API脚本还包含其他功能,比如批量处理光线追迹(Batch Ray Trace)等。
  • DLL充当服务器。OpticStudio客户端将指定数据发送给DLL或从DLL获取指定数据,并最终将这些数据返回至OpticStudio中。因此,OpticStudio仅负责数据交换,由此限制了DLL的操作范围。

KA-01806

这篇文章有帮助吗?
3 人中有 3 人觉得有帮助

评论

0 条评论

文章评论已关闭。