| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
Public 成员函数 | Protected 成员函数 | Protected 属性 | 所有成员列表
rm::SerialPort类 参考
数据 IO 与通信模块 » 串口通信

同步模式串行接口通信库 更多...

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

类 rm::SerialPort 继承关系图:
rm::SerialPort 的协作图:

## Public 成员函数
| SerialPort (std::string_view device, BaudRate baud_rate, SerialReadMode read_mode={})
| 构造新串口对象
template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>
bool | read (uint8_t head_flag, uint8_t tail_flag, Tp &data)
| 从串口读取数据到聚合体中
template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>
bool | read (Tp &data)
| 不带头尾标志的数据读取，从串口读取数据到聚合体中
bool | read (std::string &data)
| 不带头尾标志的数据读取，从串口读取字符串
template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp> || std::is_same_v<Tp, std::string>>>
SerialPort & | operator>> (Tp &data)
template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>
bool | write (const Tp &data)
| 数据写入串口
bool | write (std::string_view data)
| 写入字符串到串口
template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp> || std::is_same_v<Tp, std::string_view>>>
SerialPort & | operator<< (const Tp &data)
bool | isOpened () const
| 串口是否打开

## Protected 成员函数
long int | fdwrite (const void *data, size_t len)
| 写入数据（基于文件描述符）
long int | fdread (void *data, size_t len)
| 读取数据（基于文件描述符）

## Protected 属性
FileDescriptor | _fd {INVALID_FD}
| 文件描述符（文件句柄）
bool | _is_open {}
| 串口打开标志位
std::string | _device
| 设备名
BaudRate | _baud_rate
| 波特率
SerialReadMode | _read_mode
| 同步读取模式

## 详细描述

同步模式串行接口通信库

## 构造及析构函数说明

## ◆ SerialPort()

rm::SerialPort::SerialPort | ( | std::string_view | device,
|  | BaudRate | baud_rate,
|  | SerialReadMode | read_mode = {} )

Python:
| rm.SerialPort( | device, baud_rate[, read_mode] | ) -> | <SerialPort object>

构造新串口对象

参数

  [in] | device | 设备名
  [in] | baud_rate | 波特率
  [in] | read_mode | 读取模式

## 成员函数说明

## ◆ fdread()

long int rm::SerialPort::fdread | ( | void * | data,
|  | size_t | len )
| protected

读取数据（基于文件描述符）

函数调用图:

## ◆ fdwrite()

long int rm::SerialPort::fdwrite | ( | const void * | data,
|  | size_t | len )
| protected

写入数据（基于文件描述符）

函数调用图:

## ◆ isOpened()

bool rm::SerialPort::isOpened | ( |  | ) | const
| inline

串口是否打开

## ◆ operator<<()

template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp> || std::is_same_v<Tp, std::string_view>>>

SerialPort & rm::SerialPort::operator<< | ( | const Tp & | data | ) |
| inline

函数调用图:

## ◆ operator>>()

template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp> || std::is_same_v<Tp, std::string>>>

SerialPort & rm::SerialPort::operator>> | ( | Tp & | data | ) |
| inline

函数调用图:

## ◆ read() [1/3]

bool rm::SerialPort::read | ( | std::string & | data | ) |

Python:
| rm.SerialPort.read( |  | ) -> | res, data

不带头尾标志的数据读取，从串口读取字符串

参数

  [out] | data | 读取的字符串

返回
  是否读取成功

## ◆ read() [2/3]

template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>

bool rm::SerialPort::read | ( | Tp & | data | ) |
| inline

Python:
| rm.SerialPort.read( |  | ) -> | res, data

不带头尾标志的数据读取，从串口读取数据到聚合体中

模板参数

  Tp | 读取到聚合体的类型

参数

  [out] | data | 读取的聚合体数据

返回
  是否读取成功

函数调用图:

## ◆ read() [3/3]

template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>

bool rm::SerialPort::read | ( | uint8_t | head_flag,
|  | uint8_t | tail_flag,
|  | Tp & | data )
| inline

Python:
| rm.SerialPort.read( |  | ) -> | res, data

从串口读取数据到聚合体中

注解
  每次读取后会清空缓冲区

模板参数

  Tp | 读取到聚合体的类型

参数

  [in] | head_flag | 头帧
  [in] | tail_flag | 尾帧
  [out] | data | 读取的聚合体数据

返回
  是否读取成功

函数调用图:

## ◆ write() [1/2]

template<typename Tp, typename Enable = std::enable_if_t<std::is_aggregate_v<Tp>>>

bool rm::SerialPort::write | ( | const Tp & | data | ) |
| inline

Python:
| rm.SerialPort.write( | data | ) -> | res

数据写入串口

注解
  每次写入前会清空缓冲区

模板参数

  Tp | 写入聚合体的类型

参数

  [in] | data | 要写入的聚合体

返回
  是否写入成功

函数调用图:

## ◆ write() [2/2]

bool rm::SerialPort::write | ( | std::string_view | data | ) |
| inline

Python:
| rm.SerialPort.write( | data | ) -> | res

写入字符串到串口

参数

  [in] | data | 待写入的字符串

返回
  是否写入成功

函数调用图:

## 类成员变量说明

## ◆ _baud_rate

BaudRate rm::SerialPort::_baud_rate
| protected

波特率

## ◆ _device

std::string rm::SerialPort::_device
| protected

设备名

## ◆ _fd

FileDescriptor rm::SerialPort::_fd {INVALID_FD}
| protected

文件描述符（文件句柄）

## ◆ _is_open

bool rm::SerialPort::_is_open {}
| protected

串口打开标志位

## ◆ _read_mode

SerialReadMode rm::SerialPort::_read_mode
| protected

同步读取模式