求思路,串口接收不固定数据长度包,可以怎么处理

2020-01-26 13:03发布

对帧头和帧尾都不做处理的吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
26条回答
lcw_swust
1楼-- · 2020-01-28 12:03
 精彩回答 2  元偷偷看……
mbass51
2楼-- · 2020-01-28 16:13
没有帧头帧尾,又没有长度信息,那除了字符间隔还能有啥办法
mbass51
3楼-- · 2020-01-28 17:04
如果对发送方无法做限制:

用一个定时器做接收超时, 这种效果最好.
如果定时器实在挪不出来. 在无线循环与接收中断中使用状态机机制.
vtte
4楼-- · 2020-01-28 18:06
shijianzhou
5楼-- · 2020-01-28 19:53
unsigned int i;
void main(void)
{
    .........


    i = 0;
    while(1)
    {
        if(i)
        {
            i++;
           if(i > (根据循环工作量取得一个常量经验值))
            {
                  // 认为接收到一帧, 对接收到的数据帧进行处理;
                  // 未防止接收数据丢失, 开启两个接收缓冲区, 关中断, 处理数据前切换接收缓冲区,  将 i 赋值为0等安全操作..... 重新开中断.
            }
        }
    }
}


void uartisr(void) interrupt 4
{
      if(RI)
      {
            RI = 0;

            // 将接收到的数据放入缓冲
             ........

            i = 1;
      }
}
asj1989
6楼-- · 2020-01-28 23:39
 精彩回答 2  元偷偷看……

一周热门 更多>