Unetstack - Python API - Комбинированный Tx / Rx - PullRequest
0 голосов
/ 24 декабря 2018

Каков наиболее эффективный способ передачи сигнала, а затем немедленного переключения в режим приема и записи отражений?

1 Ответ

0 голосов
/ 24 декабря 2018

Вы можете передать сигнал с помощью сообщения 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 в TxBasebandSignalReq и передать сигнал полосы пропускания, выбранный в 4*bb.basebandRate, но вам нужно преобразовать полученный сигнал в полосу пропускания (умножить на сложную экспоненту и принять вещественную часть).Если вы используете Python, это легко сделать, используя что-то вроде arlpy.signal.bb2pb().

...