关于51单片机串口1发送完整的数据包
在参考这样的协议的条件下我们想发送一套完整的数据包该如何发送呢?可以设计这样的程序。
1. 串行口1接收特定包头数据包函数。
参数: Uart_Rec_Data:串口接收到的数据 ; USER_Get_DataPacket: 数据存储目标数组。
返回: 0:未接收到完整的数据包; 1:接收到完整的数据包。
注:数组 USER_Get_DataPacket[2] 代表的是数据段的长度,通过【 数据段长度 + (地址,命令,数据长度标记码以及校验码的个数之和)= 数据包位的总个数】 及可判断数据包是否完整。
static uint8_t USER_Uart_1_Receive_DataPacket(uint8_t Uart_Rec_Data, uint8_t *USER_Get_DataPacket)
{
static uint8_t DataPacket_Sequence = 0; //定义数据包顺序静态变量并赋值为“0”
static uint16_t i = 3; //定义数据包存储位置静态变量并赋值为“3”
switch (DataPacket_Sequence)
{
case 0:
if (Uart_Rec_Data == 0x01) //判断数据包第0个数据
{
DataPacket_Sequence = 1; //跳转到下一个步骤
USER_Get_DataPacket[0