| RMVL 2.3.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
专题 | 概念 | 类 | 类型定义 | 函数 | 变量
数据 IO 与通信模块
数据 IO 与通信模块 的协作图:

## 专题
| 进程间通信
| 提供跨平台的同步异步 命名管道 与 消息队列 通信功能
| 串口通信
| 提供跨平台的同步异步 串口 通信功能
| 网络通信
| 提供跨平台的同步异步 Socket 通信、HTTP 请求、HTTP Web 后端框架功能

## 概念
concept | rm::async::InvokableTask
| 可调用的协程任务概念

## 类
class | rm::async::Promise< Tp >
| 异步协程承诺 更多...
struct | rm::async::FinalAwaiter< Tp >
| `final_suspend` 等待器 更多...
class | rm::async::BasicPromise
| 协程承诺基类，管理协程的生命周期和异常处理 更多...
class | rm::async::Promise< void >
| 特化 `void` 类型的异步协程承诺 更多...
struct | rm::async::TaskAwaiter< Tp >
| 协程任务等待器 更多...
class | rm::async::Task< Tp >
| 保有 `rm::async::Promise` 的异步协程任务 更多...
class | rm::async::IOContext
| 异步 I/O 执行上下文，负责管理 IO 事件循环和协程任务的调度 更多...
class | rm::async::AsyncIOAwaiter
| IO 事件异步等待器 更多...
class | rm::async::AsyncReadAwaiter
| 通用异步读等待器，核心操作使用文件 I/O 系统调用的 `read`、`ReadFile`，使用者可以通过 更多...
class | rm::async::AsyncWriteAwaiter
| 通用异步写等待器，核心操作使用文件 I/O 系统调用的 `write`、`WriteFile`，使用者可以通过 更多...
class | rm::async::Timer
| 异步定时器 更多...
struct | rm::Translation
| 移动位置信息 更多...
struct | rm::Rotation
| 转动姿态信息 更多...
struct | rm::ImuData
| IMU 数据 更多...

## 类型定义
using | rm::FileDescriptor = int
| 文件描述符类型定义
using | rm::async::IOContextRef = std::reference_wrapper<IOContext>
| 异步 I/O 执行上下文左值引用包装器

## 函数
template<typename Callable, typename... Args> requires InvokableTask<Callable, Args...>
void | rm::async::co_spawn (IOContext &ctx, Callable &&fn, Args &&...args)
| 在指定的执行上下文中生成并调度一个协程任务
std::ostream & | rm::operator<< (std::ostream &os, const ImuData &data)
| 重载 IMU 数据的输入输出流操作符
std::istream & | rm::operator>> (std::istream &is, ImuData &data)
| 重载 IMU 数据的输入输出流操作符
void | rm::writeCorners (std::ostream &out, const std::vector< std::vector< std::array< float, 2 > > > &corners)
| 导出角点数据
void | rm::readCorners (std::istream &in, std::vector< std::vector< std::array< float, 2 > > > &corners)
| 导入角点数据

## 变量
constexpr FileDescriptor | rm::INVALID_FD = -1

## 详细描述

## 类型定义说明

## ◆ FileDescriptor

using rm::FileDescriptor = int

`#include <rmvl/io/async.hpp>`

文件描述符类型定义

## ◆ IOContextRef

using rm::async::IOContextRef = std::reference_wrapper<IOContext>

`#include <rmvl/io/async.hpp>`

异步 I/O 执行上下文左值引用包装器

## 函数说明

## ◆ co_spawn()

template<typename Callable, typename... Args>
requires InvokableTask<Callable, Args...>

void rm::async::co_spawn | ( | IOContext & | ctx,
|  | Callable && | fn,
|  | Args &&... | args )
| inline

`#include <rmvl/io/async.hpp>`

在指定的执行上下文中生成并调度一个协程任务

参数

  [in] | ctx | 执行上下文
  [in] | fn | 协程函数
  [in] | args | 协程函数参数

参见
  - 异步 I/O 执行上下文 IOContext::spawn

函数调用图:

## ◆ operator<<()

std::ostream & rm::operator<< | ( | std::ostream & | os,
|  | const ImuData & | data )
| inline

`#include <rmvl/io/util.hpp>`

重载 IMU 数据的输入输出流操作符

// 使用示例
ImuData data1{}, data2{};
std::cout << data1 << data2 << std::endl;
rm::ImuData
IMU 数据
定义 util.hpp:49

参数

  [in] | os | 输出流对象
  [in] | data | 待写入的 IMU 数据

返回
  输出流对象

函数调用图:

## ◆ operator>>()

std::istream & rm::operator>> | ( | std::istream & | is,
|  | ImuData & | data )
| inline

`#include <rmvl/io/util.hpp>`

重载 IMU 数据的输入输出流操作符

参数

  [in] | is | 输入流对象
  [out] | data | 读取出的 IMU 数据

返回
  输入流对象

函数调用图:

## ◆ readCorners()

void rm::readCorners | ( | std::istream & | in,
|  | std::vector< std::vector< std::array< float, 2 > > > & | corners )

`#include <rmvl/io/util.hpp>`

导入角点数据

- 读取的文件形如以下内容
  1.9, 2.11,
  3.12, 4.13, 5.14, 6.15,
  ---
  7.16, 8.17,
  ---
- 第一次调用 `readCorners` 时读取到的内容为 `{(1.9, 2.11)} 和 {(3.12, 4.13), (5.14, 6.15)}`

参数

  [in] | in | 输入流对象
  [out] | corners | 读取出的角点数据

## ◆ writeCorners()

void rm::writeCorners | ( | std::ostream & | out,
|  | const std::vector< std::vector< std::array< float, 2 > > > & | corners )

`#include <rmvl/io/util.hpp>`

导出角点数据

- 以 `corners` 的整体写入到输出流对象的末尾
- 文件内容可参见 readCorners

参数

  [in] | out | 输出流对象
  [in] | corners | 待写入的角点数据

## 变量说明

## ◆ INVALID_FD

FileDescriptor rm::INVALID_FD = -1
| constexpr

`#include <rmvl/io/async.hpp>`