genicam / harvesters

Image Acquisition Library for GenICam-based Machine Vision System
Apache License 2.0
521 stars 89 forks source link

Duplicate camera interfaces generated in device_info_list #478

Open phasesing opened 2 weeks ago

phasesing commented 2 weeks ago

Describe the Issue When attempting to connect to a camera, multiple instances of the same device are generated in device_info_list, with the only difference being the 'parent' key's genicam interface existing at a different memory address. This makes it effectively impossible to create an acquirer from a key except by locating the genicam interface pointer.

To Reproduce Steps to reproduce the behavior:

  1. See code

Sample Code

from harvesters.core import Harvester
h = Harvester()
h.add_file('C:/Program Files/STEMMER IMAGING/Common Vision Blox/GenICam/bin/win64_x64/TLIs/GEVTL.cti')
h.update()
print(h.device_info_list)

OUTPUT MODIFIED FOR READABILITY

>>> print(h.device_info_list)
[{'access_status': 1, 'display_name': 'Calibir GXM640 (00-01-0D-C5-57-0F )', 'id_': '::ID->00-01-0D-C5-57-0F::192.168.10.32', 'model': 'Calibir GXM640', 'parent': <genicam.gentl.Interface; proxy of <Swig Object of type 'std::shared_ptr< GenTLCpp::TLInterface > *' at 0x000001E612780720> >, 'serial_number': 'S1242307', 'thisown': True, 'tl_type': 'GEV', 'user_defined_name': '', 'vendor': 'Teledyne DALSA', 'version': None},
{'access_status': 1, 'display_name': 'Goldeye G-008 (4068080) (00-0F-31-F4-33-E1 )', 'id_': '::ID->00-0F-31-F4-33-E1::192.168.10.31', 'model': 'Goldeye G-008 (4068080)', 'parent': <genicam.gentl.Interface; proxy of <Swig Object of type 'std::shared_ptr< GenTLCpp::TLInterface > *' at 0x000001E6127807E0> >, 'serial_number': '08-406808003380', 'thisown': True, 'tl_type': 'GEV', 'user_defined_name': '', 'vendor': 'Allied Vision', 'version': None},
{'access_status': 1, 'display_name': 'Calibir GXM640 (00-01-0D-C5-57-0F )', 'id_': '::ID->00-01-0D-C5-57-0F::192.168.10.32', 'model': 'Calibir GXM640', 'parent': <genicam.gentl.Interface; proxy of <Swig Object of type 'std::shared_ptr< GenTLCpp::TLInterface > *' at 0x000001E612781AD0> >, 'serial_number': 'S1242307', 'thisown': True, 'tl_type': 'GEV', 'user_defined_name': '', 'vendor': 'Teledyne DALSA', 'version': None},
{'access_status': 1, 'display_name': 'Goldeye G-008 (4068080) (00-0F-31-F4-33-E1 )', 'id_': '::ID->00-0F-31-F4-33-E1::192.168.10.31', 'model': 'Goldeye G-008 (4068080)', 'parent': <genicam.gentl.Interface; proxy of <Swig Object of type 'std::shared_ptr< GenTLCpp::TLInterface > *' at 0x000001E612781B90> >, 'serial_number': '08-406808003380', 'thisown': True, 'tl_type': 'GEV', 'user_defined_name': '', 'vendor': 'Allied Vision', 'version': None}]

Expected Behavior I expect only one such interface to exist per camera.

Configuration

Reproducibility I can run the code as much as I want, in both interactive and terminal, the output does not change.

Actions You Have Taken I have done some ctl-f through harvesters documentation and searched existing closed and open issues with related terms. I have checked against the eBus player software and network pings, which only shows one camera instance each.

Additional context Attempting to connect to both instances of a single camera still results in an already in-use error, as expected.

MYCL94 commented 1 week ago

Hi phasesing,

You have to disable all of the GIGE Vision filter driver in your network adapter configuration.

image