genicam / harvesters

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

Connecting to a non-camera GigE Device #376

Open Dacyna opened 1 year ago

Dacyna commented 1 year ago

Describe the Issue I am trying to use Harvesters to control a Gig E light controller. The controller is a Gardasoft TR-RC120. I would like to modify the brightness parameter of the light to turn it on and off. Using the Matrix Vision CTI file I am able to see the light controller when printing h.device_info_list. When I try to create the ImageAquirer for the light controller an error is returned stating "IndexError: list index out of range".

To Reproduce Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Sample Code I can show a piece of code that demonstrates the reported phenomenon:

If yes, please provide a sample code:

from harvesters.core import Harvester

h = Harvester()
h.add_file('C:\\Program Files\\MATRIX VISION\\mvIMPACT Acquire\\Bin\\X64\\mvGenTLProducer.cti')

h.update()
print(h.device_info_list)

light = h.create()
light.destroy()

h.reset()

If applicable, please paste the actual output (its whole traceback, etc) here:

[{'access_status': 1, 'display_name': 'Gardasoft TR-RC120(e4:4e:18:07:02:93)', 'id_': 'TR-RC120(e4:4e:18:07:02:93)', 'model': 'TR-RC120', 'parent': <genicam.gentl.Interface; proxy of <Swig Object of type 'std::shared_ptr< GenTLCpp::TLInterface > *' at 0x000001F16D861F30> >, 'serial_number': '640659', 'thisown': True, 'tl_type': 'GEV', 'user_defined_name': '640659', 'vendor': 'Gardasoft', 'version': '03'}]
Traceback (most recent call last):
  File "C:/Local Projects/ULA Dispense Inspection/HarvestersTestWith.py", line 9, in <module>
    light = h.create()
  File "C:\Users\dacyNA\AppData\Local\Programs\Python\Python39\lib\site-packages\harvesters\core.py", line 2899, in create
    return self._create_acquirer(device_proxy=device_proxy, config=config)
  File "C:\Users\dacyNA\AppData\Local\Programs\Python\Python39\lib\site-packages\harvesters\core.py", line 2929, in _create_acquirer
    ia = ImageAcquirer(device_proxy=device_proxy_, config=config,
  File "C:\Users\dacyNA\AppData\Local\Programs\Python\Python39\lib\site-packages\harvesters\core.py", line 1602, in __init__
    self._min_num_buffers = self._data_streams[0].buffer_announce_min
IndexError: list index out of range

Expected Behavior I expected an ImageAquirer object to be created.

Screenshots If applicable, add screenshots to help explain your problem; Note that it is not necessary to put everything as a screenshot! If the source is a text just paste the text because that is much helpful for us.

Configuration

Reproducibility

This phenomenon can be stably reproduced:

If applicable, please provide your observation about the reproducibility.

I have tried using the h.create() function with added identifiers such as 'vendor': 'Gardasoft' and got the same result. I have tried connecting to the light controller while I had cameras connected to the network and I was able to create ImageAquirers for those, but the code will always throw the same error when trying to create the ImageAquirer for the light controller.

Any help with this issue would be very much appreciated!

Additional context Add any other context about the problem here.