Boost串行写错发送数据

时间:2013-02-06 08:23:23

标签: boost serial-port boost-asio

我正在使用boost asio串口功能通过串口发送数据。我过去曾经使用它,它的工作原理ı想要的。但现在它表现得很奇怪。这是我用来发送数据的代码:

int data = 97;    //represents 'a'
string sendThis = "0";
sendThis[0] = (char)data;
cout<<sendThis<<" "<<data<<endl;
boost::asio::write(serial,boost::asio::buffer(sendThis,1));

问题在于:当我发送大于128的数据时,我得到了我发送的数据。但是当我尝试发送小于128的字符时;在另一边,我加了128,这是'a'的225。由于这个问题,我总是在128和255之间。我尝试了不同的发送方法,结果总是相同的。欢迎提出任何建议。

1 个答案:

答案 0 :(得分:1)

我解决了我的问题。问题是数据位选项,如前面评论中提到的那样。所以从不信任默认值,特别是在它可以保护以前的状态的情况下。所以我认为数据位选项有所改变,它总是使用该值。我按摘要设置选项:

serial_port_base::character_size x(8);
serial_port serial(io,"COM58");
serial.set_option(x);

之后它起作用了。比我通过评论设置选项再次尝试。它再次起作用。所以我想它可以保护以前的状态。所以要小心默认值。 它们可能不再是默认值。