- edited description
GenICam Plugin: Issue with Mikrotron EoSens 4CXP with Active Silicon FireBird CoaXPress Frame Grabber (Quad CXP-6)
I want to use a Mikrotron EoSens 4CXP with an Active Silicon FireBird CoaXPress Frame Grabber (Quad CXP-6).
ITOM 4.0.0 (same as with 3.2.1 and 3.2.0) doesn’t seem to work. When e.g. executing the attached ‘itom_example.py’, I get a ‘timeout occurred' error, see 'itom_console_4.0.0.txt’ for the output of the console.
I discovered, that I can use my hardware setup with ITOM 3.1.0. When using this version, I get an image from executing the same script as above, see 'itom_console_3.1.0.txt’ for the output of the console.
Unfortunately, I cannot see the exact reason for this issue, but when looking into the commits I can identify the commit 'afa9a19
' as the first non-working. This seems rather strange to me, since this commit states 'GenICam: first running version for CoaXPress cameras' and even adds my hardware as tested (This plugin has been tested with the following cameras: … Mikrotron (CoaXPress) with Active Silicon Framegrabber (FireBird) …).
Comments (9)
-
reporter -
reporter - edited description
-
Hi Moritz,
Thanks for writing this issue. I will try to figure some things out but might probably need a little bit of help from you since I don't have access to a Mikrotron camera. I adapted the Genicam for CoaXPress cameras (which is much more complicated than USB or GigE) with the help of a student from another university a couple of years ago.
However I guess that I cannot start analyzing the problem within the next two weeks, since I am on holidays with limited internet access.
Best regards
Marc Gronle
-
reporter Hi Marc,
Thank you for the quick response. I’ll assist you if possible. Since 3.1.0 is working as a workaround, the issue is not urgent and thus no need to hurry.
Best regards
Moritz Straub
-
Hi Moritz,
if you have time, could you please check the values of the following parameters, e.g. using print(getParam(“xxx”)) before you start with startDevice:
- AcquisitionMode
- TriggerMode
- TriggerSource
Please modify your script and explicitily set AcquisitionMode to either Continuous or SingleFrame (I hope that both are possible, else one of these).
Please add a print-statement in python before acquire, startDevice and copyVal, such that I can better identify these commands in your log file.
Then please try the following combinations of the parameters above:
AcquisitionMode=Continuous, TriggerMode=Off, TriggerSource=Software
AcquisitionMode=Continuous, TriggerMode=On, TriggerSource=Software
AcquisitionMode=SingleFrame, TriggerMode=Off, TriggerSource=Software
AcquisitionMode=SingleFrame, TriggerMode=On, TriggerSource=Software
If you would provide the log files for these configurations, I hope to get more information. It would be sufficient to get the logs from the first setParam command on, e.g. by
cam = dataIO('GenICam', GenTLProducer='Active Silicon', verbose=3) clc() # clear the command line cam.setParam('integration_time', 0.019998) cam.setParam('TriggerMode', 'Off') cam.setParam('AcquisitionFrameRate', 50) cam.setParam('numBuffers', 5) img = dataObject() print("startDevice") cam.startDevice() print("acquire") cam.acquire() print("copyVal") cam.copyVal(img) plot(img)
Cheers
Marc
-
reporter - attached itom_4.0.0_triggermode_on.txt
- attached itom_4.0.0_triggermode_off.txt
-
reporter Hi Marc,
it seem like the setParam command sets the correct values. I can only choose Continuous as the AcquisitionMode, SingleFrame does not exist for my setup. As for the TriggerMode , I tried both options resulting in the same error (see itom_4.0.0_triggermode_off.txt and itom_4.0.0_triggermode_on.txt). The text files contain the console output for verbose level 5. Are there any other log files I could provide?
Here is the code I used:
cam = dataIO('GenICam', GenTLProducer='Active Silicon', verbose=5) clc() cam.setParam('integration_time', 0.019998) cam.setParam('AcquisitionFrameRate', 50) cam.setParam('numBuffers', 5) cam.setParam('AcquisitionMode', 'Continuous') # Continuous | SingleFrame print(cam.getParam('AcquisitionMode')) cam.setParam('TriggerMode', 'Off') # On | Off print(cam.getParam('TriggerMode')) cam.setParam('TriggerSource', 'Software') print(cam.getParam('TriggerSource')) img = dataObject() print('startDevice') cam.startDevice() print('acquire') cam.acquire() print('copyVal') cam.copyVal(img) plot(img) cam.stopDevice() del cam
Best regards
Moritz
-
Intermediate results:
-
The problem seems to be the command
m_stream->flushBuffers(GenTL::ACQ_QUEUE_ALL_TO_INPUT);
in the startDevice(…) method.
-
If this command is removed, the denoted camera from Mikrotron with an ActiveSilicon framegrabber seems to work.
- However, this command has been added in commit 58531b66 in order to support this “old” camera: Allied Vision, Goldeye G-008 SWIR (GigE)
- Cameras from Ximea, Baumer, other Allied Vision cameras, cameras from Vistek… seem to work without this command
Question:
The same command is also called if a timeout occurs when waiting for new buffers. How to handle this there?
This has to be tested a little bit more. Intermediate solution:
Make an additional init parameter to enable / disable this specific flush command in both startDevice() and waitForNewestBuffer(). Default: disabled.Todo: Test this with other cameras, especially the Goldeye G-008 SWIR.
-
-
- changed status to resolved
Fixes in pull request #16
- Log in to comment