Project

General

Profile

Unable to extract CTI from DLL

Added by Maurizio von Flotow about 3 years ago

I am trying to set up a Python project to communicate with a MityCAM-35MMFHDXS Evaluation Kit using Harvester, as outlined here: https://support.criticallink.com/redmine/projects/gentl_apps/wiki/Using_Python_With_Critical_Link_GenTL_Producer.
I made minimal modifications to the example snap.py (to match my GenTL Viewer directory).

---> Note that the camera has been ordered but has not yet shipped/arrived, so this is all preliminary work. <--

--
Issue
--
When I call the harvester function "add_cti_file" or "add_file" with the 'GenTL Viewer\bin\GenTL.dll', harvester complains with the following error: "GenTL exception: Failed to load CTI file; The specified module could not be found."

--
Attempts to fix:
--
-Add "GenTL Viewer\bin\" directory to PATH
-Download 'sim_camera.xml' and create the corresponding environment variable, as suggested here: https://support.criticallink.com/redmine/projects/gentl_apps/wiki/Running_the_GenTL_producer_in_simulated_mode

--
Questions:
--
Is the .cti file bundled into this GenTL.dll file?
Does a standalone .cti file exist from Critical Link?
Is a camera required for this .cti file to be generated by the GenTL.dll file?

-Maurizio


Replies (6)

RE: Unable to extract CTI from DLL - Added by Jonathan Cormier about 3 years ago

The dll file takes place of a cti file. Can you share what version of the GenTL viewer you are using? And the python version as well as the version of harvesters?

RE: Unable to extract CTI from DLL - Added by Maurizio von Flotow about 3 years ago

GenTL Viewer: 2.4.5
Python: 3.8.5
Harvester: 1.3.2

RE: Unable to extract CTI from DLL - Added by Jonathan Cormier about 3 years ago

Found an issue with the snap.py and instructions: The viewer installation path changed from "Gentle Viewer" to "GenTL Viewer" so they needed to be updated. Update instructions on wiki and uploaded an updated snap.py. Also fixed the deprecation warnings as well.

(gentl_37) C:\Users\jcormier\Documents>python snap.py
None
2021-12-14 16:51:24,983 - harvesters - INFO - Added c:\Program Files\Critical Link LLC\GenTL Viewer\bin\GenTL.dll to the CTI file list.
2021-12-14 16:51:24,984 - harvesters - INFO - Discarded the device information list.
2021-12-14 16:51:24,992 - harvesters - INFO - Initialized GenTL Producer, c:\Program Files\Critical Link LLC\GenTL Viewer\bin\GenTL.dll.
2021-12-14 16:51:24,994 - harvesters - INFO - Opened System module, criticallink/gentl.dll.
2021-12-14 16:51:24,995 - harvesters - INFO - Opened Interface module, Simulated.
2021-12-14 16:51:25,008 - harvesters - INFO - Opened Interface module, U3V.
2021-12-14 16:51:25,141 - harvesters - INFO - Updated the device information list.
Found 0 devices
[]
No devices found
2021-12-14 16:51:25,145 - harvesters - INFO - Started resetting the Harvester object.
2021-12-14 16:51:25,146 - harvesters - INFO - Removed the all CTI file from the list.
2021-12-14 16:51:25,147 - harvesters - INFO - Discarded the device information list.
2021-12-14 16:51:25,148 - harvesters - INFO - Closed Interface module, Simulated.
2021-12-14 16:51:25,150 - harvesters - INFO - Closed Interface module, U3V.
2021-12-14 16:51:25,151 - harvesters - INFO - Closed System module, criticallink/gentl.dll.
2021-12-14 16:51:25,154 - harvesters - INFO - Closed c:\Program Files\Critical Link LLC\GenTL Viewer\bin\GenTL.dll.
2021-12-14 16:51:25,156 - harvesters - INFO - Completed resetting the Harvester object.

Tried using the sim camera but it looks like it's not going to work with harvesters right now. Seems like harvesters doesn't like the XML path we are returning.

(gentl_37) C:\Users\jcormier\Documents>set SIMCAM_XML_FILE=C:\Users\jcormier\Documents\sim_camera.xml                         
(gentl_37) C:\Users\jcormier\Documents>python snap.py
...
2021-12-14 16:59:15,070 - harvesters - WARNING - Failed to open xml file /C:/Users/jcormier/Documents/sim_camera.xml. : RuntimeException thrown (file 'XmlParser.cpp', 
line 157)
Traceback (most recent call last):
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\harvesters\core.py", line 2313, in _get_port_connected_node_map
    node_map.load_xml_from_zip_file(file_path)
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\genicam\genapi.py", line 2010, in load_xml_from_zip_file
    return _genapi.NodeMap_load_xml_from_zip_file(self, ZipFileName)
_genapi.RuntimeException: File open failed in ParseXmlFile. Filename = '/C:/Users/jcormier/Documents/sim_camera.xml' : RuntimeException thrown (file 'XmlParser.cpp', line 131)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\harvesters\core.py", line 2316, in _get_port_connected_node_map
    node_map.load_xml_from_file(file_path)
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\genicam\genapi.py", line 2004, in load_xml_from_file
    return _genapi.NodeMap_load_xml_from_file(self, FileName)
_genapi.RuntimeException: Failed to open xml file /C:/Users/jcormier/Documents/sim_camera.xml. : RuntimeException thrown (file 'XmlParser.cpp', line 157)
Traceback (most recent call last):
  File "snap.py", line 41, in <module>
    ia = h.create_image_acquirer(list_index=0)
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\harvesters\core.py", line 3383, in create_image_acquirer
    file_dict=file_dict, do_clean_up=self._do_clean_up
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\harvesters\core.py", line 1772, in __init__
    file_dict=self._file_dict, do_clean_up=self._do_clean_up)
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\harvesters\core.py", line 2327, in _get_port_connected_node_map
    self._remove_intermediate_file(file_path)
  File "C:\Users\jcormier\.conda\envs\gentl_37\lib\site-packages\harvesters\core.py", line 2342, in _remove_intermediate_file
    os.remove(file_path)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: '/C:/Users/jcormier/Documents/sim_camera.xml'

RE: Unable to extract CTI from DLL - Added by Maurizio von Flotow about 3 years ago

It seems as though this issue is linked to using Anaconda's Spyder IDE.
If I run the file from Pycharm or directly from a command line (or in this case: "Anaconda Prompt"), the program complete successfully.

I was able to pick up on the minor instruction typo when originally implementing and did correctly set my path variable. So unfortunately that was not the issue for me.

Thanks for the help.

RE: Unable to extract CTI from DLL - Added by Maurizio von Flotow about 3 years ago

Final follow up on this issue:

Spyder is fine!
I just needed to restart Spyder to force it to update its environment variables (since I updated the PATH after I had originally opened Spyder).

RE: Unable to extract CTI from DLL - Added by Jonathan Cormier about 3 years ago

Glad you got it figured out

    (1-6/6)
    Go to top
    Add picture from clipboard (Maximum size: 1 GB)