AnyMath 文档

节奏软件控制

要使用 AnyMath 中的KPM"RITM"的软件管理功能,请安装*AnyMath子系统。综合服务*:

engee.package.install("Engee-Device-Manager")

本页包含 AnyMath 中KPM"RITM"的所有可用软件管理功能。

方法 里特姆

buildModel(ritm, model, is_interactive_mode::Bool=false)::Nothing

构建并准备模型,以便在 RITM 上运行。

参数

  • ritm::Any :RITM 目标平台对象。

  • model::Any :模型结构。

  • is_interactive_mode::Bool :指示模型执行模式的标志:true — 模型以交互模式执行;false (默认)-- 模型以独立模式执行。

示例

# 在RITM上获取并在RITM上运行在画布上打开的standalone 模型:

model = engee.gcm()
RITM_API.buildModel(ritm, model, false)
RITM_API.runModel(ritm, model, false)
RITM_API.disableAutostart(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

从自动启动中删除模型。

参数

  • ritm::Any : 目标平台的 RITM 对象。

示例

RITM_API.disableAutostart(ritm)
RITM_API.getAutostart(ritm)::Union{Dict{String, Union{String, Int64, Bool, Nothing}}, Nothing}

获取位于自动启动列表中的模型。

参数

  • ritm::Any : 目标平台的 RITM 对象。

示例

RITM_API.getAutostart(ritm)
RITM_API.getData(ritm::Any, model_name::String, file_path::String, in_file::Bool = false)

返回在RITM上对模型进行性能分析的结果。根据in_file 的值,结果可以以字符串形式返回,或保存到指定路径的文件中。

参数

  • ritm::Any :RITM目标平台对象。

  • model_name::String :需要获取性能分析数据的模型名称。

  • file_path::String :保存结果的路径(若in_file = true )。若in_file = false ,则忽略该值。

  • in_file::Bool = false :指定结果的返回方式。 若true ,数据将按file_path 保存至文件。若false ,则返回包含结果的字符串。

示例

# 将性能分析数据作为字符串获取
result = RITM_API.getData(ritm, "newmodel_1", "", false)

# 将数据保存到RITM上的文件中
RITM_API.getData(ritm, "newmodel_1", "/user/profile.txt", true)
getDiagnostic(ritm)::Nothing

将诊断存档ritm_diagnostic.zip下载到当前AnyMath目录中。

参数

  • ritm::Any : RITM目标平台对象。

示例

RITM_API.getDiagnostic(ritm)
RITM_API.getFile(ritm::Any, file_name::String; from=/mydir::String, to=::String)

从目录/mydir 中获取指定的文件file_name

参数

  • ritm::Any : RITM目标平台对象。

  • file_name::String :目标文件的名称。

  • from=/mydir::String :目标目录的路径(默认为/home/ritm/ )。

  • to=::String :在 AnyMath 中用于保存文件的目录路径(默认为当前目录)。

示例

# 将文件install_manifesttxt 从目录 /home/ritm/build/newmodel_1/build 复制到当前目录Engee :

RITM_API.getFile(ritm, "install_manifest.txt"; from="/home/ritm/build/newmodel_1/build/", to="")
RITM_API.getLog(ritm::Any, num::Int64)

返回指定数量的在 RITM 上运行模型的日志行。

参数

  • ritm::Any :RITM 目标平台对象。

  • num::Int64 :要输出的日志行数。

示例

RITM_API.getLog(ritm, 10)
getPtpSettings(ritm) -> Vector{String}

获取已保存的 PTP 配置。返回 PTP 配置----一个字符串向量,其中包含所选接口、延迟机制、网络传输层、角色以及 PTP 时钟的属性。

示例

getPtpSettings(ritm)
getPtpState(ritm) -> Vector{String}

获取 PTP 状态----一个字符串数组,通常包含接口、角色和状态。返回当前 PTP 状态:已启动或已停止;如果 PTP 已启动,则还会返回接口和角色。

示例

getPtpState(ritm)
RITM_API.getScreenshot(ritm::Any, filename::String = "screenshot.png")

在目标 RITM 平台上创建屏幕截图,并返回已保存图像的路径。屏幕截图将保存在 RITM 机器上的临时目录中。 可以显式指定输出文件名;默认使用"screenshot.png"

参数

  • ritm::Any : 目标 RITM 平台对象。

  • filename::String = "screenshot.png" : 将截图保存到的文件名(在 RITM 端)。

示例

# 生成屏幕截图并获取其路径
path = RITM_API.getScreenshot(ritm, "example.png")
RITM_API.isConnected(ritm::Any)

检查 RITM 的可用性。

参数

ritm::Any :RITM 目标平台对象。

示例

RITM_API.isConnected(ritm)
RITM_API.isRunning(ritm::Any, model_name::String)

检查指定模型是否在目标 RITM 平台上运行。如果指定名称的模型当前正在 RITM 机器上运行,则返回 ;如果未运行,则返回 false ``。

参数

  • ritm::Any :目标 RITM 平台对象。

  • model_name::String :需要检查其状态的模型名称。

示例

# 检查模型 "newmodel_1" 是否已运行
is_active = RITM_API.isRunning(ritm, "newmodel_1")
RITM_API.listFiles(ritm::Any, path::String)

输出指定目录中的文件列表。

参数

  • ritm::Any :RITM目标平台对象。

  • path::String :目标目录的路径。

示例

RITM_API.listFiles(ritm, "/home/ritm/")
RITM_API.memInfo(ritm::Any, model::String)

输出模型内存消耗信息。

参数

  • ritm::Any :RITM 目标平台对象。

  • model::String :模型名称。若留空"" ,则返回系统性能分析结果,格式为[total, used, free] 。若指定模型名称,则返回该模型占用的内存字节数。

示例

RITM_API.memInfo(ritm, "newmodel_1")
RITM_API.poweroff(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

关闭机器。

参数

  • ritm::Any : RITM目标平台对象。

示例

RITM_API.poweroff(ritm)
RITM_API.readFile(ritm::Any, file_name::String; path=/mydir::String)

输出/home/ritm/build/model_name/build/ 目录下指定文件file_name 的内容,其中model_nameAnyMath中的模型名称。

参数

  • ritm::Any :RITM目标平台对象。

  • file_name::String :目标文件的名称。

  • path=/mydir::String :包含目标文件的目录路径(默认路径为/home/ritm/build/model_name/build/ )。

示例

# 输出文件install_manifest 的内容。txt 位于目录 /home/ritm/build/newmodel_1/build 中:

RITM_API.readFile(ritm, "install_manifest.txt"; path="/home/ritm/build/newmodel_1/build/")
RITM_API.reboot(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

重启机器。

参数

  • ritm::Any : 目标 RITM 平台的对象。

示例

RITM_API.reboot(ritm)
RITM_API.removeFile(ritm::Any, path::String)::String

删除目标 RITM 平台指定路径下的文件。返回从 RITM 删除文件的状态。

参数

  • ritm::Any : 目标 RITM 平台对象。

  • path::String : 要从 RITM 删除的文件的路径。

示例

# 删除 RITM 中的文件newmodel_1 :
RITM_API.removeFile(ritm, "/home/ritm/newmodel_1.engee")
resetPtpSettings(ritm) -> Dict{String, Union{String, Int64, Bool, Nothing}}

清除 RITM 上保存的 PTP 设置。返回包含操作结果的字典:状态和错误消息(如有)。

重置后,在启动 PTP 之前,需通过 setupEthPtp 重新配置所需接口。

RITM_API.runModel(
    ritm,
    model,
    is_interactive_mode::Bool=false;
    simulation_uuid=string(uuid4()),
    status_callback=(args...) -> nothing,
    termination_callback=(args...) -> nothing,
) -> Union{Channel{TargetSimulationStatus}, Nothing}

在 RITM 上运行先前构建的模型。

参数

  • ritm::Any : RITM目标平台对象。

  • model::Any : 模型结构。

  • is_interactive_mode::Bool : 指示模型执行模式的标志:true — 模型以交互模式执行;false (默认)-- 模型以独立模式执行。

  • simulation_uuid::String :交互式模式的启动标识符。

  • status_callback :该函数会在接收到每个执行状态时被调用。

  • termination_callback :该函数在交互式执行完成后被调用。

nothing 的值用于独立执行或交互式执行的状态通道。

示例

RITM_API.runModel(ritm, model)
RITM_API.setAutostart(ritm, model_name::String)::Dict{String, Union{String, Int64, Bool, Nothing}}

将模型设置为自动运行。

参数

  • ritm::Any : RITM目标平台对象。

  • model_name::String : 模型名称。

示例

RITM_API.setAutostart(ritm)

setupEthPtp(
    ritm,
    eth_number,
    role;
    delay_mech="E2E",
    network_tr="UDPv4",
    priority1=128,
    priority2=128,
    clock_class=248,
    clock_accuracy=254,
) -> Dict{String, String}

在选定的 RITM 以太网接口上配置 PTP。返回包含操作结果的字典:状态和错误信息(如有)。

参数

  • eth_number :RITM的以太网接口编号,例如1 表示以太网1。

  • role :指定PTP本地时钟的角色:"Master""Slave"

  • delay_mech :PTP的工作模式。可能的值包括"E2E""P2P""Auto" 。默认值为"E2E"

  • network_tr :网络协议。 可能的取值为"UDPv4""UDPv6""L2" 。默认值为"UDPv4"

  • priority1 :本地时钟属性"Приоритет 1" 。取值范围为0255 。默认值为128

  • priority2 :本地时钟属性"Приоритет 2" 。取值范围为0255 。默认值为128

  • clock_class :本地时钟属性"Класс" 。有效范围为0255 。默认值为248

  • clock_accuracy :本地时钟属性"Точность" 。有效范围为0255 。默认值为254

RITM_API.setupEthernet(ritm, interface_id::Int64, ip::String, mask::Int64)::Dict{String, Union{String, Int64, Bool, Nothing}}

配置机器的以太网接口。

参数

  • ritm::Any : RITM目标平台对象。

  • interface_id::Int64 : 以太网接口标识符。

  • ip::String : 接口的IP地址。

  • mask::Int64 : 子网掩码。

示例

RITM_API.setupEthernet(ritm, 0, "192.168.0.10", 24)
startPtp(ritm, eth_number) -> Dict{String, Union{String, Int64, Bool, Nothing}}

在 RITM 选定的以太网接口上启动 PTP。返回包含操作结果的字典:状态和错误信息(如有)。

在启动 PTP 之前,必须通过 setupEthPtp 配置接口。

参数

  • eth_number : 以太网接口编号。可能的取值为"HostTarget""1" --"max ethernet number"

示例

startPtp(ritm, 1)
RITM_API.stopModel(ritm)::Nothing

停止 RITM 上的模型。

参数

  • ritm::Any : 目标 RITM 平台对象。

示例

RITM_API.stopModel(ritm)
stopPtp(ritm, eth_number) -> Dict{String, Union{String, Int64, Bool, Nothing}}

停止 RITM 上所选以太网接口上的 PTP。返回包含操作结果的字典:状态和错误消息(如有)。

参数

  • eth_number : 以太网接口编号。可能的取值包括"HostTarget""1" --"max ethernet number"

示例

stopPtp(ritm, 1)

RITM_API.updateFirmware(
    ritm,
    firmware_path::String="",
    checksum_path::String="";
    reboot::Bool=true,
    show_progress=false,
)::Nothing

更新 RITM 固件。

参数

  • ritm::Any : 目标 RITM 平台的对象。

  • firmware_path::String : 固件文件的本地路径。

  • checksum_path::String : 校验和文件的本地路径。

  • reboot::Bool :更新成功后重启 RITM 设备。默认值为true

  • show_progress::Bool :将更新进度信息输出到日志中。

示例

RITM_API.updateFirmware(ritm; show_progress=true)
RITM_API.updateFirmware(ritm, "/user/firmware.raucb", "/user/firmware.raucb.checksum")
RITM_API.updateSupportPackage(ritm, support_package_path::String=""; show_progress=false)::Nothing

更新 RITM 支持包。

如果未指定参数support_package_path ,则安装与当前 AnyMath 版本对应的包。如果指定了参数support_package_path ,则从指定的本地文件中安装包。

参数

  • ritm::Any : RITM 目标平台对象。

  • support_package_path::String :支持包的本地路径。

  • show_progress::Bool :将更新执行过程的信息输出到日志中。

示例

RITM_API.updateSupportPackage(ritm)
RITM_API.updateSupportPackage(ritm, "/user/ritm_support_package.tar.gz"; show_progress=true)
RITM_API.uploadFile(ritm::Any, filename::AbstractString; from::AbstractString=pwd(), to::AbstractString="/home/ritm")::String

将文件从 AnyMath 下载到目标 RITM 平台。

参数

  • ritm::Any : 目标 RITM 平台的对象。

  • filename::AbstractString : 要上传到 RITM 的文件名。

  • from::AbstractString = pwd() : AnyMath 中包含待上传文件的目录路径(默认值为当前目录)。

  • to::AbstractString = "/home/ritm" :文件在RITM上的上传路径(默认值为/home/ritm )。

示例

using EngeeDeviceManager.Targets
using EngeeDeviceManager.Targets.RITM.RITM_API

# 创建 RITM 对象并设置地址
ritm = Targets.RITM_API.Ritm("http://192.168.56.3:8000/")

# 将文件test.bin 从当前目录Engee (pwd()) 上传至 RITM 上的 /home/ritm
res = RITM_API.uploadFile(ritm, "test.bin")

# 将文件从指定目录Engee (/user/...) 上传至 RITM 上的指定目录
res = RITM_API.uploadFile(ritm, "install_manifest.txt"; from="/user/project/", to="/home/ritm/data/")
RITM_API.version(ritm)::Dict{String, String}

RITM固件及支持包的版本。 返回包含以下键的字典:

  • "firmware" — 固件版本。

  • "support_package" — 支持包(sysimage)版本。

参数

  • ritm::Any : RITM目标平台对象。

示例

RITM_API.version(ritm)