如何在Boost串口中检查/启用奇偶校验?

时间:2017-09-07 11:48:38

标签: c++ boost

//start function
bool SerialPort::start(const char *com_port_name, int baud_rate)
        {
            boost::system::error_code ec;
            if (port_) {
                std::cout << "error : port is already opened..." << std::endl;
                return false;
            }

            port_ = serial_port_ptr(new boost::asio::serial_port(io_service_));
            port_->open(com_port_name, ec);
            if (ec) {
                std::cout << "error : port_->open() failed...com_port_name="
                    << com_port_name << ", e=" << ec.message().c_str() << std::endl; 
                return false;
            }

            // option settings...
            port_->set_option(boost::asio::serial_port_base::baud_rate(baud_rate));
            port_->set_option(boost::asio::serial_port_base::character_size(8));
            port_->set_option(boost::asio::serial_port_base::stop_bits(boost::asio::serial_port_base::stop_bits::one));
            port_->set_option(boost::asio::serial_port_base::parity(boost::asio::serial_port_base::parity::even));
            port_->set_option(boost::asio::serial_port_base::flow_control(boost::asio::serial_port_base::flow_control::none));

            boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service_));

            async_read_some_();

            return true;
        }

        void SerialPort::async_read_some_()
        {
            if (port_.get() == NULL || !port_->is_open()) return;

            port_->async_read_some( 
                boost::asio::buffer(read_buf_raw_, SERIAL_PORT_READ_BUF_SIZE),
                boost::bind(
                    &SerialPort::on_receive_,
                    this, boost::asio::placeholders::error, 
                    boost::asio::placeholders::bytes_transferred));
        }

        void SerialPort::on_receive_(const boost::system::error_code& ec, size_t bytes_transferred)
        {

            if (ec) {
                cout << "error" << endl;
                return;
             }
        }

我已经在我的嵌入式设备中设置了偶数奇偶校验选项,并尝试通过在我的电脑中选择奇校验来执行通信。

根据规则,通信不应成功并生成奇偶校验不匹配错误。但是我可以在两端成功沟通。

如何检测升压串口编程中的奇偶校验不匹配?

0 个答案:

没有答案