!= buf) {

//不等

char buf2[8] = {0x00, 0x06, 0x0F, 0xA0, 0x00, 0x01, 0x4A, 0xED};

send2UART(buf2, 8);

break;

}

}

//相等

}

}

void send2UART(const char *p, size_t len) {

Serial.write(p, len);

}

/*

串口数据接受进程

*/

void doUartTick()

{

if (Serial.available())

{ //读取串口数据

//每次读取一个字节的数据存储在这个buff中

uart_Receive_Buff [ uart_Receive_Index ++ ] = Serial.read();

//记录下读取这个数据的时间点

preUartTime = millis();

//判断读取到的数据长度是否超过设定的记录长度,超过长度时间点往前200ms 立即执行分析函数

if (uart_Receive_Index >= MAX_PACKETSIZE - 1) {

uart_Receive_Index = MAX_PACKETSIZE - 2;

preUartTime = preUartTime - 200;

}

}

//判断收到的最后一个字节后超过100ms开始执行分析函数

if (uart_Receive_Index > 0 && (millis() - preUartTime >= 100))

{ //处理串口数据

//把buff最后一个字节设为0,在字符串处理中很有用

uart_Receive_Buff [ uart_Receive_Index ] = 0x00;

Serial.flush();

//执行串口数据处理函数

parseUartPackage(uart_Receive_Buff, uart_Receive_Index);

uart_Receive_Index = 0;

}

}

void setup() {

Serial.begin(9600);

char buf[8] = {0x00, 0x06, 0x0F, 0xA0, 0x00, 0x01, 0x4A, 0xED};

send2UART(buf, 8);

}

void loop()

{

//调用串口数据处理进程

doUartTick();

}[/mw_shl_code]

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐