如何使用 python 连接不同域中的外部端口
How can I connect external ports in different domains using python
我在两个节点上 运行 两个相同的波形,并试图连接两个波形中对等组件之间的一对端口。该手册讨论了外部端口,但没有过多讨论如何连接它们,但似乎我应该在波形中将它们声明为外部端口。我相信我可以使用手册 10.2 中的方法,即使我 运行 在域中而不是在沙箱中。所以我正在尝试使用 python 命令来连接它们。我在 IDE 中启动域和波形,然后尝试使用 python 进行外部连接。这些域被命名为 TxRadio 和 RxRadio。
我正在使用以下命令:
$python
from ossie.utils import redhawk
TxRadio = redhawk.attach("TxRadio")
RxRadio = redhawk.attach("RxRadio")
TxWaveform = TxRadio.apps[0]
RxWaveform = RxRadio.apps[0]
TxWaveform.connect(RxWaveform)
因为我在对等组件上有其他本地提供的端口具有相同的接口,这个连接是不明确的,python 给了我一个匹配的端口列表,所以我
TxWaveform.connect(RxWaveform, providesPortName="TransferIn")
我在 shell 中没有收到 python 的错误,但是我的 IDE 弹出 window 报告错误:
gov/redhawkl/ide.debug.impl.LocalScaWaveformImpl 无法转换为 gov.redhawk.ide.debug.LocalScaComponent
这听起来像是我在尝试连接组件和波形。添加 usesPortName 没有帮助。它是组件上同一接口的唯一使用端口。
我知道它正在尝试使用正确的 providesPortName,因为如果我拼错它,它会报告我的组件没有使用该名称提供的端口。
因为我只指定了波形而不是要连接的组件,所以它会尝试外部端口。所以我尝试指定组件。
RxWaveform.api() 报告我的对等组件是组件 2,所以我尝试
TxWaveform.comps[1].connect(RxWaveform.comps[1], providesPortName="TransferIn")
我得到了同样的错误。
即使我尝试连接同一域中的端口
TxWaveform.comps[1].connect(TxWaveform.comps[1], providesPortName="TransferIn")
也就是把组件上的TransferOut连接到组件上的TransferIn
组件,我得到同样的错误。
好像离得这么近。谁能告诉我我做错了什么或
错误信息是什么意思?
顺便说一句,我正在使用 RedHawk 2.0.0
听起来您采取了正确的步骤,IDE 抛出了一个虚假错误。在这种情况下,我会忽略 IDE 异常并确认连接在 IDE 之外工作。您有 IDE 错误的行号或堆栈跟踪吗?如果我没记错的话,这可能已在最近的一个版本中得到修复。
gov/redhawkl/ide.debug.impl.LocalScaWaveformImpl cannot be cast to gov.redhawk.ide.debug.LocalScaComponent
我在两个节点上 运行 两个相同的波形,并试图连接两个波形中对等组件之间的一对端口。该手册讨论了外部端口,但没有过多讨论如何连接它们,但似乎我应该在波形中将它们声明为外部端口。我相信我可以使用手册 10.2 中的方法,即使我 运行 在域中而不是在沙箱中。所以我正在尝试使用 python 命令来连接它们。我在 IDE 中启动域和波形,然后尝试使用 python 进行外部连接。这些域被命名为 TxRadio 和 RxRadio。
我正在使用以下命令:
$python
from ossie.utils import redhawk
TxRadio = redhawk.attach("TxRadio")
RxRadio = redhawk.attach("RxRadio")
TxWaveform = TxRadio.apps[0]
RxWaveform = RxRadio.apps[0]
TxWaveform.connect(RxWaveform)
因为我在对等组件上有其他本地提供的端口具有相同的接口,这个连接是不明确的,python 给了我一个匹配的端口列表,所以我
TxWaveform.connect(RxWaveform, providesPortName="TransferIn")
我在 shell 中没有收到 python 的错误,但是我的 IDE 弹出 window 报告错误:
gov/redhawkl/ide.debug.impl.LocalScaWaveformImpl 无法转换为 gov.redhawk.ide.debug.LocalScaComponent
这听起来像是我在尝试连接组件和波形。添加 usesPortName 没有帮助。它是组件上同一接口的唯一使用端口。
我知道它正在尝试使用正确的 providesPortName,因为如果我拼错它,它会报告我的组件没有使用该名称提供的端口。
因为我只指定了波形而不是要连接的组件,所以它会尝试外部端口。所以我尝试指定组件。
RxWaveform.api() 报告我的对等组件是组件 2,所以我尝试
TxWaveform.comps[1].connect(RxWaveform.comps[1], providesPortName="TransferIn")
我得到了同样的错误。
即使我尝试连接同一域中的端口
TxWaveform.comps[1].connect(TxWaveform.comps[1], providesPortName="TransferIn")
也就是把组件上的TransferOut连接到组件上的TransferIn 组件,我得到同样的错误。
好像离得这么近。谁能告诉我我做错了什么或 错误信息是什么意思?
顺便说一句,我正在使用 RedHawk 2.0.0
听起来您采取了正确的步骤,IDE 抛出了一个虚假错误。在这种情况下,我会忽略 IDE 异常并确认连接在 IDE 之外工作。您有 IDE 错误的行号或堆栈跟踪吗?如果我没记错的话,这可能已在最近的一个版本中得到修复。
gov/redhawkl/ide.debug.impl.LocalScaWaveformImpl cannot be cast to gov.redhawk.ide.debug.LocalScaComponent