RMVL
2.2.0-dev
Robotic Manipulation and Vision Library
|
上一篇教程:聚合类反射及其相关 API ↑
下一篇教程:工业自动化通信协议 OPC UA ↓
相关类 rm::SerialPort
串口通信是一种通过串行数据传输进行通信的方式。它使用串行接口将数据以逐位的方式进行传输,常用于连接计算机与外部设备、嵌入式系统之间的数据传输。
串口通信一般涉及两个主要概念: 串口 和 波特率 。
RS-232
、RS-485
、UART
等标准。每个串口都有相应的引脚用于发送和接收数据以及控制信号。rm::SerialPort 的构造函数原型如下
参数 | 含义 |
---|---|
device | 设备名,在 Windows 上一般是 COMx ,Linux 上一般为 ttyUSBx 或 ttyACMx |
mode | 串口通信模式,包含波特率 rm::BaudRate 和读取模式 rm::SerialReadMode |
rm::SerialPort 提供了极其方便的串口读取、写入的接口。
data | 读取、写入的数据 |
head | 帧头 |
tail | 帧尾 |
注解
写数据(视觉端 → 电控端)
SerialPort 的通信协议一般就是指数据链路层的协议,采用封装成帧的方式,由于终端设备输出缓冲区可在写入数据前被清空,因此 rm::SerialPort 的 write
方法不设置任何帧头帧尾。
读数据(电控端 → 视觉端)
而输入缓冲区则会持续收到来自下位机的数据,因此 rm::SerialPort 的 read
方法提供了两个 uint8_t
类型帧头帧尾的传入参数,下位机发送的数据需要在有效数据包前后设置两个 uint8_t
的校验位,帧头和帧尾具体的数据可自行设置。
需要注意的是,在读取数据前需要留意
#pragma pack
宏或使用 C++ 标准的 alignas
关键字