frontend_tuner_status 在 Python FEI 中不起作用

frontend_tuner_status doesn't work in Python FEI

我在 Centos 6.5 中使用 Redhawk IDE 2.0.1。

如果我生成基于​​ Python 的 FEI,安装、运行、分配,然后尝试通过 IDE 中的属性选项卡更改 center_frequency 我得到错误:

无法更新设备属性:中心频率 执行可调用时出错。由 org.omg.CORBA.NO_IMPLEMENT 引起:服务器端异常:空 vmcid:0x41540000 次要代码:99 已完成:否 服务器端异常:null

我试过完全不同的系统,但我得到了相同的行为。

如果我对 C++ 项目做同样的事情,它工作正常。在我看来,2.0.1 中自动生成的 Python 代码被破坏了,好像它没有注册监听器?任何想法都会受到赞赏,因为这个应用程序对我来说在 Python 中更容易实施。谢谢

错误 org.omg.CORBA.NO_IMPLEMENT: Server-side Exception 是一个 CORBA 异常,表示 FEI 设备未实现 setTunerCenterFrequency 方法,尽管 FEI 设备具有 DigitalTuner 端口。 DigitalTuner IDL继承自AnalogTuner IDL,后者提供setTunerCenterFrequency方法。 FEI DigitalTuner 端口的实现中一定存在错误。在 ${OSSIEHOME}/lib/python/frontend/input_ports.py 中,InDigitalTunerPort 没有继承自 InAnalogTunerPortsetCenterFrequency 方法所在的位置。将其更改为以下应该可以解决此问题:

class InDigitalTunerPort(FRONTEND__POA.DigitalTuner, InAnalogTunerPort):
    def __init__(self, name, parent=digital_tuner_delegation()):
        InAnalogTunerPort.__init__(self, name, parent)

还有第二个问题。生成的基 class 实例化 DigitalTuner 端口而不传递对其自身(父项)的引用。您的 FEI 设备生成的基数 class 应从以下更改:

self.port_DigitalTuner_in = frontend.InDigitalTunerPort("DigitalTuner_in")

对此:

self.port_DigitalTuner_in = frontend.InDigitalTunerPort("DigitalTuner_in", self)