如何不通过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
相关产品推荐
相关产品推荐

