AnyMath 文档

节奏软件控制

使用KPM软件管理功能 «节奏» 在 AnyMath ,按照指定的方式安装硬件支持包 文章. 安装后,导入模块并添加节奏机。:

using Main.EngeeDeviceManager.Targets: RITM_API

if !RITM_API.isMachineExists("RITM 1")
    RITM_API.addMachine("RITM 1", "192.168.56.3")
end

将示例中的名称和IP地址替换为计算机的值,或使用已注册的计算机。

本页包含KPM软件管理的所有可用功能。 «节奏» 在 AnyMath .

方法 RITM_API

对于大多数函数,第一个参数是 名称::字符串 -机器的名称或IP地址存储在 AnyMath (例如 "RITM1", "192.168.56.3"). 汽车必须首先通过添加 RITM_API.[医 或在应用程序中 RITM.管理器 ritm icon. 如果机器已关闭或客户端程序为*Engee。集成*未连接到 AnyMath ,调用将返回错误,并说明原因或异常。

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)
getDiagnostic(ritm)::Nothing

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

参数

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

示例

RITM_API.getDiagnostic(ritm)
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)
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)