AnyMath 文档

节奏软件控制

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

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

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

方法 里特姆

Ritm(spec::AbstractString)::RITM.Ritm

创建用于管理RITM机器的对象。

参数

  • spec::AbstractString :RITM机器的规格。 机器规格可通过以下两种方式之一指定:

    • 完整URL,例如"http://192.168.56.3:8000/" ;

    • 存储在机器内存中的机器名称或IP地址(例如"RITM 1" 或"192.168.56.3" )。完整URL地址基于已保存的机器信息卡确定。

无法访问未保存的机器:必须先通过addMachine 方法或"`RITM.机器管理`"应用程序将其添加,否则将出现错误ArgumentError 。

每次调用都会创建一个新的描述符,并替换缓存中的机器描述符。当向RITM_API 方法传递字符串参数时,每台机器都会使用一个通用描述符,而显式传递的描述符则会原样使用。如果客户端已被重启,则在下一次使用字符串参数进行调用时,描述符将自动重新创建。

示例

ritm = RITM_API.Ritm("http://192.168.56.3:8000/")
ritm = RITM_API.Ritm("192.168.56.3")
ritm = RITM_API.Ritm("RITM 1")
_resolve_ritm_address(spec::AbstractString)::String

将机器规范转换为完整 URL。如果传入的是完整 URL, 则原样返回;否则,将根据名称或已保存的 IP 地址在存储库中搜索该机器。如果机器未在存储库中注册,则抛出标准异常ArgumentError ,并提示未找到该机器。

参数

spec::AbstractString :RITM机器的规格。

_ritm_cache_key(address::AbstractString)::String

RITM机器地址的规范注册表键。

参数

  • address::AbstractString :主机名(小写)和端口; 如果未指定端口,则使用默认值RITM_MACHINE_DEFAULT_PORT 。允许输入完整的 URL、host:port 这样的组合,或仅输入主机名;同时支持userinfo 组件、方括号中的 IPv6 地址以及查询字符串(query strings)。未指定协议的地址将被解释为http:// ,以避免将host:port 这样的组合误认为协议。

addMachine(name, ip; port="8000", is_default=false)::Nothing

将 RITM 机器卡片添加到机器存储库中。

若添加成功,日志中将记录一条确认消息。

如果存储库在并行操作中被修改,则会引发RitmMachinesStorageConflict 异常:此时应重新读取机器列表并重试调用。

参数

  • name::AbstractString :机器名称。

  • ip::AbstractString: 机器的 IP 地址。

  • port::AbstractString: 机器的端口。该参数作为命名参数传递(port="..." )。默认值为"8000" 。

  • is_default::Bool: 将该机器标记为默认使用的机器。该参数作为命名参数传递(is_default=true )。 默认值为false 。如果is_default=true ,则新机器将成为唯一的默认机器。

示例

RITM_API.addMachine("RITM 2", "192.168.56.4")
RITM_API.addMachine("RITM 3", "192.168.56.5"; is_default=true)
buildModel(ritm, model, is_interactive_mode::Bool=false)::Nothing

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

参数

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

  • model::Any :模型结构。

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

示例

# 在RITM上收集并运行在standalone 画布中打开的模型:

model = engee.gcm()
RITM_API.buildModel(ritm, model, false)
RITM_API.runModel(ritm, model, false)
changeParam(ritm, block_key, param, data)::String

修改在 RITM 机器上以交互模式运行的模型的参数。模型的运行不会中断;新值将转换为模型中主机端声明的参数类型。

模型必须已构建并以交互模式运行,即使用参数is_interactive_mode=true (适用于buildModel 和runModel )。

返回操作结果的消息。

参数

  • ritm :地址(URL)、IP 地址或 RITM 主机名。

  • block_key::Union{String, UUID} :模型中区块的路径(例如,"model_name/Block Name" )或区块的 UUID。

  • param::String :参数名称。

  • data :参数的新值:数字、逻辑值或数字或逻辑值的向量。

示例

RITM_API.changeParam(ritm, "my_model/Gain", "Gain", 2.5)
disableAutostart(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

从自动启动中删除模型。

参数

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

示例

RITM_API.disableAutostart(ritm)
downloadFile(ritm, filename; from="/home/ritm/", to=pwd())::Nothing

将文件从 RITM 机器下载到本地目录 AnyMath。

参数

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

  • filename::AbstractString: 要下载的文件名。

  • from::AbstractString: RITM 机器上的源目录。该参数作为命名参数传递(from="..." )。默认值为"/home/ritm/" 。

  • to::AbstractString: 本地目标目录。该参数作为命名参数传递(to="..." )。默认值为当前目录。

示例

RITM_API.downloadFile(ritm, "profile.txt"; from="/home/ritm/build/my_model/", to="/tmp/")
getAutostart(ritm)::Union{Dict{String, Union{String, Int64, Bool, Nothing}}, Nothing}

获取处于自动启动状态的模型。

参数

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

示例

RITM_API.getAutostart(ritm)
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)
getFile(ritm::Any, file_name::String; from::String, to::String)

从目录from 中获取指定文件file_name 。

参数

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

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

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

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

示例

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

RITM_API.getFile(ritm, "install_manifest.txt"; from="/home/ritm/build/newmodel_1/build/", to="")
getIPByName(name::AbstractString)::Union{String, Nothing}

返回存储在机器存储库中的RITM机器的IP地址。

参数

  • name::AbstractString :存储在机器存储库中的机器名称。

示例

RITM_API.getIPByName("RITM 1")
getLog(ritm, number_of_lines::Int64)::String

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

参数

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

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

示例

RITM_API.getLog(ritm, 10)
getMachines()::Vector{Dict{String, Any}}

返回存储在机器存储库中的 RITM 机器描述向量。

每个描述都是一个字典,其键为"name" 、"ip" 、"port" 和"default" 。

示例

RITM_API.getMachines()
getNameByIP(ip::AbstractString)::Vector{String}

返回所有具有指定IP地址的RITM机器的名称。

返回结果始终是一个向量:每台对应机器对应一个名称;若 IP 地址重复,则返回多个名称(按存储顺序排列);若不存在具有该 IP 地址的机器,则返回空向量。

参数

  • ip::AbstractString :机器的IP地址。

示例

RITM_API.getNameByIP("192.168.56.3")
getProfileData(ritm, model_name; engee_location="/user/", in_file=false)::Union{String, Nothing}

获取在RITM机器上收集的模型分析数据。

如果in_file=false ,则以字符串形式返回数据。如果in_file=true ,则将数据写入指定本地目录下的<model_name>.txt 文件,并返回nothing 。

参数

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

  • model_name::AbstractString :模型名称。

  • engee_location::AbstractString :若in_file=true ,则用于写入文件的本地目录。该参数作为命名参数传递(engee_location="..." )。默认值为/user/ 。

  • in_file::Bool :数据接收模式。当值为false 时,返回字符串;当值为true 时,数据写入文件,且不返回任何值。该参数作为命名参数传递(in_file=true )。

示例

data = RITM_API.getProfileData(ritm, "my_model")
RITM_API.getProfileData(ritm, "my_model"; engee_location="/user/", in_file=true)
getPtpSettings(ritm)::Vector{String}

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

参数

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

示例

RITM_API.getPtpSettings(ritm)
getPtpState(ritm)::Vector{String}

获取PTP状态。返回当前PTP状态:已启动或已停止;若PTP已启动,则同时返回接口和角色。

参数

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

示例

RITM_API.getPtpState(ritm)
getScreenshot(ritm, filename::String="screenshot.png"; to=pwd())::String

在RITM目标平台上生成屏幕截图,并将其上传至AnyMath文件系统。

参数

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

  • filename::String = "screenshot.png" :用于保存屏幕截图的文件名(在 RITM 端)。

  • to=pwd() :AnyMath 端的本地目标目录。 该参数作为命名参数(to="...") 传递。默认值为当前目录。

示例

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

检查RITM服务器的可用性。若RITM服务器可用,则返回true ;否则返回false 。

参数

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

示例

RITM_API.isConnected(ritm)
isMachineExists(name::AbstractString)::Bool

检查指定名称的 RITM 机器是否已保存到机器存储库中。

如果机器存在,则返回true ;否则返回false 。

参数

  • name::AbstractString :机器名称。

示例

RITM_API.isMachineExists("RITM 1")
isRunning(ritm::Any, model_name::String)::Bool

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

参数

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

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

示例

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

返回指定目录中的文件列表。

参数

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

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

示例

RITM_API.listFiles(ritm, "/home/ritm/")
memInfo(ritm, model_name=nothing)::Union{Vector{Int64}, Int64}

返回一个包含系统内存信息的值向量,或一个表示特定模型所占用内存大小的整数。

参数

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

  • model_name::Union{String, Nothing}: 模型名称。如果未指定此参数或指定为空字符串,则返回系统内存信息。如果指定了模型名称,则返回该模型占用的内存大小

示例

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

关闭机器。

参数

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

示例

RITM_API.poweroff(ritm)
readFile(ritm, filename::String; path="/home/ritm/")::String

返回 RITM 机器上指定文件的内容。

参数

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

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

  • path::String :RITM机器上目录的路径。该参数通过

以命名参数(path="..." )的形式传递。默认值为"/home/ritm/" 。

示例

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

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

重启机器。

参数

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

示例

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

删除RITM目标平台上指定路径下的文件。返回包含文件删除状态的消息。

参数

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

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

示例

# 删除 RITM 上的文件newmodel_1 :
RITM_API.removeFile(ritm, "/home/ritm/newmodel_1.engee")
removeMachine(name::AbstractString)::Nothing

从机器存储库中删除 RITM 机器卡片。

如果存储库在并行操作中被修改,则会引发RitmMachinesStorageConflict 异常:请重新读取 机器列表并重新调用该方法。

删除成功时,日志中会记录一条确认消息。

参数

  • name::AbstractString :机器名称。

示例

RITM_API.removeMachine("RITM 2")
resetPtpSettings(ritm)::Dict{String, Union{String, Int64, Bool, Nothing}}

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

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

参数

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

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

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

在独立模式下返回nothing 。在交互模式下返回用于传输 状态 模型运行状态的通道。

参数

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

  • model::Any :模型结构。

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

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

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

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

示例

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

将模型添加到自动启动列表中。

参数

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

  • model_name::String :模型名称。

示例

RITM_API.setAutostart(ritm, "my_model")

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。返回包含操作结果的字典:状态和错误消息(如有)。

参数

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

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

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

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

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

  • priority1 :本地时钟属性"Priority 1" 。有效范围为0 至255 。默认值为128 。

  • priority2 :本地时钟属性"Priority 2" 。有效范围为0 至255 。默认值为128 。

  • clock_class :本地时钟属性"Class" 。有效范围为0 至255 。默认值为248 。

  • clock_accuracy :本地时钟属性"Accuracy" 。有效范围为0 至255 。默认值为254 。

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" 。

示例

RITM_API.startPtp(ritm, 1)
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" 。

示例

RITM_API.stopPtp(ritm, 1)

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 :将更新进度信息写入日志。默认值为false

示例

RITM_API.updateFirmware(ritm; show_progress=true)
RITM_API.updateFirmware(ritm, "/user/firmware.raucb", "/user/firmware.raucb.checksum")
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)
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_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/")
version(ritm)::Dict{String, String}

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

  • "firmware" — 固件版本。

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

参数

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

示例

RITM_API.version(ritm)