![以太网摄像机导致网络驱动程序缓冲区破坏/内存拥塞?](https://linux22.com/image/1565978/%E4%BB%A5%E5%A4%AA%E7%BD%91%E6%91%84%E5%83%8F%E6%9C%BA%E5%AF%BC%E8%87%B4%E7%BD%91%E7%BB%9C%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E7%BC%93%E5%86%B2%E5%8C%BA%E7%A0%B4%E5%9D%8F%2F%E5%86%85%E5%AD%98%E6%8B%A5%E5%A1%9E%EF%BC%9F.png)
我们在连接到 Windows 10 机器的预留单个 1Gb 以太网端口上运行高分辨率相机。我们让相机在自动触发模式下运行,这样它就可以尽可能快地拍摄和发送图像 - 至少这是我从观察到的网络流量中推断出来的:一旦我们启动相机,以太网利用率就会上升到 Windows 机器上接收的约 580Mb。
但是:我们的图像处理软件 (HALCON) 不会抓取相机发送的每一帧。对于我们的任务来说,这不是问题(几乎是静态场景,我们只需要在大约 200 毫秒后处理完旧帧后再获取新帧),但尝试抓取下一图像会导致完全任意的延迟,持续时间从大约 100 毫秒到 20-30 秒不等。可疑的是,第一次抓取运行顺利,之后我们才会遇到不可预测的等待时间。这些延迟是否可能来自应用程序/网络驱动程序/操作系统(我不知道是哪一个)在接收数据流中拖延并丢弃旧数据包?有没有办法将一个网络接口上的 Windows 限制为几 MB 的接收缓冲区,这样它就不会尝试建立数百 MB 的数据流,而这些数据流无论如何都会被丢弃?
提前致谢
PS:抱歉,我的语言比较外行,我的背景是嵌入式工程。
PPS:Windows 防火墙已对所有端口禁用