【发布时间】:2016-01-29 02:54:34
【问题描述】:
我正在从串行端口读取数据。我设法设置了端口,并且可以读入缓冲区,但我不知道如何将缓冲区保存的数据转换为浮点数。
float Serial::ReadData()
{
boost::asio::streambuf buff;
int bytesRead = read_until(*port, buff, "\n");
boost::asio::const_buffers_1 constBuff = buff.data();
char*data = nullptr;
int pos = 0;
for (auto buffer = constBuff.begin(); buffer != constBuff.end(); buffer++)
{
data[pos] = reinterpret_cast<char>(buffer);
pos++;
}
buff.consume(bytesRead);
return atof(data);
}
【问题讨论】:
-
您甚至没有指定 streambuf 包含的内容。是二进制的吗? ASCII?基数64?压缩? IEEE 原始字节?'
-
我正在从连接到 com 端口的蓝牙读取数据,所以我相信它正在发送原始字节。
-
在这种情况下,您的自我回答完全没有意义。 en.cppreference.com/w/cpp/string/byte/atof 更重要的是,除非你知道确切的电汇格式,否则没有人能真正回答。请注意,我的回答在逻辑上与您的
atof相同。我要冒昧地提出建议 - 显然 - 你已经发现格式是文本表示。 -
这种情况下一定是Ascii。
标签: c++ boost serial-port