0

我正在使用这个库:https ://www.codeproject.com/Articles/688276/Canon-EDSDK-Tutorial-in-Csharp

我有多个相机(佳能 EOS 1300D)。我用 API 加载它们:

CanonAPI canonAPI = new CanonAPI();
List<Camera> cameras = canonAPI.GetCameraList();

然后我进行一些设置(将文件保存在 PC 中,而不是相机中并打开会话)。之后我想一次制作多张照片。就像彼此靠近一样。现在我能想到的只有这样:

foreach (Camera camera in cameras)
{
    camera.TakePhotoAsync();
}

可悲的是,这种方法有一点延迟。但是在多台摄像机(5)中,延迟大约是 200-300 毫秒(我想,不记得了),这太大了。

另一个信息:为了拍照,我使用 WPF 和按钮。相机通过 USB 集线器连接,没有 SD 卡,我将照片直接保存到计算机。一切正常,我需要立即拍照。

4

2 回答 2

1

尝试使用并行循环

Parallel.ForEach(cameras , camera =>
{
     //Your stuff
});

在使用文件和线程时要小心使用并行循环。您可以阅读有关并行循环的信息

于 2018-04-08T13:00:33.157 回答
0

为了解决我的项目中的串行执行延迟问题,我在多个相机之间并联了远程快门线。然后,我使用 USB 继电器触发远程快门线同时拍摄照片,并使用 downloadReady 事件下载图像。

于 2020-07-24T14:02:30.453 回答