国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Fast DDS入門四、Fast DDS-Gen使用介紹

這篇具有很好參考價值的文章主要介紹了Fast DDS入門四、Fast DDS-Gen使用介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、Fast DDS-Gen介紹

Fast DDS-Gen是一個Java應(yīng)用程序,它使用IDL(接口定義語言)文件中定義的數(shù)據(jù)類型生成Fast DDS源代碼。生成的源代碼可以用于任何Fast DDS應(yīng)用程序中,以定義主題的數(shù)據(jù)類型,并且將用于發(fā)布或訂閱。Fast DDS通過兩個類定義Topic中交換的數(shù)據(jù)類型:TypeSupport和TopicDataType。TopicDataType描述發(fā)布和訂閱之間交換的數(shù)據(jù)類型,即與Topic對應(yīng)的數(shù)據(jù);而TypeSupport是封裝TopicDataType的一個實例,提供注冊該類型以及發(fā)布和訂閱交互所需的功能。

要聲明結(jié)構(gòu)化數(shù)據(jù),必須使用IDL格式。IDL是一種規(guī)范語言,由OMG(對象管理組)制定,它以獨立于語言的方式描述接口,允許不同開發(fā)語言的軟件組件之間進行通信。Fast DDS Gen工具讀取IDL文件并解析OMG IDL規(guī)范的子集,以生成數(shù)據(jù)序列化的源代碼。此子集包括通過IDL定義數(shù)據(jù)類型中包含的數(shù)據(jù)類型描述。

Fast DDS Gen生成的源代碼使用Fast CDR,這是一個C++11庫,提供數(shù)據(jù)序列化和編碼機制。因此,如RTPS標準中所述,當發(fā)送數(shù)據(jù)時,使用相應(yīng)的公共數(shù)據(jù)表示(CDR)對數(shù)據(jù)進行序列化和編碼。CDR傳輸語法是代理間傳輸?shù)牡图壉硎?,從IDL數(shù)據(jù)類型映射到字節(jié)流。

Fast DDS Gen的主要功能是在不了解序列化或反序列化機制的情況下促進DDS應(yīng)用程序的實現(xiàn)。使用Fast DDS Gen,還可以與使用Fast DDS庫的發(fā)布者和訂閱者一起生成DDS應(yīng)用程序的源代碼。

有關(guān)安裝Fast DDS Gen,請參閱《Fast DDS入門二、Fast DDS在Windows平臺的編譯安裝》或《Fast DDS入門三、Fast DDS在Linux平臺的編譯安裝》。

2、Fast DDS-Gen用法

本節(jié)介紹Fast DDS Gen工具的用法,并簡要介紹生成的文件。

首先,安裝Fast DDS-Gen必須完成Fast DDS Gen Linux安裝或Fast DDS Gen Windows安裝中概述的步驟。根據(jù)以上安裝,腳本文件夾中提供了運行Java Fast DDS Gen應(yīng)用程序的Linux和Windows可執(zhí)行文件。如果將腳本文件夾路徑添加到path環(huán)境變量,則可以運行以下命令執(zhí)行Fast DDS Gen:

  • Linux:

  • $ fastrtpsgen

  • Windows:

> fastrtpsgen.bat

注意:如果尚未修改PATH,可以在<fastrtpsgen_directory>/scripts目錄中找到這些腳本。

應(yīng)用程序的預期參數(shù)列表為:

fastrtpsgen [<options>] <IDL file> [<IDL file> ...]

選項包括:

選項

描述

-help

查看幫助

-version

參看Fast DDS-Gen版本

-d <directory>

設(shè)置生成文件的導出目錄

-I <directory>

將目錄添加到預處理包含的路徑。

-t <directory>

設(shè)置臨時目錄

-example <platform>

生成示例和解決方案,以編譯特定平臺的生成源代碼。help命令顯示支持的平臺。

-replace

生成的源代碼文件并替換已存在的文件。

-ppDisable

禁用預處理器

-ppPath

設(shè)定預處理路徑

-typeobject

為提供的IDL生成TypeObject文件,并修改MyType構(gòu)造函數(shù)以將TypeObject表示注冊到工廠中。

3、Fast DDS-Gen生成發(fā)布-訂閱示例

Fast DDS Gen可用于從IDL文件構(gòu)建功能齊全的發(fā)布/訂閱應(yīng)用程序。生成的應(yīng)用程序允許創(chuàng)建任意數(shù)量的發(fā)布者和訂閱者,它們都屬于同一域,并使用同一主題進行通信。

(1)使用數(shù)據(jù)類型創(chuàng)建IDL文件

要構(gòu)建最小的應(yīng)用程序,必須通過IDL文件定義Topic。在本例中,IDL定義的Topic數(shù)據(jù)類型只是一個字符串消息。在文本編輯器中,創(chuàng)建具有以下內(nèi)容的HelloWorld.idl文件,并將其保存在FastDDSGenHelloWorld目錄中。

// HelloWorld.idl

struct HelloWorld

{

string message;

};文章來源地址http://www.zghlxwxcb.cn/news/detail-614762.html

然后,將此文件轉(zhuǎn)換為Fast DDS能夠理解的內(nèi)容。

(2)生成Fast DDS源代碼

應(yīng)用程序文件是使用以下命令生成的。-example選項創(chuàng)建一個示例應(yīng)用程序,以及構(gòu)建該應(yīng)用程序所需的CMake文件。在工作區(qū)目錄(FastDDSGenHelloWorld目錄)中,根據(jù)所遵循的安裝和操作系統(tǒng)執(zhí)行以下命令之一。

  • On Linux:

  1. For an installation frombinaries or a colcon installation:

  • <path-to-Fast-DDS-workspace>/src/fastddsgen/scripts/fastddsgen -example CMake HelloWorld.idl

  1. For a stand-alone installation,run:

  • <path-to-Fast-DDS-Gen>/scripts/fastddsgen -example CMake HelloWorld.idl

  • On Windows:

  1. For a colcon installation:

  • <path-to-Fast-DDS-workspace>/src/fastddsgen/scripts/fastddsgen.bat -example CMake HelloWorld.idl

  1. For a stand-alone installation,run:

  • <path-to-Fast-DDS-Gen>/scripts/fastddsgen.bat -example CMake HelloWorld.idl

  1. For an installation frombinaries, run:

fastddsgen.bat -example CMake HelloWorld.idl

在項目生成結(jié)束后,應(yīng)用程序工作區(qū)將具有以下結(jié)構(gòu):

.

└── workspace_DDSHelloWorld

├── build

│ ├── CMakeCache.txt

│ ├── CMakeFiles

│ ├── cmake_install.cmake

│ ├── HelloWorld

│ ├── libHelloWorld_lib.a

│ └── Makefile

├── CMakeLists.txt

├── HelloWorld.cxx

├── HelloWorld.h

├── HelloWorld.idl

├── HelloWorldPublisher.cxx

├── HelloWorldPublisher.h

├── HelloWorldPubSubMain.cxx

├── HelloWorldPubSubTypes.cxx

├── HelloWorldPubSubTypes.h

├── HelloWorldSubscriber.cxx

└── HelloWorldSubscriber.h

(3)構(gòu)建Fast DDS應(yīng)用程序

然后,從FastDDSGenHelloWorld目錄編譯執(zhí)行以下命令的生成代碼。

  • On Linux:

cd build

cmake ..

make

  • On Windows:

cd build

cmake -G "Visual Studio 15 2017 Win64" ..

cmake --build .

注意:CMake命令行直接生成FastDDS可執(zhí)行應(yīng)用程序會報錯,因為需要先配置好應(yīng)用程序的相關(guān)依賴,因此啟動CMake-GUI界面程序,配置依賴完成后,再命令行生成二進制程序,或者通過vs開發(fā)工具生成都可以。以下是CMake界面的配置參考:

Fast DDS入門四、Fast DDS-Gen使用介紹,Fast DDS入門,網(wǎng)絡(luò)協(xié)議,Powered by 金山文檔

(4)運行Fast DDS-Gen生成的實力程序

  • On Linux:

./HelloWorld publisher

./HelloWorld subscriber

  • On Windows:

HelloWorld.exe publisher

HelloWorld.exe subscriber

每次在發(fā)布服務(wù)器上按下<Enter>時,都會生成一個新的數(shù)據(jù)報,由當前在線的訂閱服務(wù)器通過網(wǎng)絡(luò)和接收器接收。如果有一個以上的訂戶可用,則可以看到消息在所有偵聽節(jié)點上被同等地接收。

注意:

網(wǎng)絡(luò)通信中,為防止防火墻過濾處理,可能需要在防火墻中設(shè)置一個特殊規(guī)則,以便FastDDS在Windows上正常工作。

4、通過IDL定義數(shù)據(jù)類型(常用數(shù)據(jù)類型)

(1)基本數(shù)據(jù)類型

下表顯示了Fast DDS Gen支持的基本IDL類型以及它們?nèi)绾斡成涞紺++11。

IDL類型

C++11類型

char

char

octet

uint8_t

short

int16_t

unsigned short

uint16_t

long

int32_t

unsigned long

uint32_t

long long

int64_t

unsigned long long

uint64_t

float

float

double

double

long double

long double

boolean

bool

string

std::string

(2)數(shù)組

Fast DDS Gen支持一維和多維陣列。數(shù)組始終映射到std::array容器。下表顯示了支持的數(shù)組類型及其映射。

IDL

C++11

char a[5]

std::array<char,5> a

octet a[5]

std::array<uint8_t,5> a

short a[5]

std::array<int16_t,5> a

unsigned short a[5]

std::array<uint16_t,5> a

long a[5]

std::array<int32_t,5> a

unsigned long a[5]

std::array<uint32_t,5> a

long long a[5]

std::array<int64_t,5> a

unsigned long long a[5]

std::array<uint64_t,5> a

float a[5]

std::array<float,5> a

double a[5]

std::array<double,5> a

(3)序列

Fast DDS Gen支持映射到std::vector容器的序列。下表表示如何處理IDL和C++11之間的映射。

IDL

C++11

sequence<char>

std::vector<char>

sequence<octet>

std::vector<uint8_t>

sequence<short>

std::vector<int16_t>

sequence<unsigned short>

std::vector<uint16_t>

sequence<long>

std::vector<int32_t>

sequence<unsigned long>

std::vector<uint32_t>

sequence<long long>

std::vector<int64_t>

sequence<unsigned long long>

std::vector<uint64_t>

sequence<float>

std::vector<float>

sequence<double>

std::vector<double>

(4)maps

Fast DDS Gen支持與std::map容器等效的map。類型之間的等價性的處理方式與序列相同。

IDL

C++11

map<char, unsigned long long>

std::map<char, uint64_T>

(5)結(jié)構(gòu)體

可以使用一組具有多種類型的成員定義IDL結(jié)構(gòu)。它將被轉(zhuǎn)換為C++類,其中通過IDL定義的結(jié)構(gòu)的成員映射到該類的私有數(shù)據(jù)成員。此外,還創(chuàng)建了set()和get()成員函數(shù)來訪問這些私有數(shù)據(jù)成員。

以下IDL結(jié)構(gòu)體:

struct Structure

{

octet octet_value;

long long_value;

string string_value;

};

將轉(zhuǎn)換為:

class Structure

{

public:

Structure();

~Structure();

Structure(constStructure&x);

Structure(Structure&&x);

Structure& operator=(constStructure&x);

Structure& operator=(Structure &&x);

void octet_value(uint8_t_octet_value);

uint8_t octet_value() const;

uint8_t& octet_value();

void long_value(int64_t_long_value);

int64_t long_value() const;

int64_t& long_value();

void string_value(conststd::string

&_string_value);

void string_value(std::string &&_string_value);

conststd::string&string_value()const;

std::string&string_value();

private:

uint8_tm_octet_value;

int64_tm_long_value;

std::stringm_string_value;

};

到了這里,關(guān)于Fast DDS入門四、Fast DDS-Gen使用介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 通過IoT-Fast使用IEC 104電力規(guī)約協(xié)議快速實現(xiàn)采集、上云、組態(tài)場景搭建

    通過IoT-Fast使用IEC 104電力規(guī)約協(xié)議快速實現(xiàn)采集、上云、組態(tài)場景搭建

    本文分享一篇通過IoT-Fast軟件完成IEC 104規(guī)約設(shè)備的數(shù)據(jù)采集案例。文章主要共分為五個部分: 前期準備 IEC 104規(guī)約設(shè)備網(wǎng)絡(luò)通信部署,獲取采集點位。 IoT-Fast -采集控制系統(tǒng) 對底層設(shè)備進行數(shù)據(jù)讀取、寫入的配置界面,還可以進行數(shù)據(jù)處理。 IoT-Fast -云平臺 將采集控制系統(tǒng)收

    2024年01月18日
    瀏覽(27)
  • SECS/GEN HSMS半導體通信協(xié)議解析

    SECS/GEN HSMS半導體通信協(xié)議解析

    目錄 一、協(xié)議族總體結(jié)構(gòu) 二、HSMS消息格式(網(wǎng)口連接) 1、超時時間設(shè)置 2、在線,離線,連接,未連接 3、Message Header結(jié)構(gòu) 三、SECS-II報文格式 相關(guān)手冊及通信助手資源獲取地址:SECS手冊及模擬器 提取碼:ahnj 下面是一些SECS/Gen的重要知識歸納(建議查詢資料學習SECS后收藏

    2024年02月06日
    瀏覽(35)
  • SOA協(xié)議DDS和Some/IP對比

    SOA協(xié)議DDS和Some/IP對比

    SOME/IP 和 DDS 均已被納入AUTOSAR AP的平臺標準中。 SOME/IP的全稱為:Scalable service-Oriented MiddlewarE over IP,是一種面向服務(wù)的傳輸協(xié)議。 嚴格地說,SOME/IP不是一款特定的產(chǎn)品,而是一種技術(shù)標準。 其最早由寶馬在2012-2013年開發(fā),并在2014年集成進AUTOSAR 4.2.1中。 當前,全球最大的商

    2024年02月06日
    瀏覽(24)
  • 【軟件定義汽車】SOA協(xié)議DDS和Some/IP對比

    【軟件定義汽車】SOA協(xié)議DDS和Some/IP對比

    SOME/IP 和 DDS 均已被納入AUTOSAR AP的平臺標準中。 SOME/IP 和 DDS是在不同的應(yīng)用場景和不同的需求下誕生的技術(shù),所以它們之間注定有很大的區(qū)別。 SOME/IP的全稱為:Scalable service-Oriented MiddlewarE over IP,是一種面向服務(wù)的傳輸協(xié)議。 嚴格地說,SOME/IP不是一款特定的產(chǎn)品,而是一種

    2024年02月07日
    瀏覽(28)
  • FAST協(xié)議解析3 FIX Fast Tutorial翻譯 HelloWorld示例

    FAST協(xié)議解析3 FIX Fast Tutorial翻譯 HelloWorld示例

    Fields in FAST do not have a fixed size and do not use a field separator. Instead, there is a notion of a stop bit (the high order bit on each byte of the message acts as a stop bit) signaling the end of the field. All of the above concepts used together allow the sender to compress a message (sometimes as much as 90%) and the receiver to restore the origina

    2024年02月03日
    瀏覽(20)
  • 常見的無線網(wǎng)絡(luò)協(xié)議介紹 全面認識無線網(wǎng)絡(luò)協(xié)議的作用

    雖然大家對于網(wǎng)絡(luò)方面已經(jīng)很熟悉了,但是大家對于無線網(wǎng)絡(luò)協(xié)議又了解多少,知道無線網(wǎng)絡(luò)協(xié)議都有哪些,他們的各自的作用是什么嗎?本文小編就帶著我們進行了解網(wǎng)絡(luò)協(xié)議的特性,希望對大家在網(wǎng)絡(luò)知識方面有所幫助。 802.11b協(xié)議 說明:802.11b協(xié)議是由IEEE(電氣電子工

    2024年02月05日
    瀏覽(22)
  • 【網(wǎng)絡(luò)】傳輸層協(xié)議介紹

    【網(wǎng)絡(luò)】傳輸層協(xié)議介紹

    ??TCP (Transmission Control Protocol )傳輸控制協(xié)議: 面向連接網(wǎng)絡(luò)協(xié)議 ,是指通信雙方之間在進行通信之前要先建立連接。比如打電話,雙方通話前需要先建立連接。 ??TCP是面向連接的、可靠的進程到進程通信的協(xié)議。TCP提供全雙工服務(wù),即數(shù)據(jù)可在同一時間雙向傳輸,每一

    2024年02月06日
    瀏覽(26)
  • 網(wǎng)絡(luò)協(xié)議棧介紹

    一、協(xié)議棧簡介 網(wǎng)絡(luò)協(xié)議棧是一個網(wǎng)絡(luò)通信系統(tǒng)的核心組成部分,它由多個網(wǎng)絡(luò)協(xié)議層組成,每一層負責不同的功能。常見的網(wǎng)絡(luò)協(xié)議棧包括TCP/IP協(xié)議棧、OSI模型等。 TCP/IP協(xié)議棧是當前互聯(lián)網(wǎng)上最常用的協(xié)議棧。它由四層組成,從低至高分別是物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層

    2024年02月03日
    瀏覽(21)
  • 雙卡雙待手機DDS切換功能介紹

    雙卡雙待手機DDS切換功能介紹

    雙卡雙待手機有DSDS(Dual?Sim Dual Standby)和DSDA(Dual SIM dual active)方案,早期產(chǎn)品使用DSDA?方案比較多,隨著多模、多頻段、CA、MIMO等技術(shù)出現(xiàn),硬件射頻復雜度大大增加,再加上雙卡雙通的實際使用場景并不多,DSDS就成為了目前市場的主流方案。 DSDS只有一張卡能夠占有P

    2024年02月09日
    瀏覽(65)
  • 使用mid360從0開始搭建實物機器人入門級導航系統(tǒng),基于Fast_Lio,Move_Base

    使用mid360從0開始搭建實物機器人入門級導航系統(tǒng),基于Fast_Lio,Move_Base

    本文原本只是自己在拿到mid360后,開始進行開發(fā)過程的一些問題和學習的記錄。畢竟實物和仿真還是有很多不同,且由于碰到的問題也比較多,READEME也越來越詳細,所以就干脆整合起來,做成了一篇使用mid360的搭建入門的導航系統(tǒng)全流程分享。里面用到的都是主流的開源的框

    2024年02月05日
    瀏覽(93)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包