Hello All,
I am currently struggling with the implementation of a sequencer for my camera using Python. I am able to enable the sequence and get the sequence working, but when I check the exposure time using exposure_node.value this will always return the value of the value set of the initial SequencerSetActive and not of the current element of the sequence. It this desired behavior or should the SequencerSetActive or SequencerSetSelector be incremented after taking an image?
def softTrigger(nImages):
for i in range(nImages):
images_in_buffer = stream.statistics[cvb.StreamInfo.NumBuffersPending]
print('Number of images in buffer: ', int(images_in_buffer))
trigger_software.execute()
print("sleep 1 sec for image ", i)
time.sleep(1)
with cvb.DeviceFactory.open(cvb.install_path()+"Drivers\GenICam.vin"
) as device:
dev_node_map = device.node_maps["Device"]
#set trigger
trigger_mode = dev_node_map["TriggerMode"]
trigger_source = dev_node_map["TriggerSource"]
trigger_mode.value = "On"
trigger_source.value = "Software"
trigger_software = dev_node_map["TriggerSoftware"]
print("Trigger: ",str(trigger_mode),str(trigger_source) )
#start stream
stream = device.stream()
ringBufferCount = stream.ring_buffer.count
print('Size ring buffer', ringBufferCount)
device.stream().start()
SequenceMode = dev_node_map['SequencerMode']
SequencerFeatureSelector = dev_node_map['SequencerFeatureSelector']
SequencerSetCount = dev_node_map['SequencerSetCount']
SequencerSetActive = dev_node_map ['SequencerSetActive']
print('Sequence: ', SequenceMode.value, ', Feature: ', SequencerFeatureSelector.value,'SequencerSetCount', SequencerSetCount.value, 'SequencerSetActive', SequencerSetActive.value )
SequenceMode.value = "On"
SequencerSetSelector= dev_node_map ['SequencerSetSelector']
SequencerSetSelector.value = 0 # 0 indexing
exposure_node = dev_node_map["ExposureTime"]
softTrigger(1)
print("Exposure time set to: " + str(exposure_node.value) + " " + exposure_node.unit + " sequence element: " + str(SequencerSetSelector.value))
SequencerSetSelector= dev_node_map ['SequencerSetSelector']
SequencerSetSelector.value = 1 # 0 indexing
exposure_node = dev_node_map["ExposureTime"]
print("Exposure time set to: " + str(exposure_node.value) + " " + exposure_node.unit + " sequence element: " + str(SequencerSetSelector.value))
SequencerSetSelector= dev_node_map ['SequencerSetSelector']
SequencerSetSelector.value = 2 # 0 indexing
exposure_node = dev_node_map["ExposureTime"]
print("Exposure time set to: " + str(exposure_node.value) + " " + exposure_node.unit + " sequence element: " + str(SequencerSetSelector.value))
SequencerSetSelector= dev_node_map ['SequencerSetSelector']
SequencerSetSelector.value = 3 # 0 indexing
exposure_node = dev_node_map["ExposureTime"]
print("Exposure time set to: " + str(exposure_node.value) + " " + exposure_node.unit + " sequence element: " + str(SequencerSetSelector.value))
With as results:
Trigger: On Software
Size ring buffer 3
Sequence: On , Feature: ExposureTime SequencerSetCount 5 SequencerSetActive 0
Number of images in buffer: 0
sleep 1 sec for image 0
Exposure time set to: 111.0 us sequence element: 0
Exposure time set to: 1234.0 us sequence element: 1
Exposure time set to: 56789.0 us sequence element: 2
Exposure time set to: 33333.0 us sequence element: 3
The increase observed here is due to setting the SequencerSetSelector manually.
OS: W10 x64
CVB version: 13.04.005
Camera: VC-25M10G-M41I0