当通信协议中,有些帧含有转义字符,接收的时候需要去掉某些位的转义字符,接受的时候需要去掉转义字符。
#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