用boost asio write写字符串格式

时间:2016-04-06 03:04:57

标签: c++ serial-port boost-asio

我需要帮助使用boost asio格式化我的写字符串。我使用ttyS0serial_port创建了一个很好的连接,并且可以从我的串行设备中读取。我可以使用命令行启用我的串行设备,如echo -en '\x35\x0d' > ttyS0,现在我想用我的代码执行此操作。这个数据字符串会是什么样的?我的写功能是这样的:

void serial_comm::write_data(std::string data)
{
    try
    {
        if (serial_port.get() == NULL || !serial_port->is_open())
        {
            WARNING << "serial port is not open";
            throw -2;
        }
        boost::asio::write(
            *serial_port,
            boost::asio::buffer(data.c_str(), data.size()), 
            boost::asio::transfer_at_least(data.size()),
            error
        );
        if (error) 
        {
            ERROR << "error.message() >> " << error.message().c_str();
            throw -3;
        }       
        flush_serial_port(WRITE);
    }
    catch (const std::exception &e)
    {
        ERROR << "e.what() = " << e.what();
        throw -1;
    }

    return;
}

我试过使数据等于“0x35 0x0d”和“350d”。十六进制是否需要转换为二进制?谢谢。

0 个答案:

没有答案