Информация об изменениях

Сообщение Re[10]: boost::serial_port и мозговой секс от 26.10.2014 20:43

Изменено 26.10.2014 20:53 HolyNick

В принципе такой вариант работает:
    boost::asio::io_service service;
    std::shared_ptr<boost::asio::serial_port> port(new boost::asio::serial_port(service));
    port->open("COM3"); //OK 

    char buffer;
    boost::asio::async_read(*port, boost::asio::buffer(&buffer, 1),
        [port](boost::system::error_code error, std::size_t bytes_transferred)
    {
    });

    char buffer2;
    boost::asio::async_read(*port, boost::asio::buffer(&buffer2, 1),
        [port](boost::system::error_code error, std::size_t bytes_transferred)
    {
    });

    port->close();
    service.poll(); //оба обработчика вызываются с некоторой ошибкой

    try
    {
         port->open("COM3"); //OK, порт открывается повторно
    }
    catch (...)
    {
    }

Возможно, этого достаточно.
Re[10]: boost::serial_port и мозговой секс
В принципе такой вариант работает:
    boost::asio::io_service service;
    std::shared_ptr<boost::asio::serial_port> port(new boost::asio::serial_port(service));
    port->open("COM3"); //OK 

    char buffer;
    boost::asio::async_read(*port, boost::asio::buffer(&buffer, 1),
        [port](boost::system::error_code error, std::size_t bytes_transferred)
    {
    });

    char buffer2;
    boost::asio::async_read(*port, boost::asio::buffer(&buffer2, 1),
        [port](boost::system::error_code error, std::size_t bytes_transferred)
    {
    });

    port->close();
    service.poll(); //оба обработчика вызываются с некоторой ошибкой

    try
    {
         port->open("COM3"); //OK, порт открывается повторно
    }
    catch (...)
    {
    }