Jump to content

Arano

New member
  • Posts

    1
  • Joined

  • Last visited

Posts posted by Arano

  1. Hey forum,

     

    I am trying to use a DLL inside a cura plugin but for some reason it wil not load the DLL for me.

    i have a DLL set up that gives coordinates comming from our eye tracker and sends them to the python script.

    i have a python script (Script A) that calls this DLL and has a few easy calls for other python scripts to use.

     

    Calling Script A from command line (going through __main__) it loads the DLL and starts outputting coords in a while loop on my cmd window.

    When trying to use this Script A in another Script B it does not seem to load the DLL.

     

    Error Message:

     

    2020-08-06 13:45:26,268 - ERROR - [MainThread] UM.Logger.logException [84]: Exception: Error loading plugin PrepareStageSR:
    2020-08-06 13:45:26,271 - ERROR - [MainThread] UM.Logger.logException [88]: Traceback (most recent call last):
    2020-08-06 13:45:26,273 - ERROR - [MainThread] UM.Logger.logException [88]:   File "D:\Git\Cura Project\Uranium\UM\PluginRegistry.py", line 379, in loadPlugin
    2020-08-06 13:45:26,274 - ERROR - [MainThread] UM.Logger.logException [88]:     to_register = plugin.register(self._application)  # type: ignore  # We catch AttributeError on this in case register() doesn't exist.
    2020-08-06 13:45:26,276 - ERROR - [MainThread] UM.Logger.logException [88]:   File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\__init__.py", line 19, in register
    2020-08-06 13:45:26,278 - ERROR - [MainThread] UM.Logger.logException [88]:     "stage": PrepareStage.PrepareStage()
    2020-08-06 13:45:26,280 - ERROR - [MainThread] UM.Logger.logException [88]:   File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\PrepareStage.py", line 14, in __init__
    2020-08-06 13:45:26,281 - ERROR - [MainThread] UM.Logger.logException [88]:     sr = SR()
    2020-08-06 13:45:26,282 - ERROR - [MainThread] UM.Logger.logException [88]:   File "D:\Git\Cura Project\Cura\cura\..\plugins\PrepareStageSR\SR_EyeCoords.py", line 36, in __init__
    2020-08-06 13:45:26,283 - ERROR - [MainThread] UM.Logger.logException [88]:     self.c_lib = ctypes.CDLL("SRPython")
    2020-08-06 13:45:26,284 - ERROR - [MainThread] UM.Logger.logException [88]:   File "C:\Users\tom.hendriks\AppData\Local\Programs\Python\Python35\lib\ctypes\__init__.py", line 351, in __init__
    2020-08-06 13:45:26,286 - ERROR - [MainThread] UM.Logger.logException [88]:     self._handle = _dlopen(self._name, mode)
    2020-08-06 13:45:26,287 - ERROR - [MainThread] UM.Logger.logException [88]: OSError: [WinError 126] The specified module could not be found



    my "SR_EyeCoords.py" (calling __main__ does work!)

    import ctypes
    import pathlib
    import time
    
    class SR_Eye:
    	__slots__ = ["x", "y", "z"]
    	def __init__(self, x=0, y=0, z=0):
    		self.x = x
    		self.y = y
    		self.z = z
    	def __str__(self):
    		return (str(self.x) + ", " + str(self.y) + ", " + str(self.z))
    
    class SR_EyePair:
    	__slots__ = ["left", "right"]
    	def __init__(self, left, right):
    		self.left = left
    		self.right = right
    	def __str__(self):
    		return (str(self.left) + " : " + str(self.right))
    
    class SR:
    	def __init__(self):
    		self.c_lib = ctypes.CDLL("SRPython")
    		self.c_lib.Setup()
    		self.c_lib.GetEyeValue.restype = ctypes.c_float
    	def GetCurrentEyePair(self):
    		lx = self.c_lib.GetEyeValue(0,0)
    		ly = self.c_lib.GetEyeValue(0,1)
    		lz = self.c_lib.GetEyeValue(0,2)
    		rx = self.c_lib.GetEyeValue(1,0)
    		ry = self.c_lib.GetEyeValue(1,1)
    		rz = self.c_lib.GetEyeValue(1,2)
    		eyeL = SR_Eye(lx,ly,lz)
    		eyeR = SR_Eye(rx,ry,rz)
    		eyePair = SR_EyePair(eyeL, eyeR)
    		return eyePair
    	
    if __name__ == '__main__':
    	# SR_EyeCoords.py executed as script outputs eye Coord every second
    	sr = SR()
    	while 1:
    		print(sr.GetCurrentEyePair())	
    		time.sleep(1) #sleep for 1 second


    Snippet of the PrepareStage.py (using a coppy of the normal preparestage as a base since i'm not that familiar with the plugin development yet)

     

    from cura.Stages.CuraStage import CuraStage
    
    from PrepareStageSR.SR_EyeCoords import *
    
    ##  Stage for preparing model (slicing).
    class PrepareStage(CuraStage):
        def __init__(self, parent = None):
            sr = SR()                                      #crash on this line
            eyePair = sr.GetCurrentEyePair()

     

×
×
  • Create New...