Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Teknologi Internet of Things

Apa yang Baru di Modern C++ API

Sejak kami memperkenalkan C++ API modern untuk DDS, kami telah melihat banyak minat dari pelanggan kami. Beberapa dari mereka telah mulai mengembangkan sistem baru di C++ 11. Kami juga terus meningkatkan API dan ada beberapa fitur baru, besar dan kecil, yang ingin saya bicarakan di sini.

Peningkatan pemetaan IDL ke C++. Code Generator menyediakan pemetaan baru yang disempurnakan untuk C++ modern. Opsi baru, -stl , dikombinasikan dengan -bahasa C++03 atau -bahasa C++11 mengaktifkannya.

Opsi ini mengubah pemetaan jenis IDL berikut:

Misalnya, diberikan tipe IDL berikut:

struct MyType { 
sequence my_unbounded_seq;
sequence my_bounded_seq;
@use_vector sequence my_other_bounded_seq
string my_str;
@eksternal panjang my_external;
};

Ini adalah tampilan tipe C++11 yang dihasilkan dengan “-stl”

(Perintah lengkap:rtiddsgen -bahasa C++11 -stl -unboundedSupport MyType.idl )

kelas MyType { 

publik:
Tipe ku();
...

Jenis Saya (Jenis Saya&&) =default;
Jenis Saya&operator=(Jenis Saya&&) =default;
Jenis Saya&operator=(const Jenis Saya&) =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&nilai);

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&nilai);

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

std::string&my_str() tidak ada kecuali;
const std::string&my_str() const noexcept;
void my_str(const std::string&nilai);

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

...
};

API permintaan-balasan. API permintaan-balasan baru untuk C++ modern memperluas API DDS dengan dua entitas:rti::request::Requester dan rti::request::Replier . API ini sudah tersedia dalam bahasa lain, dan sekarang tersedia dalam C++ modern sebagai prototipe di 5.3 dan siap produksi di 5.3.0.7.

Contoh kode sederhana tersedia di sini.

Kami telah membuat peningkatan kecil tambahan untuk membuat API lebih mudah digunakan. Misalnya, kami menyederhanakan cara menggunakan penangan untuk mengirimkan Kondisi di WaitSet. Sebelumnya, penangan harus menjadi fungsi tanpa argumen. Sekarang mereka dapat mengambil Kondisi sebagai argumen.

kondisi.handler([]() { 
// lakukan sesuatu
});

// sekarang kami juga mendukung
condition.handler([](dds::core::cond::Condition c) {
// melakukan sesuatu (kondisi ==c)
});

Kami juga terus memperbarui API dengan fitur konektivitas baru , seperti TopicQuery, yang kami perkenalkan di 5.3. Kueri topik menyediakan mekanisme yang dapat diskalakan bagi aplikasi untuk menerima data historis sesuai permintaan.
Di C++ API modern, Anda dapat membuat instance TopicQuery dari DataReader sebagai berikut:

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

Sekarang Anda dapat menggunakan my_reader untuk mengambil sampel data historis dari semua DataWriters yang cocok yang lolos filter. Anda juga dapat terus membaca data "langsung" seperti biasa.

Dengan C++17 baru saja disetujui dan C++20 sudah dekat, kami terus memperbarui dan memodernisasi C++ API kami dengan fitur-fitur menarik. Tetap disini atau cukup berlangganan Blog RTI untuk semua pembaruan terbaru!


Teknologi Internet of Things

  1. IoT menandai era baru untuk jalan raya
  2. Streaming data membuka kemungkinan baru di era IoT
  3. Apa yang akan menghentikan peluncuran 5G?
  4. Saatnya untuk perubahan:Era baru di ujung tanduk
  5. G.hn membuka pintu untuk peluang industri baru
  6. Memikirkan Kembali Manufaktur Cerdas untuk New Normal
  7. Jika data adalah oli baru, siapa kilang Anda?
  8. Munculnya spesies TI baru:Profesional hibrid TI/OT
  9. Apakah Kantor tutup? Microsoft mengumumkan inkubator penelitian AI baru
  10. std::daftar di C++ dengan Contoh