我有一台科学相机,一台USB3Vision设备,我写了一个程序来捕捉图像。我在桌面上使用时没问题,每次都可以正常使用。如果我将完全相同的应用程序带到另一台(实际上是另外两台)计算机上,它会获取一张图像,但第二次挂起时会尝试捕获另一张图像。
我正在开发的桌面是Fedora 25,我在Fedora 24和25的干净安装上遇到了这个问题。另外,在两台计算机上,使用udev规则将USB设备的权限设置为666这不是一些权限错误。
如果我将gdb
附加到挂起的进程,则显示它正在等待对poll()
的阻止调用,我已经尝试等待了很长时间但它永远不会完成。这就是我现在有点不知所措的地方,我真的不知道该怎么做才能解决为什么那个电话永远不会在我的电脑上完成的原因。我也不确定如何确定不同计算机上的USB总线之间有什么不同,这可能也非常有用。
重新创建此问题的示例代码与IMO无关,但这是因为如果不包括它可能会被要求:
#include <arv.h>
#include <stdlib.h>
#include <stdio.h>
int
main (int argc, char **argv)
{
ArvCamera *camera;
ArvBuffer *buffer;
camera = arv_camera_new (argc > 1 ? argv[1] : NULL);
buffer = arv_camera_acquisition (camera, 0);
if (ARV_IS_BUFFER (buffer))
printf ("Image successfully acquired\n");
else
printf ("Failed to acquire a single image\n");
g_clear_object (&camera);
g_clear_object (&buffer);
return EXIT_SUCCESS;
}
这只是与GenICam型相机配合使用的Aravis库附带的测试程序之一。