0

我正在尝试查询我的 USB 加密狗 (NooElec R820T SDR) 以确定它调谐到的频率。我想进行单元测试配置调用,以查看设备是否已正确调整并正常工作。我可以简单地使用:

self.comp.frequency = 1000000 
print self.comp.frequency

设置值并打印出来。但是,我想问的是硬件而不是组件。RH 手册有这样的内容:

# In this example, freqMHz is a defined property.
def onconfigure_prop_freqMHz(self, oldval, newval):
print "On Configure to value " + str(newval) 
self.freqMHz = newval
self.port_labInterface_out.setFrequencyMHz(self.freqMHz)

我认为这一点仍然只需要组件价值,而不是硬件本身。是否可以使用 RH 直接查询设备?

提前致谢。

4

1 回答 1

1

没有看到组件的代码,我只能做假设,但是似乎当你设置组件的中心频率时,它最终会设置硬件的频率,可能是在调用 self.port_labInterface_out.setFrequencyMHz()发生。发生这种情况时,它可能会询问设备它实际设置的频率,并在从 setFrequencyMHz 调用返回之前设置组件的频率以反映这一点。

然而,就像我说的,这些都是假设。使用 librtlsdr 库和 ctypes 模块,您可以调用组件本身最有可能调用的函数,即 rtlsdr_open 获取设备的引用,rtlsdr_set_center_freq 设置中心频率,以及 rtlsdr_get_center_freq 获取中心频率的设备。这种方法最大的问题是:

  1. 您必须创建这些调用使用的 rtlsdr_dev 结构的 python ctypes 版本,以便传递引用
  2. 由于组件已经引用了设备,因此单元测试中的 rtlsdr_open 将失败

您可以通过使用 cunit 或 cppunit 进行单元测试来解决第一个问题,这比问题更麻烦,允许您重用 rtlsdr 库中定义的结构。

第二个问题是 rtlsdr 库和/或 libusb 的限制。这几乎可以肯定意味着您将无法实现直接查询设备的原始目标

于 2014-04-08T13:14:38.317 回答