Boost串行写入错误数据发送

Boost串行写入错误数据发送,boost,serial-port,boost-asio,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

我正在使用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));
int data=97//代表“a”
字符串sendThis=“0”;
发送此[0]=(字符)数据;

我能解决我的问题吗。问题是前面评论中提到的数据位选项。因此,永远不要信任默认值,尤其是在它可以保护以前的状态的情况下。所以我认为不知何故,数据位选项改变了,它总是使用那个值。我通过摘要设置选项:

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

在那之后,它起了作用。然后我再次尝试通过注释设置选项。它又起作用了。所以我想它保护了以前的州。所以要小心使用默认值它们可能不再是默认值。

您的问题中缺少一些信息。串行端口是如何设置的?多少数据位?波特率115200,我没有改变其他值。所以我认为它是默认值8位,没有奇偶校验。明天我将尝试自己设置它们。默认值可能有问题。我设置了数据位选项,它工作了。谢谢你的关注。