Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于用IWR1843+DCA1000实时抓取数据并处理时遇到的问题。 #10

Open
zhoXR opened this issue Nov 20, 2023 · 11 comments
Open

Comments

@zhoXR
Copy link

zhoXR commented Nov 20, 2023

我在抓包的时候发现,每一帧和下一帧之间会丢失68个包,原因应该是第一帧的最后一个数据包中可能有第二帧的开头,导致第二帧开头找不到,直到找到第三帧时开始,所以第二帧的数据就丢失了,不知道我的理解对不对,如果正确的话,应该怎么修复代码?
还有一个问题是我发现抓包的延迟有点高,如果想优化的话,应该从哪里入手呢?
image

@gaoweifan
Copy link
Owner

如果你用的dca.fastRead_in_Cpp_thread_xxx() ("xxx" can be "start", "get" and "stop") ,那么是已经考虑到了你说的那种情况的。丢帧的原因大概是因为后处理速度慢于数据到达的速度,缓冲区大小是可以自定义的,即frameNumInBuf,如果数据没有及时取走数据,缓冲区满了就会导致未被取走的数据丢失,以腾出空间给新到来的数据。建议加大缓冲区并优化后处理程序,使其耗时小于捕获一帧数据的时间。

@zhoXR
Copy link
Author

zhoXR commented Nov 24, 2023

感谢您的解答,根据您描述的方法,我仔细检查并调试后发现仍然存在问题:
由于我想测试抓包的过程,所以没有对抓到的数据做后处理,所计算的时间只是抓包的时间。我的缓冲区设的是16,而每次抓取1帧,应该问题不出在此处。
我又做了测试,假如我把每次抓取的帧数设成n=2~16,结果发现,他们都会在抓取n帧之后,丢失一帧,如果是我上面提到的那种情况的话,应该如何修改代码啊

@gaoweifan
Copy link
Owner

好像当时确实是这么设计的,可以看看fpga_udp的C++代码main.cpp中的udp_read_thread_get_frames函数,并作出相应的修改。

@zhoXR
Copy link
Author

zhoXR commented Dec 6, 2023

非常感谢您的解答,我尝试对此函数进行一些修改。但是由于我的能力所限,无法完全实现我想要的效果。不知道您是否可以提供一些修改上建议和思路呢?非常感谢!

@gaoweifan
Copy link
Owner

我没记错的话当时应该是这样设计的:

  1. 有一个udp数据包接收队列,在一个udp接收线程里面每次从socket接收固定字节数据包(dca1000每次会发固定字节的udp数据过来,如果雷达最后一帧数据不足这么多字节则会补零,该数据包的结构可以看官方手册)存入该队列。
  2. 调用udp_read_thread_get_frames时会从该队列挨个取数据包出来看数据包的sequence number,如果刚好是一帧的开头所在的数据包,则会从该包开始,取指定帧数所需要的所有数据包出来,否则就会丢掉该包并检查下一个数据包的sequence number。

显然问题就在这里,如果要改的话,我推荐在udp接收线程里,取到数据包后不要直接存入队列,而是取payload放入一个连续的缓冲区,这个缓冲区刚好是一帧的大小的整数倍,等到达数据包填满这个缓冲区后再将一整帧存入队列,并将多余的数据(下一帧的开头)存入新的缓冲区的开头。这样你就能从队列里取出一整帧数据,而不会导致丢掉一部分下一帧开头的数据导致这帧无法利用被丢弃。

@Liwenlong524998
Copy link

您好,可以分享一下您的抓包程序吗,我的邮箱是 [email protected]

@Taoyyp
Copy link

Taoyyp commented Mar 20, 2024

您好,我在运行captureAll.py时候,有时会出现”[fpga_udp]udp time out“这个问题,请问是怎么回事?

@carrotlss
Copy link

您好,可以分享一下您的抓包程序吗,我的邮箱是 [email protected]

您好,也希望能分享一下,[email protected]

@zhoXR
Copy link
Author

zhoXR commented Apr 23, 2024

您好,可以分享一下您的抓包程序吗,我的邮箱是[email protected]

您好,也希望能分享一下,951173608 @qq.com
我用的就是作者的源代码

@zhoXR zhoXR closed this as completed Apr 23, 2024
@zhoXR zhoXR reopened this Apr 23, 2024
@DoubleMiaoLi
Copy link

您好,我在运行captureAll.py时候,有时会出现”[fpga_udp]udp time out“这个问题,请问是怎么回事?

您好,请问这个问题解决了吗?

@Taoyyp
Copy link

Taoyyp commented Jul 17, 2024

您好,我在运行captureAll.py时候,有时会出现”[fpga_udp]udp time out“这个问题,请问是怎么回事?

您好,请问这个问题解决了吗?

有时候程序端口占用了,所以会出现这种情况。具体我没有修改...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants