作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试调制解调器之间的互操作性。我的一个调制解调器确实支持 JANUS,我相信基于 UnetStack 的 Subnero 调制解调器 Phy[3]
也支持JANUS。我如何发送和记录 JANUS 信号,我可以将其用于其他调制解调器的初步测试?有人可以提供基本的片段吗?
最佳答案
UnetStack 确实有一个 JANUS 的实现,默认情况下,配置在 phy[3]
上。
您可以在调制解调器上进行检查(此处的示例输出来自 unet audio
SDOAM,因此您的调制解调器参数可能会有所不同):
> phy[3]
« PHY »
[org.arl.unet.phy.PhysicalChannelParam]
fec = 7
fecList ⤇ [LDPC1, LDPC2, LDPC3, LDPC4, LDPC5, LDPC6, ICONV2]
frameDuration ⤇ 1.1
frameLength = 8
janus = true
[org.arl.yoda.FhbfskParam]
chiplen = 1
fmin = 9520.0
fstep = 160.0
hops = 13
scrambler = 0
sync = true
tukey = true
[org.arl.yoda.ModemChannelParam]
modulation = fhbfsk
preamble = (2400 samples)
threshold = 0.0
(为了保持输出简洁,我删除了一些与此处讨论无关的参数)
modulation = fhbfsk
和 janus = true
为 JANUS 设置调制fmin = 9520.0
, fstep = 160.0
和 hops = 13
是 JANUS fhbfsk
的调制参数
fec = 7
根据 JANUS ICONV2
中选择
fecList
threshold = 0.0
表示禁止接收 JANUS 帧 fmin
)。请注意,此频率对于与任何其他可能在更高频段支持 JANUS 的调制解调器进行互操作很重要。
phy[3].threshold = 0.3
为了避免来自 CONTROL 和 DATA 数据包的任何其他检测,我们可能希望禁用这些:
phy[1].threshold = 0
phy[2].threshold = 0
此时,您可以通过键入
phy << new TxJanusFrameReq()
进行传输,并在调制解调器旁边放置一个水听器,将传输的信号记录为 wav 文件。
phy.loopback = true # enable loopback
phy.fullduplex = true # enable full duplex so we can record while transmitting
phy[3].basebandRx = true # enable capture of received baseband signal
subscribe phy # show notifications from phy on shell
现在,如果您进行传输,您应该会看到带有捕获信号的
RxBasebandSignalNtf
:
> phy << new TxJanusFrameReq()
AGREE
phy >> RxFrameStartNtf:INFORM[type:#3 rxTime:492455709 rxDuration:1100000 detector:0.96]
phy >> TxFrameNtf:INFORM[type:#3 txTime:492456016]
phy >> RxJanusFrameNtf:INFORM[type:#3 classUserID:0 appType:0 appData:0 mobility:false canForward:true txRxFlag:true rxTime:492455708 rssi:-44.2 cfo:0.0]
phy >> RxBasebandSignalNtf:INFORM[adc:1 rxTime:492455708 rssi:-44.2 preamble:3 fc:12000.0 fs:12000.0 (13200 baseband samples)]
该通知以基带复合格式显示您的信号。您可以将其保存到文件中:
save 'x.txt', ntf.signal, 2
要转换为 wav 文件,您需要加载此信号并转换为通带。下面是一些用于执行此操作的示例 Python 代码:
import numpy as np
import scipy.io.wavfile as wav
import arlpy.signal as asig
x = np.genfromtxt('x.txt', delimiter=',')
x = x[:,0] + 1j * x[:,1]
x = asig.bb2pb(x, 12000, 12000, 96000)
wav.write('x.wav', 96000, x)
注意:您需要用调制解调器
fd
中的
fc
和
12000
字段分别替换
fs
的
fc
和
RxBasebandSignalNtf
。对于 Unet 音频,两者都是 12000,但对于 Subnero M25 系列调制解调器,它可能是 24000。
import arlpy.plot as plt
plt.specgram(x, fs=96000)
关于unetstack - 我如何将 JANUS 信号记录为 wav 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65027940/
我是一名优秀的程序员,十分优秀!