Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial Internet of Things >> Интернет вещей

Что нового в современном C ++ API

С тех пор, как мы представили современный C ++ API для DDS, мы заметили большой интерес со стороны наших клиентов. Некоторые из них начали разработку совершенно новых систем на C ++ 11. Мы также постоянно улучшаем API, и есть несколько новых функций, больших и малых, о которых я хотел бы здесь поговорить.

Улучшенное сопоставление IDL с C ++. Генератор кода обеспечивает новое улучшенное сопоставление с современным C ++. Новый параметр -stl , в сочетании с -языком C ++ 03 или -язык C ++ 11 позволяет это.

Этот параметр изменяет сопоставление следующих типов IDL:

Например, учитывая следующий тип IDL:

 struct MyType { 
последовательность my_unbounded_seq;
последовательность my_bounded_seq;
@use_vector последовательность my_other_bounded_seq
строка my_str;
@external long my_external;
};

Вот как сгенерированный тип C ++ 11 выглядит с «-stl»

(Полная команда: rtiddsgen -language C ++ 11 -stl -unboundedSupport MyType.idl )

 class MyType { 

общественность:
Мой тип();
...

MyType (MyType &&) =по умолчанию;
MyType &operator =(MyType &&) =по умолчанию;
MyType &operator =(const MyType &) =по умолчанию;
MyType (const MyType &) =по умолчанию;

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 (значение dds ::core ::external );

...
};

API запроса-ответа . Новый API запроса-ответа для современного C ++ расширяет API DDS двумя объектами: rti ::request ::Requester и rti ::request ::Replier . Этот API уже был доступен на других языках, а теперь доступен в современном C ++ в качестве прототипа в версии 5.3 и готов к производству в версии 5.3.0.7.

Здесь доступен простой пример кода.

Мы внесли дополнительные небольшие улучшения чтобы упростить использование API. Например, мы упростили использование обработчиков для отправки условий в WaitSet. Раньше обработчики должны были быть функторами без аргументов. Теперь они могут принять Условие в качестве аргумента.

 condition.handler ([] () { 
// сделай что-нибудь
});

// теперь мы также поддерживаем
condition.handler ([] (dds ::core ::cond ::Condition c) {
// что-то делаем (условие ==c)
});

Мы также постоянно обновляли API, добавляя новые возможности подключения . , например TopicQuery, который мы представили в версии 5.3. Тематические запросы предоставляют приложениям масштабируемый механизм для получения исторических данных по запросу.
В современном API C ++ вы можете создать экземпляр TopicQuery из DataReader следующим образом:

 rti ::sub ::TopicQuery my_topic_query ( 
my_reader,
rti ::sub ::TopicQuerySelection (dds ::topic ::Filter ("x <10")));

Теперь вы можете использовать my_reader, чтобы брать образцы исторических данных из всех подходящих DataWriter, прошедших фильтр. Вы также можете продолжать читать «живые» данные как обычно.

Поскольку C ++ 17 только что одобрен, а C ++ 20 не за горами, мы продолжаем обновлять и модернизировать наш C ++ API с помощью интересных функций. Следите за обновлениями или просто подпишитесь на блог RTI, чтобы получать все последние обновления!


Интернет вещей

  1. IoT знаменует новую эру для высоких улиц
  2. Потоковая передача данных открывает новые возможности в эпоху Интернета вещей
  3. Что остановит развертывание 5G?
  4. Пора перемен:новая эра на краю
  5. G.hn открывает двери новым промышленным возможностям
  6. Переосмысление интеллектуального производства для нового нормального
  7. Если данные относятся к новому маслу, кто ваш переработчик?
  8. Появление нового вида ИТ:гибрид ИТ / ОТ
  9. Офис закрыт? Microsoft объявляет о создании нового исследовательского инкубатора искусственного интеллекта
  10. std::list в C++ с примером