You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不通过Unetstack UI向Subnero声学Modem上传文件?

使用unetpy API远程向声学Modem上传/传输文件

现状与需求

你目前使用Subnero WNC-M25MSS4声学Modem,基于fjagepy库通过执行Unetstack的fput命令实现跨设备文件传输。现在希望改用Unetstack官方Python API(unetpy)完成操作,无需依赖Unetstack UI。

解决方案

unetpy是Unetstack的官方Python客户端,封装了更简洁的节点交互接口,以下提供两种常用实现方式:


方式1:直接执行fput命令(跨设备文件传输)

这种方式和你之前的逻辑一致,改用unetpy的封装接口后代码更简洁,还支持自动资源管理:

首先确保安装unetpy:

pip install unetpy

替换后的Python脚本:

import sys
from unetpy import Gateway

if len(sys.argv) != 6:
    print("Usage: python3 ac_sender.py <source_ip_address> <port> <destination_address> <timeout(ms)> <filename>")
    sys.exit(1)

ip_address = sys.argv[1]
port = int(sys.argv[2])
node = int(sys.argv[3])
timeout = int(sys.argv[4]) / 1000  # unetpy超时单位为秒,转换毫秒为秒
file_name = sys.argv[5]

# 用上下文管理器自动管理连接,无需手动关闭
with Gateway(ip_address, port) as gw:
    # 获取Shell服务代理
    shell = gw.agentForService('org.arl.fjage.shell.Services.SHELL')
    # 构造并执行fput命令
    cmd = f"fput {node}, '{file_name}'"
    rsp = shell.exec(cmd, timeout=timeout)
    print(rsp)

方式2:上传文件到本地Modem文件系统

如果需要先将文件上传到本地Modem的存储中(后续再发送给远程节点),可以直接调用Unetstack的FileManagerService接口:

import sys
from unetpy import Gateway, MessageClass

if len(sys.argv) != 5:
    print("Usage: python3 upload_to_modem.py <ip_address> <port> <local_file_path> <remote_file_name>")
    sys.exit(1)

ip_address = sys.argv[1]
port = int(sys.argv[2])
local_file = sys.argv[3]
remote_file_name = sys.argv[4]

with Gateway(ip_address, port) as gw:
    # 获取文件管理服务代理
    file_mgr = gw.agentForService('org.arl.unet.services.FileManagerService')
    # 读取本地文件内容
    with open(local_file, 'rb') as f:
        file_content = f.read()
    # 构造上传请求
    put_req = MessageClass('org.arl.unet.services.PutFileReq')(
        filename=remote_file_name,
        data=file_content
    )
    # 发送请求并等待响应
    rsp = gw.request(file_mgr, put_req, timeout=10)  # 设置10秒超时
    if rsp.success:
        print(f"文件 {remote_file_name} 已成功上传到Modem")
    else:
        print(f"上传失败:{rsp.message}")

关键说明

  • unetpy的Gateway支持上下文管理器(with语句),会自动处理连接的建立与关闭,避免资源泄漏。
  • 跨设备传输推荐使用fput命令,它已封装了文件分段、可靠传输、远程节点接收的完整逻辑,无需手动处理底层细节。
  • 若需操作Modem本地文件系统,使用FileManagerService的PutFileReq/GetFileReq等消息更直接。

内容的提问来源于stack exchange,提问作者Guilherme Moreira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:44:57