# 如何快速开发 APP
本文以 Syslab 平台自带的 APP 曲线拟合工具为例,介绍如何快速开发 APP。
# 曲线拟合 APP 介绍
下面以 Syslab 平台自带的 APP 曲线拟合工具为例,讲述开发和使用 APP 的方法。曲线拟合 APP 提供了一个灵活的界面,您可以在其中使用拟合算法来交互拟合数据并查看曲线图。
# APP 开发测试打包
如果您要自己开发 APP,请参考综合案例介绍。
# APP 安装使用
Syslab 平台提供可视化管理和命令式管理两种方式,都可以实现对 APP 的安装和使用。
# 可视化管理
Syslab 提供 APP 可视化管理功能,支持安装、启动、编辑、卸载 APP 等功能,APP 管理入口位于工具栏 Ribbon 的 APP 菜单页。
APP 管理入口
Syslab 的 APP 管理入口,位于工具栏 Ribbon 的 APP 菜单页,提供 APP 管理的快捷操作。位置如下图:
APP 的 Ribbon 面板主要由两部分组成:
- 安装 APP:APP 安装入口。单击按钮,弹出安装 APP 对话框,填写 APP 的相关配置项,单击确定,即可安装 APP 到 APP 展示区。
- APP 展示区:APP 启动入口。展示 Syslab 内置 APP 和用户自定义安装的 APP,单击 APP 图标,即可启动 APP。单击最右侧的下拉箭头,弹出下拉面板,显示所有已安装的 APP。
安装 APP
Syslab APP 管理提供安装 APP 功能,单击安装 APP 按钮,弹出安装 APP 对话框,填写 APP 的相关配置项,单击确定,即可安装 APP 到 APP 展示区。操作步骤如下图所示:
下述以曲线拟合工具 APP 为例,介绍如何填写安装 APP 的相关配置项。
Syslab 中提供了曲线拟合工具 APP 示例,位于
<Syslab安装路径>/Examples/10 AppDemos下,建议用户将 APP 放到统一的目录下进行管理。Syslab 提供了用户 APP 存放目录,Windows 系统位于C:/Users/Public/TongYuan/syslab-julia/Apps下;Linux 系统位于~/TongYuan/syslab-julia/Apps下。本节以 Windows 系统为例,在用户 APP 目录下创建
Cftool文件夹,并将示例程序<Syslab 安装路径>/Examples/10 AppDemos/cpp/dist/cftool-1.0-win64.zip解压后,将内容拷贝到该文件夹下。

- Cftool:Cftool APP 文件夹(内部包含示例 APP)。
app_default.svg:默认 APP 图标(系统提供,用户无需修改)。app_info.json:用户安装 APP 的配置文件(系统提供,用户无需修改)。
# 操作步骤
- 打开 Syslab,Ribbon 工具栏切换至 APP 菜单页。

- 单击安装 APP 按钮,弹出安装 APP 对话框,如图所示,编辑相关配置项。

- APP 名称(必填):当前安装 APP 的名称。
- APP 版本号:当前安装 APP 的版本号(默认 APP 版本号为 1.0)。
- APP 启动脚本(必填):当前 APP 的启动脚本,单击 APP 时,将在 Julia REPL 终端执行此脚本。本例中设置启动脚本为 SyslabApp.start("Cftool",2),其中:
- SyslabApp.start:内置提供的启动 APP 命令;
- “Cftool”:APP 的名称;
- “2”:APP 的输入参数。针对本示例,表示 APP 启动时设置多项式指数为 2。
- APP 可执行文件路径:当前 APP 的可执行文件的路径。
- APP 注册函数文件路径:高级选项,启动 APP 时将执行该注册函数文件
*.jl,详细用法参见控制系统设计 APP 的相关配置。 - APP 图标:当前 APP 的图标,用户可以选择本地路径中
svg、jpeg、jpg、png格式图片,若不进行设置,则统一使用默认图标。 - APP 作者:当前 APP 的作者。
- APP 说明:当前 APP 的说明。
- 安装验证:单击确定按钮,APP 安装成功,Ribbon 面板成功添加 Cftool APP。

# 启动 APP
单击已安装的 Cftool APP,REPL 终端执行启动脚本,弹出曲线拟合工具窗口,启动 APP 成功。

# 编辑 APP
Syslab APP 管理提供编辑 APP 功能,支持对已安装 APP 的相关信息进行修改。单击 APP 面板最右侧的下拉箭头,弹出下拉面板,显示所有已安装的 APP,右击已安装的 APP,单击编辑按钮,弹出编辑 APP 对话框,支持对 APP 名称以外的 APP 信息进行修改,如修改 APP 版本号为 2.0。
单击确定按钮,保存编辑内容,Ribbon 面板同步刷新,当鼠标悬停在 CftoolAPP 时,显示版本号更新为 2.0。

# 卸载 APP
Syslab APP 管理提供卸载 APP 功能,单击 APP 面板最右侧的下拉箭头,弹出下拉菜单,显示所有已安装的 APP,右击已安装的 APP,单击卸载按钮,选中的 APP 从面板移除。

# APP 与 Syslab 交互
在 Syslab 中导入测试数据
曲线拟合工具示例 APP 提供了测试数据,位于
<Syslab 安装路径>\Examples\10 AppDemos\cpp\CurveFitTool\test\census.jl。回到 Syslab 命令行窗口,执行导入数据的命令,示例如下:julia> include(raw"<Syslab安装路径>\Examples\10 AppDemos\cpp\CurveFitTool\test\census.jl") 21-element Vector{Float64}: 3.9 5.3 7.2 9.6 12.9 17.1 ⋮ 226.5 248.7成功导入数据后,在工作区窗口中可以查看到变量的名称 cdate 和 pop。如下图所示:

cdate 为采样时间,它是一个数组,pop 为采样时间对应的数据,它也是一个数组。接下来的操作会使用到这 2 个数据。
从 Syslab 工作区获取数据
在曲线拟合工具的图形界面中,在数据区域单击更新按钮,如下图所示:
更新完成后,在 X 数据和 Y 数据对应的下拉框中,分别选择数据 cdate 和 pop,线图控件将动态绘制拟合曲线,如下图所示:
您可以在多项式拟合区域,选择修改多项式指数,线图控件将动态绘制对应的新拟合曲线。

写数据到 Syslab 工作区
多项式拟合计算的结果包括拟合曲线的 y 值和多项式系数(p1、p2、p3...),可以将这些结果写入 Syslab 工作区。在多项式拟合区域单击导出按钮,将弹出导出对话框,如下图所示:
单击确定按钮,导出完成后,在 Syslab 平台的工作区中将展示上述导出的数据,如下图所示:
您也可以在 Syslab 命令行窗口中,执行plot()命令来绘制结果曲线图,示例如下:julia> plot(cdate, pop, ".", cdate, out) 2-element Vector{PyCall.PyObject}: PyObject <matplotlib.lines.Line2D object at 0x00000000D1B966D0> PyObject <matplotlib.lines.Line2D object at 0x00000000D1B96A00>Syslab 平台中绘制的结果曲线如下图所示:

# 命令式管理
初始化
每次启动 Syslab 命令行窗口后,在使用 APP 前,需要执行命令
init_SyslabApp(),以初始化 APP 管理的上下文环境。示例如下:julia> init_syslabapp()安装 APP
以 Syslab 自带的 APP 示例曲线拟合工具为例,将示例程序
<Syslab 安装路径>/Examples/10 AppDemos/cpp/dist/cftool-1.0-win64.zip解压到同级目录后,安装 APP 的 julia 代码如下:julia> cftool_info = SyslabApp.AppInfo("cftool", raw"$(SYSLAB_HOME)/Examples/10 AppDemos/cpp/dist/cftool-1.0-win64/CurveFitTool.exe", raw"$(SYSLAB_HOME)/Examples/10 AppDemos/cpp/dist/cftool-1.0-win64/cftool.jl", "1.0", "Tongyuan", "曲线拟合工具") julia> SyslabApp.install(cftool_info) true以上 AppInfo 为 APP 的描述信息,具体属性描述如下:
- 参数 1:APP 名称,是 APP 的主键信息,必填项;
- 参数 2:APP 可执行文件路径,必填项;
- 参数 3:APP 启动脚本文件,可选项;
- 参数 4:APP 版本,可选项;
- 参数 5:APP 作者,可选项;
- 参数 6:APP 描述信息,可选项。
其中,“参数 3”APP 启动脚本文件的写法如下:
# 建议函数名与APP名称一致,函数参数由用户决定。 function cftool(term) # do something # 启动APP及传入参数,该参数将作为APP启动参数 SyslabApp.start("cftool", term) end卸载 APP
在 Syslab 平台的命令行窗口中,使用命令
SyslabApp.uninstall(name)来卸载 APP,入参为安装 APP 时输入的参数 1:APP 名称。APP 被卸载后就无法被使用了。示例如下:julia> SyslabApp.uninstall("cftool") true julia> SyslabApp.start("cftool") ┌ Warning: cftool is not exist! └ @ SyslabApp .\scripts\packages\SyslabApp\src\SyslabApp.jl:151 false julia> SyslabApp.get_app("cftool") ┌ Warning: cftool is not exist! └ @ SyslabApp .\scripts\packages\SyslabApp\src\SyslabApp.jl:181 false禁用 APP
在 Syslab 平台的命令行窗口中,使用命令
SyslabApp.disable(name)来禁用指定名称的 APP,入参为安装 APP 时输入的参数 1:APP 名称。APP 被禁用后无法再启动。示例如下:julia> SyslabApp.disable("cftool") true julia> cftool(3) ┌ Warning: cftool is disabled! └ @ SyslabApp .\scripts\packages\SyslabApp\src\SyslabApp.jl:156 false激活 APP
在 Syslab 平台的命令行窗口中,使用命令
SyslabApp.enable(name)来激活被禁用的 APP,入参为安装 APP 时输入的参数 1:APP 名称。APP 被激活后就可以再次启动了。示例如下:julia> SyslabApp.enable("cftool") true julia> cftool(3) true启动 APP
到这一步您的曲线拟合工具已经安装成功。可以使用命令
SyslabApp.start("cftool")来启动该 APP。 命令启动 APP 的示例如下:# 方法1 julia> SyslabApp.start("cftool", 3) true # 方法2:需要上一步的启动脚本文件 julia> cftool(3) true以上命令(二选一)执行成功后,将启动曲线拟合工具的图形界面。

查询 APP 列表
在 Syslab 平台的命令行窗口中,使用命令
SyslabApp.get_apps()来查询注册到 Syslab 平台中的所有 APP 信息。示例如下:julia> SyslabApp.get_apps() Dict{String, Any} with 1 entry: "cftool" => Dict{String, Any}("registerFunc"=>"cftool", "name"=>"cftool", "author"=>"Tongyuan", "enabled"=>true, "version"=>"1.0", "path"=>"E:/MwSyslab/Test/Examples/10 AppDemos/x64/Debug/C…查询指定 APP 信息
在 Syslab 平台的命令行窗口中,使用命令
SyslabApp.get_app(name)来查询注册到 Syslab 平台中的指定名称的 APP 信息,入参为安装 APP 时输入的参数 1:APP 名称。示例如下:julia> SyslabApp.get_app("cftool") Dict{String, Any} with 7 entries: "registerFunc" => "cftool" "name" => "cftool" "author" => "Tongyuan" "enabled" => true "version" => "1.0" "path" => "./Test/Examples/10 AppDemos/x64/Debug/CurveFitTool.exe" "description" => "曲线拟合工具箱"