通信协议中含有转义字符的处理方法
当通信协议中,有些帧含有转义字符,接收的时候需要去掉某些位的转义字符,接受的时候需要去掉转义字符。
- 接收的时候可以使用状态机形式进行接收,也可以进行分段式接收
#include <stdio.h>
// 定义状态机的状态
typedef enum {
STATE_WAIT_HEADER,
STATE_RECEIVING_DATA,
STATE_WAIT_TAIL,
} State;
void receiveSerialData() {
char buffer[255]; // 定义存储数据的缓冲区
int receivedLength = 0; // 已接收的数据长度
State state = STATE_WAIT_HEADER; // 初始状态为等待帧头
while (1) {
// 这里使用你自己的函数或方法接收串口数据到buffer中
// 接收的每个字节可以使用类似serialRead()函数读取
// 例如:buffer[receivedLength] = serialRead();
switch (state) {
case STATE_WAIT_HEADER:
// 等待帧头
if (buffer[receivedLength] == 0x7E) {