0

我正在使用 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,这是 225 的“a”。由于这个问题,我总是在 128 到 255 之间。我尝试了不同的发送方法,结果总是相同的。欢迎任何建议。

4

1 回答 1

1

我解决了我的问题。问题是前面在评论中提到的数据位选项。所以永远不要相信默认值,尤其是在它可以保护以前的状态的情况下。所以我认为数据位选项以某种方式发生了变化,并且它总是使用该值。我通过摘要设置选项:

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

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

于 2013-02-08T10:28:03.093 回答