用于Connext DDS的RTI连接器

rticonnextdds-connector的Python项目详细描述


本文研究的对象是:python
>
>
(返回
`rticconnextdds connector<;https://github.com/articommunity/rticconnextdds connector>;` ` ` ` ` ` rti connext dds connector<;https://github.com/articommunity/rticconnextdds connector>;

>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~>*RTI连接器*用于Connext DDS是访问"rti connext
dds<;http://www.rti.com/products/index.html>;"的
功能和功能的一种快速简便的方法。它基于
`xml-based application
creation<;https://community.rti.com/static/documentation/connext dds/6.0.0/doc/manuals/connext-dds/xml-application-creation/rti-connextdds-corelibraries-xml-appcreation-gettingstarted.pdf>;`_
和动态数据。

----

**警告**:python*连接器*从v0.4.1开始对序列使用基于0的索引。以前的序列从索引1开始。更多信息,请参见"读取/获取数据"。\_\

语言支持
~对于其他语言(lua、c、
等),请参阅"main connector
repository<;https://github.com/rticommunity/rticonnextdds connector>;` ` ` `.


我们使用cTypes调用本机函数;这些详细信息隐藏在python包装中。rti使用python
2.7.14和python 3.6.3测试了它的python实现。

`_.
如果您需要其他体系结构,请联系您的RTI帐户
经理或sales@rti.com。


bit:centos 6.5 gcc 4.8.2\*对于
linux 32位:ubuntu 16.04 gcc 5.4.0\*对于arm:yocto linux 2.0.3 gcc
5.2.0


connext版本
~对于
示例:

…代码::bash

strings librtidsconnector.dylib grep build


目前,保护对
*连接器*的呼叫的责任由您来承担。(将来,线程安全可能会添加到
本机层中。)在python中,如果使用不同的线程,则必须保护对
*connector*的调用。例如,请参见下面的
"保护对连接器的调用
library<;https://github.com/rticomunity/rticonnextdds connector py";保护对连接器库的调用
支持
~~~~~

*连接器*是一个实验性的rti产品。如果您有问题,请使用
rti community
论坛<;https://community.rti.com/forums/technical questions>;` ` ` ` ` ` `<>

开始使用python
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

确保您有python。然后使用pip安装*连接器*:

…代码::bash

$pip安装rticonnextdds_连接器


您还可以克隆存储库:

…代码::bash

$git clone--recursive https://github.com/rticomunity/rticonnextdds connector py.git

如果使用pip安装,您需要从存储库中克隆上述示例。

-**simple**:演示如何编写示例以及如何读取/获取示例。
-**mixed**:包含各种示例。

保护对*连接器的调用*库
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

如上所述,您负责保护对
*连接器*的调用。有很多选择python中的离子;一种是使用
"线程"包:

…代码::py



import threading
sem=threading.semaphore();




释放信号量
sem.release();





有关线程python包的更多信息,请参阅"python
文档<;https://docs.python.org/2/library/threading.html>;`_.

API概述
~~~~~~~~~~~~~~

需要*连接器*库
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
要使用"rticonnextdds-u连接器",请导入它:

代码::py

import rticonnextdds_connector as rti

code::py

connector=rti.connector("myparticipantlibrary::zero","/shapeexample.xml");


有关XML格式的详细信息,请参阅"基于XML的应用程序创建指南<;https://community.rti.com/static/documentation/connext dds/6.0.0/doc/manuals/connext dds/xml_application_creation/rti_connextdds_corelibraries_xml_appcreation_gettingstarted.pdf>;``uuuuxample.xml<;examples/python/shapeexample.xml>;`_
此示例目录中包含的文件。

代码::py

connector=rti.connector("myparticipantlibrary::zero","/shapeexample.xml");



connector.delete();

代码::py

output=connector.getoutput("mypublisher::mysquarewriter")


,然后设置实例的字段:

。代码::py

output.instance.setNumber("x",1);
output.instance.setNumber("y",2);
output.instance.setNumber("shapeSize",30);
output.instance.setString("color","blue");

代码::py

output.write();

代码::py

假设示例是一个字典,其中包含一个与输出类型相同的对象。实例:


output.instance.setDictionary(示例);

-**逐字段**:

代码::py

output.instance.setNumber("y",2);


以下API逐字段设置实例:
``setNumber(fieldname,number);````setBoolean(fieldname,boolean);``
和``set string(fieldname,string);``.

可以使用点符号"x.y.z"来访问嵌套字段。数组
或序列可以使用方括号来访问:``"x.y[1].z``。有关如何访问字段的详细信息,请参阅"rti prototyper入门指南"的"数据访问api"部分。https://community.rti.com/static/documentation/connext dds/6.0.0/doc/manuals/connext-dds/prototyper/rti-connextdds-corelibraries-prototyper-gettingstarted.pdf>;` ` ` `.

read/take data
^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^

要读取/获取示例,请首先获取输入端口的引用:


代码::py

input=connector.getinput("mySubscriber::mySquareReader");

代码::py

input.read();

代码::pu

input.take();

瓮多个样本。因此,必须对数组进行
迭代:

…代码::py

input.take();
numofsamples=input.samples.getlength();
对于范围(0,numofsamples)中的j:
如果input.infos.isvalid(j):
x=input.samples.getNumber(j,"x");
y=input.samples.getNumber(j,"y");
size=input.samples.getNumber(j,"shapeSize");
color=input.samples.getString(j,"color");
toprint="已接收x:"+repr(x)+"y:"+repr(y)+"size:"+repr(size)+"color:"+repr(color);
打印(toprint);
}

它们存储在一个数组中。每次尝试访问特定示例时,
必须指定索引(下面的示例中为j)。


您可以通过在dictionary对象中获取副本来访问数据,或者
可以单独访问每个字段:

-**使用dictionary**:

。代码::py

numofsamples=input.samples.getlength();
对于范围(0,numofsamples)中的j:
如果input.infos.isvalid(j):
sample=input.samples.getdictionary(j);
打印整个示例单个元素
打印(示例['x']);
}

-**逐字段**:

…代码::py

对于范围(0,numofsamples)中的j:
如果input.infos.isvalid(j):
x=input.samples.getNumber(j,"x");
y=input.samples.getNumber(j,"y");
size=input.samples.getNumber(j,"shapeSize");
color=input.samples.getString(j,"color");
toprint="已接收x:"+repr(x)+"y:"+repr(y)+"size:"+repr(size)+"color:"+repr(color);
打印(toprint);
}

``.

许可证
~
"examples"子目录中的文件按文件中的标记获得许可。

此软件是一个实验性("预生产")产品。
软件按"原样"提供,不提供任何类型的担保,包括任何用途的适用性担保。rti没有义务维护或支持软件。对于因使用或无法使用本软件而引起的任何附带或间接损害,RTI概不负责。


(返回
`RTIConnextDDS connector<;https://github.com/rticomunity/rticonnextDDS connector>;``uu)



欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在JScrollPane标题中禁用鼠标滚轮滚动?   java如何为篮球计分器应用程序存储包括球队名称在内的比赛分数?   java如何使用ADT接口实例化列表   JavaCV抓取帧方法延迟并返回旧帧   java在上传文件时处理网络问题   java如何创建2d阵列的克隆?   关于XMLGregorianCalendar的java信息   java XmlUnit在比较XML文件时忽略元素的顺序   java如何最好地检测无意义的文本?   克隆如何制作java扫描仪的副本?   验证Java中空值的BigDecimal数据类型   java字符串数组中的字数   java JavaFX:如何选择平铺并添加数字和边框线?   java更改jtable中从jar文件获取的特定行的颜色   正则表达式Java字符串。拆分:将\\W用作非单词分隔符时出现问题   当内存损坏时,Java中的同一引用/实例变量会发生什么变化?   java无法在Javadoc注释中链接到JDK10