Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Tecnologia da Internet das Coisas

O que há de novo na API C ++ moderna


Desde que introduzimos a API C ++ moderna para DDS, vimos muito interesse de nossos clientes. Vários deles começaram a desenvolver novos sistemas em C ++ 11. Também aprimoramos constantemente a API e há alguns novos recursos, grandes e pequenos, sobre os quais gostaria de falar aqui.

Mapeamento IDL aprimorado para C ++. O Code Generator fornece um mapeamento novo e aprimorado para o C ++ moderno. Uma nova opção, -stl , combinado com -language C ++ 03 ou -language C ++ 11 permite isso.

Esta opção altera o mapeamento dos seguintes tipos de IDL:

Por exemplo, dado o seguinte tipo de IDL:
 struct MyType { 
sequência my_unbounded_seq;
sequência my_bounded_seq;
@use_vector sequence my_other_bounded_seq
string my_str;
@external long my_external;
};

É assim que o tipo C ++ 11 gerado se parece com “-stl”

(Comando completo: rtiddsgen -language C ++ 11 -stl -unboundedSupport MyType.idl )
 class MyType { 

público:
Meu tipo();
...

MyType (MyType &&) =default;
MyType &operator =(MyType &&) =default;
MyType &operator =(const MyType &) =default;
MyType (const MyType &) =default;

std ::vector &my_unbounded_seq () noexcept;
const std ::vector &my_unbounded_seq () const noexcept;
void my_unbounded_seq (const std ::vector &value);

rti ::core ::bounded_sequence &my_bounded_seq () noexcept;
const rti ::core ::bounded_sequence &my_bounded_seq () const noexcept;
void my_bounded_seq (const rti ::core ::bounded_sequence &value);

std ::vector &my_other_bounded_seq () noexcept;
const std ::vector &my_other_bounded_seq () const noexcept;
void my_other_bounded_seq (const std ::vector &value);

std ::string &my_str () noexcept;
const std ::string &my_str () const noexcept;
void my_str (const std ::string &value);

dds ::core ::external &my_external () noexcept;
const dds ::core ::external &my_external () const noexcept;
void my_external (valor dds ::core ::external );

...
};

API de solicitação de resposta. A nova API de solicitação-resposta para C ++ moderno estende a API DDS com duas entidades: rti ::request ::Requester e rti ::request ::Replier . Esta API já estava disponível em outras linguagens e agora está disponível em C ++ moderno como um protótipo no 5.3 e pronto para produção no 5.3.0.7.

Um exemplo de código simples está disponível aqui.

Fizemos pequenas melhorias adicionais para tornar a API mais fácil de usar. Por exemplo, simplificamos como usar manipuladores para despachar Condições em um WaitSet. Anteriormente, os manipuladores precisavam ser functores sem argumento. Agora eles podem tomar a Condição como um argumento.
 condition.handler ([] () { 
// faça alguma coisa
});

// agora também apoiamos
condition.handler ([] (dds ::core ::cond ::Condition c) {
// faça algo (condição ==c)
});

Também mantivemos a API atualizada com novos recursos de conectividade , como TopicQuery, que apresentamos em 5.3. As consultas de tópicos fornecem um mecanismo escalonável para que os aplicativos recebam dados históricos sob demanda.
Na API C ++ moderna, você pode criar uma instância TopicQuery a partir de um DataReader da seguinte maneira:
 rti ::sub ::TopicQuery my_topic_query ( 
my_reader,
rti ::sub ::TopicQuerySelection (dds ::topic ::Filter ("x <10")));

Agora você pode usar my_reader para obter as amostras de dados históricos de todos os DataWriters correspondentes que passam pelo filtro. Você também pode continuar lendo dados “ao vivo” como de costume.

Com o C ++ 17 recém-aprovado e o C ++ 20 chegando, continuamos atualizando e modernizando nossa API C ++ com recursos interessantes. Fique ligado ou simplesmente assine o RTI Blog para obter as últimas atualizações!

Tecnologia da Internet das Coisas

  1. A IoT anuncia uma nova era para a rua
  2. O streaming de dados abre novas possibilidades na era IoT
  3. O que vai parar o lançamento 5G?
  4. É hora de mudar:uma nova era no limite
  5. G.hn está abrindo a porta para novas oportunidades industriais
  6. Repensando a Manufatura Inteligente para o Novo Normal
  7. Se data for o novo óleo, quem é o seu refinador?
  8. O surgimento de uma nova espécie de TI:O profissional híbrido de TI / OT
  9. O Escritório está fechado? Microsoft anuncia nova incubadora de pesquisa de IA
  10. std::list em C++ com exemplo