问题描述
我正在使用 ADLINK 的 OpenSplice 及其 Python API。我似乎找不到好的文档或类参考。我想设置一种非阻塞方式来接收多条消息。他们的 Listener 似乎提供了这个,但不清楚如何在 python 中设置它。
他们的 DDS 教程给出了一个 C 示例:
class TempSensorListener :
public dds::sub::NoOpDataReaderListener<tutorial::TempSensorType>
{
public:
virtual void on_data_available(dds::sub::DataReader<tutorial::TempSensorType>& dr)
{
...
});
}
};
TempSensorListener listener;
dr.listener(&listener,dds::core::status::StatusMask::data_available());
这似乎表明数据接收器有一个“侦听器”方法,用于将侦听器分配给数据读取器。
这是如何使用 Python API 完成的?我似乎无法从 python 数据接收器中找到侦听器方法。
提供的 Python 示例(example1.py 和 example2.py)提供
# Data available listener
class DataAvailableListener(Listener):
def __init__(self):
Listener.__init__(self)
def on_data_available(self,entity):
print('on_data_available called')
l = entity.read(10)
for (sd,si) in l:
sd.print_vars()
但是我没有看到该类的实例化。该示例似乎使用 Waitset 而根本不使用侦听器
我期望的是:
listener = DataAvailableListener()
reader.listener(listener)
reader 确实有一个叫做 listener 的属性。我将对象分配给该属性,但它似乎没有任何效果。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)