I think we need to start from scratch here.
First of all… have you optimized your network settings?
https://help.commonvisionblox.com/NextGen/14.0/md_theory_of_operation_hardware__gen_i_cam__c_v_b__user_guide.html#gcug_chmtopic26
Second:
The get_snapshot method being stuck is something we have not experienced and I assume, the problem is not in the method itself but somewhere along the acquisiton itself. The get_snapshot usually does nothing else but:
stream.start
stream.wait
stream.stop
This is something you usually dont want to do for every image on n cameras.
The better approach would be to trigger the cameras via software.
Storing the images as arrays in a queue is just fine, without that further explanation you provided me it sounded like you just did not know, that there is such a thing as the ringbuffer and with this way wanted to avoid loosing images.
My suggestion would be to load all cameras, configure all of them to being triggered via Software.
Example of software triggered acq
import os
import cvb
# Configure the TriggerMode of a camera and execute a SoftwareTrigger using GenApi
#Tested With Dalsa Genie Nano, names of Nodes may be different on other devices
# Load driver
device = cvb.DeviceFactory.open(os.path.join(cvb.install_path(), "drivers", "GenICam.vin"), port=0)
#Load NodeMap for the device
dev_node_map = device.node_maps["Device"]
#First set the TriggerMode
triggerModeNode = dev_node_map["TriggerMode"]
triggerModeNode.value = "On"
#Then choose TriggerSource (not available if TriggerMode not set)
triggerSourceNode = dev_node_map["TriggerSource"]
triggerSourceNode.value = "Software"
# Start stream to be able to get an image
device.stream.start()
#Then execute a SoftwareTrigger
softwareTrigger = dev_node_map["TriggerSoftware"]
softwareTrigger.execute()
#Now wait for the image and process it...
image = device.stream.wait().
```py
Now, start the stream on all cameras, no load will be put on the network, as no triggers and thus no images are sent.
When you want to get an images just execute the software trigger and wait for the image.
When you are done, stop the stream and thats it…
Cheers
Chris