|
发表于 2021-5-13 16:40:48
|
显示全部楼层
问个问题
功能:协议数据解析*/
void ParseBuffer(void)
{
uint16_t frame_length = 0;/*一帧数据的总长度*/
uint16_t i = 0, temp_len = 0;
uint8_t has_content = 0;/*buf中是否有数据*/
uint8_t frame_error = 0;/*缓存区当前的数据对所有协议都不满足*/
uint8_t* p_buf= Uart2_Rx;/*串口接受数组首地址*/
protocol_type_t protl_type = PROTOCOL_UNKNOWN;/*协议类型UNKNOWN*/
frame_result_t find_frame_re = UNKNOWN;/*一帧协议类型UNKNOWN*/
//用来保存每个协议解析后的结果
//frame_results[0] 保存PROTOCOL_DL_T_645协议解析结果
//frame_results[1] 保存PROTOCOL_DL_T_698协议解析结果
frame_result_t frame_results[2] = {UNKNOWN, UNKNOWN};
has_content = uart2_rx_count > 2;
while (has_content) {
p_buf = Uart2_Rx;
//检索0x5A开头的数据
while (*p_buf != 0x5A && p_buf < Uart2_Rx + uart2_rx_count) {
p_buf ++;
}
if (p_buf == Uart2_Rx + uart2_rx_count) {
//检索当前包数据,都不包含,清空
uart2_rx_count = 0;
break;
}
//Uart2_Rx中剩余的数据长度
temp_len = uart2_rx_count - (p_buf - Uart2_Rx);
//以下处理不包含校验
switch(protl_type)
{
case PROTOCOL_UNKNOWN:
memset(frame_buf,0,sizeof(frame_buf));
find_frame_re = UNKNOWN;
frame_error = 0;
frame_length = 0;
程序中 protl_type只看到定义了
protocol_type_t protl_type = PROTOCOL_UNKNOWN;/*协议类型UNKNOWN*/
并没有看到它的使用 那么它的值是怎么改变的?在哪里改变的? |
|