我需要帮助使用boost asio格式化我的写字符串。我使用ttyS0
与serial_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”。十六进制是否需要转换为二进制?谢谢。