Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用boost asio写入写入字符串格式_C++_Serial Port_Boost Asio - Fatal编程技术网

C++ 使用boost asio写入写入字符串格式

C++ 使用boost asio写入写入字符串格式,c++,serial-port,boost-asio,C++,Serial Port,Boost Asio,我需要使用boost asio格式化我的写入字符串。我使用ttyS0fine和serial\u port创建连接,并且可以从串行设备fine读取数据。我可以使用命令行启用串行设备,如soecho-en'\x35\x0d'>ttyS0,现在我想用我的代码来实现这一点。这个数据字符串是什么样子的?我的写入函数如下所示: void serial_comm::write_data(std::string data) { try { if (serial_port.get(

我需要使用boost asio格式化我的写入字符串。我使用
ttyS0
fine和
serial\u port
创建连接,并且可以从串行设备fine读取数据。我可以使用命令行启用串行设备,如so
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;
}
void串行通信::写入数据(std::字符串数据)
{
尝试
{
如果(串行端口.get()==NULL | | |!串行端口->是开放的())
{

警告:您是否尝试发送字符串
“\x35\x0D”
?(这是一个两个字符长的字符串,其中第一个字符为35十六进制,第二个字符为0D十六进制,使用
\x
转义序列根据其十六进制值插入字符)@不,我没有;我不知道你能做那件事;我下次上班时会试试chance@immibis是的,这很有效,谢谢。我如何将(char)5&(char)CR转换为二进制以进行asio写入?什么是“将它们转换为二进制”意思是?@immibis我正在尝试编写一个函数,它可以做与
\x35\x0D
相同的事情,但是动态的。我知道
\x
用十六进制表示法表示ASCII字符,但我认为它是二进制表示,这就是为什么它可以代替350D的原因