clvLabs / PyATEMMax

A Python library to monitor and control Blackmagic Design ATEM video switchers.
https://clvlabs.github.io/PyATEMMax/
GNU General Public License v3.0
79 stars 20 forks source link

About 25% of time, executing the ATEM events example script I get the following error #49

Closed Jibun-no-Kage closed 4 hours ago

Jibun-no-Kage commented 5 hours ago

About 25% of time, executing the ATEM events example script I get the following error, seems to happen at or just after the 'Connect Attempt' call back executes, so likely as the module is just completing connection to ATEM switcher? The 'On Connect' call back never seems to fire or report as fired.

Exception in thread Thread-14 (_commsThreadHandler):
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/threading.py", line 1041, in _bootstrap_inner
    self.run()
    ~~~~~~~~^^
  File "/usr/local/lib/python3.13/threading.py", line 992, in run
    self._target(*self._args, **self._kwargs)
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMConnectionManager.py", line 313, in _commsThreadHandler
    while self._runLoop():
          ~~~~~~~~~~~~~^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMConnectionManager.py", line 489, in _runLoop
    self._parsePacket(packetSize) # Parse EVERYTHING, don't trust packetLength !!
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMConnectionManager.py", line 722, in _parsePacket
    self._parseGetCommands(cmdStr)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMConnectionManager.py", line 739, in _parseGetCommands
    self._cmdHandlers[cmdStr]["callback"](cmdStr)  # Call method
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMCommandHandlers.py", line 92, in _mainHandler
    self._getHandler(cmdStr)()  # Call specific handler
    ~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMCommandHandlers.py", line 728, in _handleMPrp
    self._d.macro.properties[macroIndex].name = self._inBuf.getString(8, bytecount)
                                                ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "/root/Tally-Echo/lib/python3.13/site-packages/PyATEMMax/ATEMBuffer.py", line 228, in getString
    while index < (bufferIndex + numBytes) and self._buf[index]:
                                               ~~~~~~~~~^^^^^^^
IndexError: list index out of range
Jibun-no-Kage commented 4 hours ago

Closing... believe I found the issue... waitForConnection() was not being called in my version of events.py