I have a really strange problem. We have a setup, where we use three OV7251 in parallel, each with its own UC-628 + UC-425 USB shield. All three cameras are together on a USB hub and connected to a laptop, where I modified the C++ Arducam Streaming_Demo on Windows 10. I just open everything three times instead of once.
The problem is this: when I connect the cameras and run the program, there is a possibility that sometimes (say 50% of all cases) one camera reports either the USB_CAMERA_DATA_LEN_ERROR or the USB_CAMERA_USB_TIMEOUT_ERROR and does not display any picture. The configuration and start capturing always works, the errors occur only on the ArduCam_captureImage function of the captureImage_thread. A picture for the “faulty” cam is never displayed as there is always an error. If every camera displays a picture, the program runs very robust for a very long time without any problems and frame drops. The setup is not touched in between restarting the program. The picture is very clear when it is working and the data looks very good (it is used for machine learning).
I see also the same problem when I use three times the GUI USBTest program as described in the Hardware Trigger with External Signal (Featuring Multiple OV9281 Global Shutter Camera). We have a very similar setup.
We actually use a triggered camera configuration file but also with different config files without triggering this error occurs the same way.
This problem is extremely annoying, because we need to restart all the time our application until all three cameras work which takes some time in our setup.
What I have done so far:
- Used different config files for the UC-628 + UC-425
- tried a lot of delays in the cpp application between various setup and start calls
- tried to use a lot of global variables instead of local and checked that the handles are truly unique and not overwritten
- connected the cameras directly to the laptop instead of the USB hub
- Used the GUI as mentioned above, sometimes start a camera fully before configure and starting another or configuring sequentially and starting them sequentially
- A coworker did a separate implementation of the adapted Arducam Streaming_demo program and encountered the very same problem on a different laptop
- Use different USB hubs
The error always persisted and it is not possible to say that one action decreased the possibility of a startup error.
- camera: OV7251
- USB Shield: UC-628 + UC-425
- OS: Windows 10 Education 2004
- Visual Studio 16.5.0
- Arducam Git Checkout: ArduCAM_USB_Camera_Shield 68b42fe
Is it possible that you try this out on your side? Connect three OV7251 to the computer and use the GUI to open them simultaneously? Or better: use the cpp streaming_demo to do so? At that stage, I’m almost certain that the problem lies on the driver side, as we already used more than a week of work and multiple people to solve this issue.
Thank you very much for a quick reply