以2019第十届国赛题目为例
这一部分赏析蚂蚁科技的代码
Windows下在txt文件中敲下回车键,然后16进制观察,你会发现获得了2个字符,0x0d和0x0a
回车='\r''\n'=0x0d+0x0a
if((uart_buf[uart_buf_index-1] == 0x0a)&&(uart_buf[uart_buf_index-2] == 0x0d))//拿到的数据帧的倒数后两位为帧尾,表示收到一个数据帧
{
if((uart_buf_index == 4)&&(uart_buf[0]=='S')&&(uart_buf[1]=='T'))//收到第一种指令ST
{
sprintf(uart_send_data_string,"$%02d,%5.2f\r\n",(unsigned int)juli_xianshi,wendu_xianshi);
}
else if ((uart_buf_index == 6)&&(uart_buf[0]=='P')&&(uart_buf[1]=='A')&&(uart_buf[2]=='R')&&(uart_buf[3]=='A'))//收到第二种指令PARA
{
sprintf(uart_send_data_string,"#%02d,%02d\r\n",(unsigned int)juli_canshu_xianshi,(unsigned int)wendu_canshu_xianshi);
}
else//其他情况
{
sprintf(uart_send_data_string,"ERROR\r\n");
}
Uart_Send_String(uart_send_data_string);//自动寻找最后一个位置为\0地方,控制发送结束
uart_buf_index = 0;
}
else if(uart_buf_index > 6)//表示一直没有收到想要的数据帧
{
sprintf(uart_send_data_string,"ERROR\r\n");
Uart_Send_String(uart_send_data_string);//自动寻找最后一个位置为\0地方,控制发送结束
uart_buf_index = 0;
}
实际烧录软件中操作为:
首先清空接收区,再输入ST后,按下回车键。