怎么样接收一帧完整的数据

2019-08-01 15:16发布

接收缓冲区接收到一串数据,但是只有其中的一帧4个ff开头 83结尾的数据才能用,我怎么才能把它截取出来
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
12条回答
冰冷的游客
1楼-- · 2019-08-02 14:03
dirtwillfly 发表于 2014-7-2 22:26
一个51检测串口字符串命令的代码,你参考下吧:
// 调试命令检测函数
U8 CmpCmd(U8 chr);

你这没有关于接收到数据的处理啊,这是我接收到的一串数据00 00 83 ff ff ff ff 02 81 00 00 83 ff 00 c0 00 ff ff 20 81 但是我就要ff ff ff ff 02 81 00 00 83这段,我的协议是四个ff开头,83是校验位
dirtwillfly
2楼-- · 2019-08-02 14:59
冰冷的游客 发表于 2014-7-3 08:53
你这没有关于接收到数据的处理啊,这是我接收到的一串数据00 00 83 ff ff ff ff 02 81 00 00 83 ff 00 c0 ...

所以我说是参考啊
冰冷的游客
3楼-- · 2019-08-02 18:13
 精彩回答 2  元偷偷看……
电子缘科技
4楼-- · 2019-08-02 23:17

还没搞定呀?给你写一个吧,你试下

unsigned char Rdata[80];//接收缓冲区
unsigned char data[9];//需要数据缓冲----数了一下你的数据长度是9,具体多少你自己改下

unsigned char cnt,rcnt;//变量

for(cnt=0; cnt<80; cnt++)
{
        if((Rdata[cnt]==0xff) && (Rdata[cnt+1]==0xff) && (Rdata[cnt+2]==0xff) && (Rdata[cnt+3]==0xff) && (Rdata[cnt+8]==0x83))//符合协议条件,接收数据
        {
                for(rcnt=0; rcnt<9; rcnt++)
                {
                        data[rcnt] = Rdata[cnt];//从符合条件的cnt开始复制数据到data数组
                        cnt ++;                               
                }
                break;//接收完成退出
        }
}
i1mcu
5楼-- · 2019-08-03 01:52
读取帧头贞尾
i1mcu
6楼-- · 2019-08-03 06:56

一周热门 更多>