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

如何通过UHD Python API分别控制两台B205 mini USRP设备

用UHD Python API控制多台B205 mini USRP设备

完全可以通过uhd.usrp.MultiUSRP()结合序列号指定设备地址来实现多台USRP的单独寻址,具体操作如下:

核心实现逻辑

UHD的设备地址支持通过serial关键字精准定位设备,多个设备的地址用逗号分隔传入MultiUSRP后,就能同时管理多台设备,再通过设备索引或直接指定序列号来单独配置每台设备的参数。

具体步骤与代码示例

1. 构造多设备地址字符串

假设两台B205的序列号分别是SN12345和SN67890,按以下格式拼接地址:

device_addrs = "serial=SN12345,serial=SN67890"

2. 初始化MultiUSRP对象

import uhd

usrps = uhd.usrp.MultiUSRP(device_addrs)

3. 单独配置单台设备

可以通过设备索引(从0开始,对应地址字符串里的设备顺序)或直接指定device_addr参数操作目标设备:

  • 给第一台设备设置接收频率:
    # 通过索引指定(0对应第一个地址的设备)
    usrps.set_rx_freq(uhd.libpyuhd.types.tune_request(2.4e9), 0)
    # 或者直接指定序列号
    usrps.set_rx_freq(uhd.libpyuhd.types.tune_request(2.4e9), "serial=SN12345")
    
  • 给第二台设备设置接收增益:
    usrps.set_rx_gain(30, 1)  # 索引1对应第二个地址的设备
    

4. 多设备同时收发示例

以同时接收两台设备数据为例:

# 配置流参数
stream_args = uhd.usrp.StreamArgs("fc32", "sc16")
rx_streamer = usrps.get_rx_stream(stream_args)

# 启动接收
rx_streamer.issue_cmd(uhd.usrp.StreamCMD.stream_start())

# 接收采样数据
num_samps = 1024
recv_buff = rx_streamer.recv(num_samps, 1.0)
# recv_buff形状为[通道数, 采样点数],两台单通道B205对应(2, 1024)

注意事项

  • B205 mini是单收发通道设备,每台设备对应一个通道/主板,索引顺序和地址字符串中的设备顺序一致。
  • 所有支持多设备的UHD API方法(如set_tx_freq、set_tx_gain等),都支持通过索引或设备地址字符串指定目标设备。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:10:58