import ctypes import os import sys # Add DLL directory to PATH dll_dir = os.path.join(os.path.dirname(__file__), "libs") old_path = os.environ.get("PATH", "") os.environ["PATH"] = dll_dir + os.pathsep + old_path # Load DLL with stdcall convention if hasattr(os, "add_dll_directory"): os.add_dll_directory(dll_dir) lib = ctypes.windll.LoadLibrary("atcore.dll") else: dll_path = os.path.join(dll_dir, "atcore.dll") lib = ctypes.windll.LoadLibrary(dll_path) # Restore PATH os.environ["PATH"] = old_path # Type definitions AT_H = ctypes.c_int AT_64 = ctypes.c_longlong # Constants AT_SUCCESS = 0 AT_HANDLE_SYSTEM = 1 # Define AT_InitialiseLibrary lib.AT_InitialiseLibrary.argtypes = [] lib.AT_InitialiseLibrary.restype = ctypes.c_int # Define AT_GetInt lib.AT_GetInt.argtypes = [AT_H, ctypes.c_wchar_p, ctypes.POINTER(AT_64)] lib.AT_GetInt.restype = ctypes.c_int # Define AT_FinaliseLibrary lib.AT_FinaliseLibrary.argtypes = [] lib.AT_FinaliseLibrary.restype = ctypes.c_int print("Initializing library...") ret = lib.AT_InitialiseLibrary() if ret != AT_SUCCESS: print(f"ERROR: Initialize failed, code: {ret}") exit(1) print("Initialize OK") # Get device count device_count = AT_64(0) ret = lib.AT_GetInt(AT_HANDLE_SYSTEM, "DeviceCount", ctypes.byref(device_count)) if ret != AT_SUCCESS: print(f"ERROR: Get device count failed, code: {ret}") else: print(f"Device count: {device_count.value}") # Finalize ret = lib.AT_FinaliseLibrary() if ret != AT_SUCCESS: print(f"ERROR: Finalize failed, code: {ret}") else: print("Finalize OK")