basic_serial_port and async_read_until

basic_serial_port and async_read_until

本文关键字:read until async port serial basic and      更新时间:2023-10-16

我试图将boost::shared_ptrasync_read_until一起使用,但无法使其工作。这是我的简化代码:

标题

boost::asio::io_service io_service;
typedef boost::shared_ptr<boost::asio::serial_port> serial_port_ptr;
serial_port_ptr serial_port;
boost::asio::streambuf response_data;
char delimiter = 'n';
boost::system::error_code error;

连接

serial_port = serial_port_ptr(new boost::asio::serial_port(io_service));
serial_port->open("/dev/ttyS0", error);

读取

boost::asio::async_read_until(
  serial_port.get(), response_data, delimiter,
  boost::bind(
    &serial_comm::data_received,
      this, boost::asio::placeholders::error,
      boost::asio::placeholders::bytes_transferred
  )
);

我得到的错误是no type named 'type' in 'struct std::enable_if<false, void>'。非常感谢。

您提供了一个指针作为boost::asio::async_read_until的输入,而不是引用。应该这样重写:

boost::asio::async_read_until(
  *serial_port, response_data, delimiter,
  boost::bind(
    &serial_comm::data_received,
      this, boost::asio::placeholders::error,
      boost::asio::placeholders::bytes_transferred
  )
);