通信协议中含有转义字符的处理方法

通信协议中含有转义字符的处理方法

当通信协议中,有些帧含有转义字符,接收的时候需要去掉某些位的转义字符,接受的时候需要去掉转义字符。

  • 接收的时候可以使用状态机形式进行接收,也可以进行分段式接收
#include 

// 定义状态机的状态
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) {
                    state = STATE_RECEIVING_DATA; // 切换到接收数据状态
                }
                break;

            case STATE_RECEIVING_DATA:
                // 接收数据
                if (buffer[receiv

你可能感兴趣的:(嵌入式,算法)