在 SoC 解决方案中,fpga 直接在 RAM 中保存大量整数值。 另一端的处理器可以看到此数据(整数),处理器应通过网络发送此数据,而无需使用 asio 库对其进行修改。 到目前为止,这个数据还不是太大,我将它复制到一个 vector 中,然后毫无问题地通过以太网发送它(请参阅代码)。 在当前的项目中,数据量已经增加(大约 200MB),我想直接从 ram 发送它,而不用之前将其复制为 vector 。当然我会把它分成几部分。 有没有办法直接从 void (void *ptr) 类型的 RAM 指针发送原始数据,或者有更好的方法来做到这一点?
提前致谢
std::vector<int> int_vect;
for( uint32_t i=from_index ; i<=to_index ; i++ )
{
int_vect.push_back(my_memory_ptr->get_value_axis(....));
}
asio::write(z_sock_ptr->socket_, asio::buffer(int_vect));
最佳答案
是的。 asio::buffer
的重载之一提供了 exactly this functionality:
mutable_buffer buffer(
void * data,
std::size_t size_in_bytes);
» more...
如果数据是连续的,我们可以这样使用它:
void* data = /* get data */;
size_t size = /* get size */;
asio::write(z_sock_ptr->socket_, asio::buffer(data, size));
关于c++ - 直接从 RAM 发送原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207742/