色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DDS通信中間件——DCPS規范(上)

北匯信息POLELINK ? 2024-09-26 08:08 ? 次閱讀

DDS通信中間件——DCPS規范(上)

本篇文章繼續和大家分享一下對DDS這套規范的理解。預期本系列文章將包括以下內容陸續更新:

1. DDS規范概述

2.DCPS規范解讀

3. DDS-XTypes與IDL解讀

4. RTPS規范解讀

5. DDS安全規范解讀

6. DDS-RPC規范解讀

7. DDS-TSN規范解讀

8. DDS-XRCE規范解讀

DCPS規范分為上下兩篇,本篇內容先講模型概述、接口定義和開發示例,下篇再來講QoS定義。

1. 概述

DCPS(Data-CentricPublish-Subscribe,以數據為中心的發布/訂閱)規范是DDS系列規范最初也是最核心的規范,在某些場合DDS規范指的就是DCPS規范。

2. DCPS-PIM

DCPS的內容總結在下面這張圖中,主要分為三大塊,這篇文章也將按照導圖中的內容依次介紹:

  • ? 模型描述,介紹模型中涉及的概念;
  • ? 接口描述,分模塊定義類并定義接口形式及接口功能描述;
  • ? QoS定義,定義22種QoS的功能及其配置方式。

64e96314-7b9b-11ef-bb4b-92fbcf53809c.png

2.1. 模型描述

2.1.1. 實體概念

  • 基于主題的發布/訂閱模型
  • 系統的數據按照主題來分類;
  • 發布端發布主題數據;
  • 訂閱端訂閱主題數據;
  • 發布端發布的主題數據后,相同主題的訂閱端都能收到。
  • DCPS實體模型定義了三層實體,如下圖所示
  • 域參與者(DomainParticipant)
  • 這個實體看上去和發布/訂閱模型沒啥關系,實際上也沒啥關系。主要是DDS里面定義域的概念用來隔離通信,相同域內實體互相通信,不同域間隔離;
  • 這是應用參加DDS系統通信的入口實體,創建某個域下的域參與者表示:“我想要參與某個域進行通信(是發布還是訂閱后面再告訴你)”。
  • 發布者(Publisher)
  • 這個最好理解,應用創建發布者表示:“我需要發布數據(具體發布什么主題數據,后面再告訴你)”;
  • 訂閱者(Subscriber)
  • 這個也很好理解,應用創建訂閱者表示:“我需要訂閱數據(具體訂閱什么主題數據,后面再告訴你)”;
  • 主題(Topic)
  • 主題用來描述一類數據,創建主題表示:“我有這么一類數據需要交互”;
  • 定義主題需要什么信息,后面章節詳細介紹;
  • 數據寫者(DataWriter)
  • 數據寫者關聯一個且僅一個主題實體,用來向全局數據空間寫指定主題的數據;
  • 應用創建數據寫者表示:“我需要發布XX主題數據。”
  • 數據讀者(DataReader)
  • 數據讀者關聯一個且僅一個主題實體,用來從全局數據空間讀指定主題的數據;
  • 應用創建數據讀者表示:“我需要訂閱XX主題數據。”

6505af24-7b9b-11ef-bb4b-92fbcf53809c.png

2.1.2. 數據描述

DCPS模型中有幾個重要的概念來描述系統中傳輸的數據,如下圖所示自頂向下分為三層來描述系統中交互的數據。

概念說明標識
主題最大類,域內唯一的主題名稱,并關聯1個數據類型。主題名+類型
實例主題數據中key成員相同的數據的集合,即使用key成員進一步區分主題數據,可以理解成“子主題”。InstanceHandle_t
樣本每次向DDS發送一次數據產生一個數據樣本。序列號

651986a2-7b9b-11ef-bb4b-92fbcf53809c.png

2.2. 接口描述

2.2.1. 基礎模塊

基礎模塊包含了DCPS的接口定義的幾個重要的原則:

實體管理(創建/刪除/查詢)采用工廠模式,父實體為子實體的工廠,層級關系參見2.2.1節;

每個實體會關聯一組內部的狀態

狀態可以通過實體提供的查詢接口查詢獲取;

狀態可以通過監聽器由底層回調獲取;

狀態可以通過“條件-等待”的方式同步阻塞獲取;

每個實體都會關聯一系列的QoS配置。

2.2.1.1. 實體狀態

實體狀態表示DDS為用戶關心的底層事件所維護的狀態,例如數據寫者關聯成功匹配遠程數據讀者、檢測到數據讀者數據樣本丟失、檢測到主題的類型不兼容等。每個實體會關聯一系列的代表該實體“通信狀態”的狀態對象。實體關聯的狀態參見下圖。狀態結構體中包含的數值可以提供更多關于該狀態的信息。

652b3906-7b9b-11ef-bb4b-92fbcf53809c.png

2.2.1.2. 獲取實體狀態

狀態分為兩種類型:

  • 簡單通信狀態 :除了表明狀態是否改變的標識還包含保存當前狀態的對應結構體。
  • 讀通信狀態:讀通信狀態更像一個事件,除了是否發生以外沒有其他聲明。只有兩個狀態是讀通信狀態:#DATA_AVAILABLE_STATUS 和 #DATA_ON_READERS_STATUS 。

6545a1ce-7b9b-11ef-bb4b-92fbcf53809c.png

下面分別描述獲取實體簡單通信狀態有三種方式 :

  • 同步獲取實體狀態,參見上圖最左邊圖,用戶想要獲取某個狀態的當前值時,主動調用該狀態有關的實體方法,獲取各實體狀態的實體方法參見2.2.1.1中的圖;
  • 同步等待并獲取實體狀態,參見上圖中間的圖,用戶設置等待條件,并調用DDS接口進行阻塞等待,在DDS底層檢測到該狀態發生變化后,解開阻塞,用戶再通過方法1獲取該狀態;
  • 異步回調實體狀態,參見上圖右邊的圖,該方式為通過監聽器異步回調狀態 ,用戶為實體設置相應的監聽器(再進行其他的業務邏輯),DDS底層檢測到該狀態變化時,通過回調監聽器的相應方法,用戶即可獲取該狀態的值,各實體狀態關聯的回調方法參見參見2.2.1.1中的圖。

2.2.1.3. 條件-等待

DDS使用條件( Condition )以及等待( WaitSet )來實現同步等待模型,其中每個條件均有一個觸發狀態,不同類型的狀態的觸發條件不一樣,可以將一個或者多個條件加入到等待集合中,即允許用戶同時等待多個狀態的集合中的某個狀態觸發。條件的類型及其相關的操作參見,使用條件等待的詳細例子參見:

說明狀態條件( StatusCondition )讀取條件 ( ReadCondition )監視條件( GuardCondition )
簡介該條件用于獲取實體狀態改變該條件用于獲取數據讀者的數據狀態改變該條件用于手動解開阻塞的條件集合
獲取方式每個實體均會關聯一個該條件,調用 Entity::get_statuscondition 方法獲取由數據讀者作為該條件的工廠, DataReader::create_readcondition 、 DataReader::delete_readcondition用戶負責狀態的生命周期管理 (new/delete)
觸發方式StatusCondition::set_enabled_statuses 設置的關心的狀態發生改變數據讀者底層有該狀態所表示的數據樣本的時候觸發用戶通過監視條件的接口手動設置
觸發后的動作首先測試發生改變的狀態,再調用相應的狀態獲取方法獲取調用數據讀者的讀取數據方法獲取改變的數據 DataReader::read_w_condition DataReader::take_w_condition

(向左滑動)

2.2.1.4. 監聽器

DDS通過監聽器提供底層狀態事件異步回調的機制,每個實體狀態在相應的實體監聽器中均有相應的回調函數與之對應,實體回調函數與實體狀態的對應關系參見 2.2.1.1中的圖 。下圖顯示了DDS中各個監聽器的繼承關系,即父實體的監聽器繼承于子類的監聽器,這就意味著父實體監聽器能夠獲取所有子實體的狀態變化。

6557e2bc-7b9b-11ef-bb4b-92fbcf53809c.png

2.2.2. 域模塊

在發布訂閱模型中,理論上每個計算機上的中間件都需要掌握全局的節點信息,以提供分布式的數據傳輸服務。但在實際應用中,可能存在需要隔離的情況,例如網絡中的節點數量過于龐大,掌握全局信息會付出巨大的代價,或者從屬于不同分區的小組之間不希望互相干擾。為了解決隔離的問題,DDS引入了域的概念。每個參與通信的計算機都可以加入一個或多個域,相同域內的節點可以互相通信,不同域之間的節點則不會有數據交互。DDS中使用 DomainId_t 來唯一標識一個域。域參與者實體是DDS的入口,用戶創建一個域參與者表示該程序想要在指定的域中交互數據。域模型示意圖參見下圖,一個應用程序可以在多個域中交互數據。

65708af6-7b9b-11ef-bb4b-92fbcf53809c.png

2.2.2.1. 域參與者工廠

域參與者實體的工廠為全局單例的域參與者工廠( DomainParticipantFactory ),域參與者工廠的主要功能參見下表。

功能接口
單例管理
DomainParticipantFactory::get_instance
DomainParticipantFactory::finalize_instance
作為域參與者的工廠
DomainParticipantFactory::create_participant
DomainParticipantFactory::delete_participant
DomainParticipantFactory::lookup_participant
DomainParticipantFactory::get_default_participant_qos
DomainParticipantFactory::set_default_participant_qos
自身QoS管理
DomainParticipantFactory::set_qos
DomainParticipantFactory::get_qos

(向左滑動)

2.2.2.2. 域參與者

域參與者( DomainParticipant ),主要接口的功能參見下表,此外,域參與者內部還實現發現協議、根據線程模型配置初始化線程、創建定時器、申請并創建網絡傳輸需要的資源,并監聽對應的網絡端口,負責處理網絡報文等,域參與者所需的資源較多,內部邏輯復雜,因而在一個應用中應盡可能的減少域參與者的創建。

功能接口
實體功能
DomainParticipant::enable
DomainParticipant::set_listener
DomainParticipant::get_listener
DomainParticipant::set_qos
DomainParticipant::get_qos
DomainParticipant::get_instance_handle
DomainParticipant::get_status_changes
DomainParticipant::get_statuscondition
作為實體工廠
DomainParticipant::delete_contained_entities
DomainParticipant::contains_entity
作為主題實體工廠
DomainParticipant::create_topic
DomainParticipant::delete_topic
DomainParticipant::get_default_topic_qos
DomainParticipant::set_default_topic_qos
DomainParticipant::lookup_topicdescription
DomainParticipant::find_topic
DomainParticipant::create_contentfilteredtopic
DomainParticipant::delete_contentfilteredtopic
作為發布者實體工廠
DomainParticipant::create_publisher
DomainParticipant::delete_publisher
DomainParticipant::get_default_publisher_qos
DomainParticipant::set_default_publisher_qos
DomainParticipant::get_publishers
作為訂閱者實體工廠
DomainParticipant::create_subscriber
DomainParticipant::delete_subscriber
DomainParticipant::get_default_subscriber_qos
DomainParticipant::set_default_subscriber_qos
DomainParticipant::get_subscribers
內置實體管理DomainParticipant::get_builtin_subscriber
通信管理
DomainParticipant::ignore_participant
DomainParticipant::ignore_publication
DomainParticipant::ignore_subscription
域信息查詢
DomainParticipant::get_domain_id
DomainParticipant::get_discovered_participants
DomainParticipant::get_discovered_participant_data
DomainParticipant::get_discovered_topics
DomainParticipant::get_discovered_topic_data
存活性管理DomainParticipant::assert_liveliness


2.2.3. 主題模塊

功能接口
實體功能
Topic::enable
Topic::set_listener
Topic::get_listener
Topic::get_instance_handle
Topic::get_status_changes
Topic::get_statuscondition
Topic::set_qos
Topic::get_qos
獲取主題信息
Topic::get_type_name
Topic::get_name

2.2.4. 發布模塊

2.2.4.1. 發布者

功能接口
實體功能
Publisher::enable
Publisher::set_listener
Publisher::get_listener
Publisher::get_instance_handle
Publisher::get_status_changes
Publisher::get_statuscondition
Publisher::get_participant
Publisher::set_qos
Publisher::get_qos
作為數據寫者的工廠
Publisher::create_datawriter
Publisher::delete_datawriter
Publisher::lookup_datawriter
Publisher::delete_contained_entities
Publisher::set_default_datawriter_qos
Publisher::get_default_datawriter_qos
Publisher::copy_from_topic_qos
數據發布控制Publisher::begin_coherent_changes
Publisher::end_coherent_changes
Publisher::wait_for_acknowledgments
Publisher::suspend_publications
Publisher::resume_publications

2.2.4.2. 數據寫者

數據寫者主要的功能描述參見下表,數據寫者提供強類型安全的接口,該接口由DDS編譯器根據IDL中定義的類型自動生成,其中類型無關的接口參見 DataWriter 、類型相關的接口參見 ExampleDataWriter 接口說明,典型的發布過程如下 。

功能接口
實體功能
DataWriter::enable
DataWriter::set_listener
DataWriter::get_listener
DataWriter::get_instance_handle
DataWriter::get_status_changes
DataWriter::get_statuscondition
DataWriter::set_qos
DataWriter::get_qos
數據發送
ExampleDataWriter::write
ExampleDataWriter::write_w_timestamp
ExampleDataWriter::write_w_dst
數據實例管理
ExampleDataWriter::register_instance
ExampleDataWriter::register_instance_w_timestamp
ExampleDataWriter::unregister_instance
ExampleDataWriter::unregister_instance_w_timestamp
ExampleDataWriter::dispose
ExampleDataWriter::dispose_w_timestamp
ExampleDataWriter::get_key_value
ExampleDataWriter::lookup_instance
實體狀態查詢
DataWriter::get_liveliness_lost_status
DataWriter::get_offered_deadline_missed_status
DataWriter::get_offered_incompatible_qos_status
DataWriter::get_publication_matched_status
數據寫者信息查詢
DataWriter::get_topic
DataWriter::get_publisher
匹配對端信息查詢
DataWriter::get_matched_subscriptions
DataWriter::get_matched_subscription_data
存活性管理DataWriter::assert_liveliness
其他
DataWriter::wait_for_acknowledgments
DataWriter::flush

(向左滑動)

2.2.5. 訂閱模塊

2.2.5.1. 訂閱者

功能接口
實體功能
Subscriber::enable
Subscriber::set_listener
Subscriber::get_listener
Subscriber::get_instance_handle
Subscriber::get_status_changes
Subscriber::get_statuscondition
Subscriber::get_participant
Subscriber::set_qos
Subscriber::get_qos
作為數據讀者的工廠Subscriber::create_datareader
Subscriber::delete_datareader
Subscriber::lookup_datareader
Subscriber::delete_contained_entities
Subscriber::set_default_datareader_qos
Subscriber::get_default_datareader_qos
Subscriber::copy_from_topic_qos
數據獲取方式Subscriber::begin_access
Subscriber::end_access
Subscriber::get_datareaders
Subscriber::notify_datareaders

(向左滑動)

2.2.5.2. 數據讀者

數據讀者的類型無關功能描述參見下表,數據讀者提供強類型安全的接口,該接口由DDS編譯器根據IDL中定義的類型自動生成,其中類型無關的接口參見DataReader 、類型相關的接口參見 ExampleDataReader 接口說明。

功能接口
實體功能
DataReader::enable
DataReader::set_listener
DataReader::get_listener
DataReader::get_instance_handle
DataReader::get_status_changes
DataReader::get_statuscondition
DataReader::set_qos
DataReader::get_qos
實體狀態查詢DataReader::get_sample_lost_status
DataReader::get_sample_rejected_status
DataReader::get_subscription_matched_status
DataReader::get_liveliness_changed_status
DataReader::get_requested_deadline_missed_status
DataReader::get_requested_incompatible_qos_status
數據讀者信息查詢DataReader::get_topicdescription
DataReader::get_subscriber
匹配對端信息查詢DataReader::get_matched_publications
DataReader::get_matched_publication_data
讀取狀態管理DataReader::create_readcondition
DataReader::create_querycondition
DataReader::delete_readcondition
DataReader::delete_contained_entities
其他DataReader::wait_for_historical_data

(向左滑動)


2.2.5.3. 獲取主題數據

當數據樣本到達訂閱端時,DDS底層會根據主題匹配信息分發給不同的數據讀者去處理,當完成處理(資源限制等QoS配置)時,數據讀者將把該數據樣本存儲在底層的隊列中,并通知用戶,再等待用戶通過接口來取出該數據樣本,DDS通知用戶數據到達的方式有兩種:異步監聽方式以及同步等待方式,用戶通過數據讀者的讀取數據接口訪問底層隊列中的數據樣本,這些接口的摘要信息參見下表,詳細信息參見相應的接口說明。用戶可以通過多種方式訪問底層存儲的隊列數據:

1. 提供樣本深拷貝以及零拷貝(僅提供數據樣本在底層隊列中的指針或者引用)兩種方式;

2. 指定最大獲取數量;

3. 訪問處于指定狀態的樣本,樣本狀態由 SampleStateKind 、 ViewStateKind 、 InstanceStateKind 三個狀態定義;

4. 按照數據實例訪問,包括指定數據實例以及按數據實例順序;

5. 按照樣本的順序依次訪問;

6. 讀取/取出兩種訪問方法,其中讀取操作不從底層隊列中刪除,而取出操作則從底層維護的樣本中刪除。

分類接口說明
讀取系列ExampleDataReader::read方式1 & 方式2 & 方式3
ExampleDataReader::read_next_sample方式5
ExampleDataReader::read_instance方式1 & 方式2 & 方式3 & 方式4
ExampleDataReader::read_next_instance方式1 & 方式2 & 方式3 & 方式4
ExampleDataReader::read_w_condition同 ExampleDataReader::read
ExampleDataReader::read_next_instance_w_condition同 ExampleDataReader::read_next_instance
取出系列ExampleDataReader::take方式1 & 方式2 & 方式3
ExampleDataReader::take_next_sample方式5
ExampleDataReader::take_instance方式1 & 方式2 & 方式3 & 方式4
ExampleDataReader::take_next_instance方式1 & 方式2 & 方式3 & 方式4
ExampleDataReader::take_w_condition同 ExampleDataReader::take
ExampleDataReader::take_next_instance_w_condition同 ExampleDataReader::take_next_instance
歸還空間ExampleDataReader::return_loan配合實現零拷貝

(向左滑動)

2.3. QoS定義

下一期再繼續分享。

3. PSM-IDL

因為上面定義的是平臺/技術無關的模型,在這一章OMG用IDL給出了DCPS的一種定義,所謂PIM就是只規定形式和行為,具體數據結構在PSM中給出,這是OMG DDS規范的一般套路,打個比方,在PIM中會定義 InstanceHandle_t 這個結構的含義是用來唯一標識實體或者數據實例,但是不會規定如何來實現,在PSM中會定義 InstanceHandle_t 就是8個字節或者16個字節。

4. 開發流程

657ebb3a-7b9b-11ef-bb4b-92fbcf53809c.png

5. 代碼示例

5.1. 發布端

#include"DomainParticipantFactory.h"
#include"DomainParticipant.h"
#include"DefaultQos.h"
#include"Publisher.h"
#include"DataWriter.h"
#include"Topic.h"
#include"Foo.h"
#include"FooDataWriter.h"
#include"FooTypeSupport.h"
#include"ZRSleep.h"
#include
intmain()
{
//域
DomainId_tdomainId=11;
DomainParticipantFactory*factory=DomainParticipantFactory::get_instance();
//域參與者
DomainParticipant*participant=factory->create_participant(
domainId,
DOMAINPARTICIPANT_QOS_DEFAULT,
NULL,STATUS_MASK_NONE);
if(NULL==participant)
{
printf("createparticipantfailed.\n");
return-1;
}
//注冊類型
constChar*type_name=FooTypeSupport::get_instance()->get_type_name();
if(type_name==NULL)
{
return-1;
}
ReturnCode_trtn=FooTypeSupport::get_instance()->register_type(participant,type_name);
if(rtn!=RETCODE_OK)
{
printf("registertypefailed.\n");
return-1;
}
//創建主題
Topic*topic=participant->create_topic("example",type_name,TOPIC_QOS_DEFAULT,NULL,STATUS_MASK_NONE);
if(topic==NULL)
{
printf("createtopicfailed.\n");
return-1;
}
//創建發布端
Publisher*publisher=participant->create_publisher(
PUBLISHER_QOS_DEFAULT,
NULL,STATUS_MASK_NONE);
if(publisher==NULL)
{
printf("createpublisherfailed.\n");
return-1;
}
//創建數據寫者
DataWriterQoswriter_qos;
publisher->get_default_datawriter_qos(writer_qos);
writer_qos.history.depth=5;
DataWriter*writer=publisher->create_datawriter(
topic,writer_qos,NULL,STATUS_MASK_NONE);
FooDataWriter*_writer=dynamic_cast(writer);
if(writer==NULL)
{
printf("createdatawriterfailed.\n");
return-1;
}
//創建數據樣本
Foosample;
while(true)
{
//在此處修改數據樣本的值

//發布數據樣本
_writer->write(sample,HANDLE_NIL_NATIVE);
ZRSleep(1000);
}
return0;
}

(向左滑動)

5.2. 訂閱端

#include"DomainParticipantFactory.h"
#include"DomainParticipant.h"
#include"DefaultQos.h"
#include"Subscriber.h"
#include"DataReader.h"
#include"Topic.h"
#include"DataReaderListener.h"
#include"Foo.h"
#include"FooDataReader.h"
#include"FooTypeSupport.h"
#include"ZRSleep.h"
#include
//繼承DataReaderListener
classMylistener:publicDataReaderListener
{
//回調函數
voidon_data_available(DataReader*the_reader)
{
printf("receiveddata.\n");
FooDataReader*foo_reader=dynamic_cast(the_reader);
if(foo_reader==NULL)
{
printf("castreaderfailed.\n");
return;
}
FooSeqdata_values;
SampleInfoSeqsample_infos;
ReturnCode_trtn;
rtn=foo_reader->take(data_values,
sample_infos,
MAX_INT32_VALUE,
ANY_SAMPLE_STATE,
ANY_VIEW_STATE,
ANY_INSTANCE_STATE);
if(RETCODE_ERROR==rtn)
{
printf("takefailed.\n");
return;
}
if(RETCODE_NO_DATA==rtn)
{
printf("nodata.\n");
return;
}
for(inti=0;ilength();i++)
{
if(sample_infos[i].valid_data)
{
FooPrintData(&data_values[i]);
}
}
foo_reader->return_loan(data_values,sample_infos);
}
};
intmain()
{
//域
DomainId_tdomainId=11;
DomainParticipantFactory*factory=DomainParticipantFactory::get_instance();
//域參與者
DomainParticipant*participant=factory->create_participant(
domainId,
DOMAINPARTICIPANT_QOS_DEFAULT,
NULL,STATUS_MASK_NONE);
if(NULL==participant)
{
printf("createparticipantfailed.\n");
return-1;
}
//注冊類型
constChar*type_name=FooTypeSupport::get_instance()->get_type_name();
if(NULL==type_name)
{
return-1;
}
ReturnCode_trtn=FooTypeSupport::get_instance()->register_type(participant,type_name);
if(RETCODE_OK!=rtn)
{
printf("registertypefailed.\n");
return-1;
}
//創建主題
Topic*topic=participant->create_topic("example",type_name,TOPIC_QOS_DEFAULT,NULL,STATUS_MASK_NONE);
if(NULL==topic)
{
printf("createtopicfailed.\n");
return-1;
}
//創建訂閱端
Subscriber*subscriber=participant->create_subscriber(
SUBSCRIBER_QOS_DEFAULT,
NULL,STATUS_MASK_NONE);
if(NULL==subscriber)
{
printf("createsubscriberfailed.\n");
return-1;
}
//監聽器
Mylistener*listener=newMylistener;
//創建數據讀者
DataReaderQosreader_qos;
subscriber->get_default_datareader_qos(reader_qos);
reader_qos.history.depth=5;
DataReader*reader=subscriber->create_datareader(
topic,reader_qos,listener,STATUS_MASK_ALL);
FooDataReader*_reader=dynamic_cast(reader);
if(NULL==reader)
{
printf("createdatareaderfailed.\n");
return-1;
}
while(true)
{
ZRSleep(1000);
}
return0;
}

(向左滑動)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 通信
    +關注

    關注

    18

    文章

    6024

    瀏覽量

    135950
  • 中間件
    +關注

    關注

    0

    文章

    65

    瀏覽量

    18168
  • DDS
    DDS
    +關注

    關注

    21

    文章

    633

    瀏覽量

    152630
收藏 人收藏

    評論

    相關推薦

    什么是DDS(數據分發服務)?#軟件中間件

    中間件DDS
    北匯信息POLELINK
    發布于 :2023年06月05日 14:50:13

    一種嵌入式系統通信中間件的設計

    基于嵌入式系統的跨平臺實現互通、互連、互操作及通用性的特殊要求,我們根據中間件的設計思想研制開發了一種基于嵌入式技術的各通信設備之間進行網絡互連的通信中間件
    發表于 05-30 09:33 ?35次下載

    中間件在產業鏈協同平臺的應用和研究

    本文對中間件在制造業產業鏈協同平臺的應用技術進行了分析,提出了企業應用集成中間件:包括數據庫中間件技術和信息中間件技術,研究了汽車產業鏈
    發表于 01-09 11:47 ?10次下載

    基于中間件技術的異構機器人系統設計及實現

    基于中間件技術的異構機器人系統設計及實現:基于C++CORBA中間件的技術規范和具體應用,對異構機器人系統的集成技術進行了研究.以ACE?TAO作為開發平臺,
    發表于 03-18 16:23 ?17次下載

    基于JMS的RFID中間件設計與實現

    介紹了Radio Frequency Identification (RFID) 和物聯網的RFID 中間件技術,設計了RFID 中間件整體框架,在此基礎設計并實現了一個基于JMS 的商品零售的邊緣
    發表于 10-19 16:16 ?17次下載

    什么是中間件

    什么是中間件 中間件是一種獨立的系統軟件或服務程序,分布式應用軟件
    發表于 12-28 17:54 ?1370次閱讀
    什么是<b class='flag-5'>中間件</b>

    NGB中間件標準考慮因素

      數字電視中間件技術與標準,大家都非常熟悉了。自2001年,DVB推出MHP中間件技術標準以來,全世界各地都開始了中間件技術的研究與標準制定工作,而且基本都是源自于MHP
    發表于 06-25 11:18 ?1088次閱讀
    NGB<b class='flag-5'>中間件</b>標準考慮因素

    基于DDS網絡中間件的持久化數據管理問題研究

    基于DDS網絡中間件的持久化數據管理問題研究_劉宏義
    發表于 01-07 21:28 ?0次下載

    常見的中間件有哪些?匯總解析

    世界著名的資訊機構Giga Group把中間件分為三大類,共十五種。另一家世界著名的資訊機構IDC同時指出,最近幾年到未來的2002年,增長率最高的中間件將集中在數據存取中間件、消息中間件
    發表于 12-01 08:48 ?5.5w次閱讀

    物聯網軟件系統中的RFID中間件介紹

    RFID中間件是物聯網軟件系統中的關鍵和靈魂,為解決分布異構問題,人們提出了中間件的概念。中間件是位于平臺(硬件和操作系統)和應用之間的通用服務,這些服務具有標準的程序接口和協議。針對不同的操作系統和硬件平臺,它們可以有符合接口
    發表于 04-15 16:00 ?4652次閱讀
    物聯網軟件系統中的RFID<b class='flag-5'>中間件</b>介紹

    RFID中間件是什么東西

    RFID 中間件是一種面向消息的中間件,信息是以消息的形式,從一個程序傳送到另一個或多個程序。
    發表于 12-02 16:12 ?3485次閱讀

    通信中間件接口手冊

    通信中間件接口手冊
    發表于 06-29 11:37 ?2次下載

    汽車軟件通信中間件iceoryx和它的零拷貝技術

    1. iceOryx 是什么?這是一頭漂亮的"冰羚",它是一種用于汽車軟件中的 ICP 通信中間件,由 Eclipse 基金會發布和維護。 通信中間件在汽車軟件開發中占據越來越重要的地位,這是
    發表于 05-15 11:42 ?0次下載
    汽車軟件<b class='flag-5'>通信中間件</b>iceoryx和它的零拷貝技術

    自動駕駛通信中間件

    ,而中間件的任務就是確保網絡 本身對軟件組件是透明的。比如我們所熟知的SOME/IP就是一種典型的中間件技術實現。使用中間件能夠簡化系統的開發,提 高管理和測試效率。 車載網絡通信
    發表于 06-01 11:32 ?0次下載
    自動駕駛<b class='flag-5'>通信中間件</b>

    DDS通信中間件——DCPS規范(下)

    DDS通信中間件——DCPS規范(下)本期還是DCPS規范,填上期沒有聊完的QoS的坑。本系列文
    的頭像 發表于 11-27 11:47 ?207次閱讀
    <b class='flag-5'>DDS</b><b class='flag-5'>通信中間件</b>——<b class='flag-5'>DCPS</b><b class='flag-5'>規范</b>(下)
    主站蜘蛛池模板: 成人午夜剧场| 9久高清在线不卡免费无吗视频| 亚洲永久精品ww47| 野花韩国免费高清电影| 最近中文字幕免费高清MV视频6| 97国内精品久久久久久久影视| adc影院在线| 国产成人精视频在线观看免费| 国产精品永久在线| 精品无码久久久久久国产百度| 久久亚洲伊人| 日韩精品熟女一区二区三区中文| 首页 国产 亚洲 中文字幕| 亚洲国产第一| 57PAO强力打造高清免费| TIMI1TV天美传媒在线观看| 国产成人亚洲综合无| 精品区2区3区4区产品乱码9| 免费人成网站在线观看10分钟| 日韩欧美高清一区| 亚洲区 bt下载| 99久久亚洲综合精品| 国产精品视频大全| 老司机福利在视频在ae8| 日本综艺大尺度无删减版在线| 亚洲成片在线看| 99re久久超碰视频精品| 高清观看ZSHH96的视频素材| 久草在线草a免费线看| 欧美兽交YOYO| 亚洲国产成人久久精品影视| 99re在这里只有精品| 国产极品美女视频福利| 久久精品国产男包| 三级黄色在线看| 云南14学生真实初次破初视频| 被窝伦理午夜电影网| 九九热精品在线| 日本无码色哟哟婷婷最新网站| 亞洲人妻AV無碼在線視頻| 超碰免费碰免费视频|