gpt4 book ai didi

c++ - 关于C++的问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:20:49 25 4
gpt4 key购买 nike

这对你们中的一些人来说可能很简单。

我正在查看以下串行读取函数,但我不太理解 &prefix[2] 在这里做了什么。是说只能填两个字节还是别的?

我还应该提到这是播放器/舞台平台的一部分。

while (1)
{
cnt = 0;
while (cnt != 1)
{
if ((cnt += read(fd, &prefix[2], 1)) < 0)
{
perror("Error reading packet header from robot connection: P2OSPacket():Receive():read():");
return (1);
}
}

if (prefix[0] == 0xFA && prefix[1] == 0xFB)
{
break;
}

GlobalTime->GetTimeDouble(&timestamp);

prefix[0] = prefix[1];
prefix[1] = prefix[2];

}

最佳答案

这个片段实现了一个大小为 3 的移位寄存器。

最旧的值在 prefix[0] 中,最新的在 prefix[2] 中。这就是 prefix[2] 的地址被传递给函数 read() 的原因。

循环离开,当前两个字节已经是FA FB时,当前(最后接收到的)字节在prefix[2]中。如果无法读取任何内容(read 的返回值不同于 1),则该函数会保留在该点之前。

当您无法预测是否在同步字符 FA FB 前面接收到其他字节时,使用此移位寄存器。每次读取操作读取三个字节将不允许同步数据流中的某处。

关于c++ - 关于C++的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5910196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com