Visualization Tool Kit(VTK)など

基本

TCP client/server

リモートアドレスの取得
socket::remote_endpoint()

シリアル通信

boost::asio::serial_portを使う.
Windows環境だと,send_breakが未実装.
future.wait_forを使えばタイムアウトは簡単.

書式,終端文字が決まっている場合のサンプル.
std::vector<char> SerialPort::Impl::Read()
{
  auto recv_future = std::async(std::launch::async, &SerialPort::Impl::InternalRead, this);
  if( timeout != 0 )
  {
    auto recv_status = recv_future.wait_for(std::chrono::milliseconds(timeout));
    if( recv_status == std::future::timeout )
    {
      throw std::exception("Timeout");
    }
  }
  return  recv_future.get();
}

std::vector<char> SerialPort::Impl::InternalRead()
{
  std::vector<char> data;
  for(size_t number_of_read = 0; number_of_read < max_read; ++number_of_read)
  {
    char got;
    asio::read(*port_, asio::buffer(&got, 1));
    if( use_termination_character_ && got == termination_character_ )
    {
      break;
    }
    data.push_back(got);
  }
  data.push_back('\0');
  return data;
}

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

メニュー

チュートリアル

アルゴリズム(数学)

並列計算

STL

#include<memory> #include<string> #include<sstream> #include<algorithm> #include<functional> #include<numeric>

Media Foundation

【メニュー編集】
Wiki記法ガイド

メンバーのみ編集できます