传输信号然后立即切换到 RX 模式并记录反射的最有效方法是什么?
1 回答
您可以使用TxBasebandSignalReq
消息传输信号,等待TxFrameNtf
表示信号已成功传输,然后使用 请求录音RecordBasebandSignalReq
。为了避免传输和录制之间的间隙,您可以使用 的txTime
属性TxFrameNtf
来触发录制(recTime
属性)。大多数使用 UnetStack 的调制解调器将允许在过去开始记录,只要数据在缓冲区中(通常是几秒钟)。
上面的想法在下面的 Groovy 代码片段中表达出来(没有任何错误检查):
import org.arl.unet.*
import org.arl.unet.phy.*
def bb = agentForService(Services.BASEBAND)
bb << new TxBasebandSignalReq(signal: mySignal)
def ntf = receive(TxFrameNtf)
bb << new RecordBasebandSignalReq(recTime: ntf.txTime, recLen: nSamples)
这mySignal
是您要发送的信号(复杂基带表示),nSamples
是您要记录的基带样本数。
(你可以用几乎相同的方式使用 Python 做同样的事情)
记录将在传输开始时开始,并将包含传输的信号(很可能被削波),然后是任何回声/返回。如果您想在传输结束时开始录制,您可以通过设置信号长度(以微秒为单位)来实现recTime
。ntf.txTime + mySignalDuration
mySignalDuration
还要记住,传输和记录的信号是信号的复杂基带表示,其载波频率为bb.carrierFrequency
,采样率为bb.basebandRate
。这种表示比通带表示更紧凑。但是,如果您想在传输中使用通带表示,您可以fc: 0
在部分)。如果您使用的是 Python,使用类似.TxBasebandSignalReq
4*bb.basebandRate
arlpy.signal.bb2pb()