genicam / harvesters

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

Node not existing upon ia.start() #338

Closed Karptinius closed 2 years ago

Karptinius commented 2 years ago

Describe the Bug On harvesters 1.3.6 when I try to start the acquisition with ia.start() or ia.start_acquisition(), I get the following error: Exception has occurred: AttributeError, Node not existing (see below). The error is not present if I revert to harvesters 1.3.2.

To Reproduce See code below.

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

h = Harvester()
h.add_file(path_to_gentl_cti_file)
h.update()
ia = h.create_image_acquirer(list_index=0, file_path = path_to_GiGE_description_xml_file)
ia.start()  # ia.start_acquisition()

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

>> ia.start()
  File "c:\Users\user\Desktop\test.py", line 37
    ia.start()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 2040, in start
    self.remote_device.node_map.TLParamsLocked.value = 1
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\genicam\genapi.py", line 2085, in __getattr__
    raise AttributeError from e
AttributeError
Traceback (most recent call last):
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\weakref.py", line 642, in _exitfunc
    f()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\weakref.py", line 566, in __call__
    return info.func(*info.args, **(info.kwargs or {}))
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 1668, in destroy
    self._release_data_streams()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 2457, in _release_data_streams   
    self._release_buffers()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 2475, in _release_buffers        
    _ = data_stream.revoke_buffer(buffer)
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 214, in m
    return getattr(self._source_object, attribute)(*args)
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\genicam\gentl.py", line 4090, in revoke_buffer
    ret = self._revoke_buffer(buffer)
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\genicam\gentl.py", line 4095, in _revoke_buffer
    return _gentl.DataStream__revoke_buffer(self, py_obj)
_gentl.BusyException: GenTL exception: Operation cannot be performed. Responsible module is busy. (Message from the source: A queued buffer can't be revoked) (ID: -1022)
Traceback (most recent call last):
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\weakref.py", line 642, in _exitfunc
    f()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\weakref.py", line 566, in __call__
    return info.func(*info.args, **(info.kwargs or {}))
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 3080, in _reset
    self._release_acquires()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 3070, in _release_acquires       
    ia.destroy()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 1668, in destroy
    self._release_data_streams()
    self._release_buffers()
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 2475, in _release_buffers        
    _ = data_stream.revoke_buffer(buffer)
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\harvesters\core.py", line 214, in m
    return getattr(self._source_object, attribute)(*args)
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\genicam\gentl.py", line 4090, in revoke_buffer
    ret = self._revoke_buffer(buffer)
  File "C:\Users\user\Anaconda3\envs\gengengen\lib\site-packages\genicam\gentl.py", line 4095, in _revoke_buffer
    return _gentl.DataStream__revoke_buffer(self, py_obj)
_gentl.BusyException: GenTL exception: Operation cannot be performed. Responsible module is busy. (Message from the source: A queued buffer can't be revoked) (ID: -1022)

Expected Behavior Start acquisition without issues.

Configuration

Reproducibility

This phenomenon can be stably reproduced:

See the code above.

Actions You Have Taken

Reverted back harvesters version to 1.3.2.

Additional context Add any other context about the problem here. GiGE_description.txt

kazunarikudo commented 2 years ago

@Karptinius Hi, thank you for the report. The issue has been fixed by #332 in the master so you can give that a try but I have not yet released the fixed version so it's not available at PyPI, either. I am planning to release it in the following days and will let you know once it's released. Thanks, Kazunari.

Karptinius commented 2 years ago

Hi @kazunarikudo, thank you for your answer and sorry to create a duplicate... I'll be looking forward to it ! And a big thanks for this great harvester which helps me a lot.

kazunarikudo commented 2 years ago

Please do not worry about that. Everything should have been fine if I had released it as soon as possible. Anyway, I am glad to know you liked Harvester.

kazunarikudo commented 2 years ago

@Karptinius Hi, I have just released version 1.3.7 and you can install it by executing the pip command. Feel free to create another ticket if it does not work for you.