feat: add andor test 1
This commit is contained in:
2
.gitattributes
vendored
Normal file
2
.gitattributes
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.dll filter=lfs diff=lfs merge=lfs -text
|
||||
*.lib filter=lfs diff=lfs merge=lfs -text
|
||||
137
andor-test/01_init_and_discover.py
Normal file
137
andor-test/01_init_and_discover.py
Normal file
@@ -0,0 +1,137 @@
|
||||
"""
|
||||
Test 01: SDK Initialization and Device Discovery
|
||||
测试SDK初始化和设备发现功能
|
||||
|
||||
This script tests:
|
||||
1. Loading the Andor SDK3 DLL
|
||||
2. Initializing the SDK library
|
||||
3. Getting the number of connected cameras
|
||||
4. Finalizing the SDK library
|
||||
"""
|
||||
|
||||
import ctypes
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Constants from atcore.h
|
||||
AT_SUCCESS = 0
|
||||
AT_HANDLE_SYSTEM = 1
|
||||
AT_ERR_NOTINITIALISED = 1
|
||||
AT_ERR_DEVICENOTFOUND = 39
|
||||
|
||||
# DLL path - relative to script location
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
LIBS_PATH = os.path.join(SCRIPT_DIR, "libs")
|
||||
DLL_NAME = "atcore.dll"
|
||||
|
||||
|
||||
def test_init_and_discover():
|
||||
"""Test SDK initialization and device discovery."""
|
||||
|
||||
print("=" * 60)
|
||||
print("Test 01: SDK Initialization and Device Discovery")
|
||||
print("=" * 60)
|
||||
print()
|
||||
|
||||
# Step 1: Load DLL
|
||||
print("[1/4] Loading Andor SDK DLL...")
|
||||
try:
|
||||
# Add libs directory to DLL search path
|
||||
if not os.path.exists(LIBS_PATH):
|
||||
print(f"❌ Error: libs folder not found at {LIBS_PATH}")
|
||||
return False
|
||||
|
||||
# For Windows, add the directory to DLL search path
|
||||
if sys.platform == 'win32':
|
||||
if hasattr(os, 'add_dll_directory'):
|
||||
# Python 3.8+
|
||||
os.add_dll_directory(LIBS_PATH)
|
||||
else:
|
||||
# Python 3.7 and earlier
|
||||
os.environ['PATH'] = LIBS_PATH + os.pathsep + os.environ.get('PATH', '')
|
||||
|
||||
dll_path = os.path.join(LIBS_PATH, DLL_NAME)
|
||||
if not os.path.exists(dll_path):
|
||||
print(f"❌ Error: DLL not found at {dll_path}")
|
||||
return False
|
||||
|
||||
atcore = ctypes.cdll.LoadLibrary(dll_path)
|
||||
print(f"✓ DLL loaded successfully: {dll_path}")
|
||||
except Exception as e:
|
||||
print(f"❌ Error loading DLL: {e}")
|
||||
return False
|
||||
|
||||
print()
|
||||
|
||||
# Step 2: Initialize SDK
|
||||
print("[2/4] Initializing SDK library...")
|
||||
try:
|
||||
ret = atcore.AT_InitialiseLibrary()
|
||||
if ret != AT_SUCCESS:
|
||||
print(f"❌ Failed to initialize library, error code: {ret}")
|
||||
return False
|
||||
print("✓ SDK library initialized successfully")
|
||||
except Exception as e:
|
||||
print(f"❌ Error during initialization: {e}")
|
||||
return False
|
||||
|
||||
print()
|
||||
|
||||
# Step 3: Get device count
|
||||
print("[3/4] Detecting connected cameras...")
|
||||
try:
|
||||
device_count = ctypes.c_longlong(0)
|
||||
ret = atcore.AT_GetInt(
|
||||
AT_HANDLE_SYSTEM,
|
||||
"Device Count".encode('utf-16le') + b'\x00\x00',
|
||||
ctypes.byref(device_count)
|
||||
)
|
||||
|
||||
if ret != AT_SUCCESS:
|
||||
print(f"❌ Failed to get device count, error code: {ret}")
|
||||
else:
|
||||
print(f"✓ Device count retrieved successfully")
|
||||
print(f" Number of cameras detected: {device_count.value}")
|
||||
|
||||
if device_count.value == 0:
|
||||
print(" ⚠ Warning: No cameras detected!")
|
||||
elif device_count.value > 0:
|
||||
print(f" ✓ Found {device_count.value} camera(s)")
|
||||
except Exception as e:
|
||||
print(f"❌ Error getting device count: {e}")
|
||||
device_count = None
|
||||
|
||||
print()
|
||||
|
||||
# Step 4: Finalize SDK
|
||||
print("[4/4] Finalizing SDK library...")
|
||||
try:
|
||||
ret = atcore.AT_FinaliseLibrary()
|
||||
if ret != AT_SUCCESS:
|
||||
print(f"❌ Failed to finalize library, error code: {ret}")
|
||||
return False
|
||||
print("✓ SDK library finalized successfully")
|
||||
except Exception as e:
|
||||
print(f"❌ Error during finalization: {e}")
|
||||
return False
|
||||
|
||||
print()
|
||||
print("=" * 60)
|
||||
|
||||
# Summary
|
||||
if device_count is not None and device_count.value > 0:
|
||||
print("✓ TEST PASSED: SDK initialization and device discovery successful")
|
||||
print(f" {device_count.value} camera(s) detected")
|
||||
return True
|
||||
elif device_count is not None and device_count.value == 0:
|
||||
print("⚠ TEST COMPLETED WITH WARNING: SDK works but no cameras detected")
|
||||
print(" This is normal if no camera is connected")
|
||||
return True
|
||||
else:
|
||||
print("❌ TEST FAILED: Could not complete device discovery")
|
||||
return False
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = test_init_and_discover()
|
||||
sys.exit(0 if success else 1)
|
||||
BIN
andor-test/libs/atblkbx.dll
LFS
Normal file
BIN
andor-test/libs/atblkbx.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atcl_bitflow.dll
LFS
Normal file
BIN
andor-test/libs/atcl_bitflow.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atcore.dll
LFS
Normal file
BIN
andor-test/libs/atcore.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atcorem.lib
LFS
Normal file
BIN
andor-test/libs/atcorem.lib
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atdevapogee.dll
LFS
Normal file
BIN
andor-test/libs/atdevapogee.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atdevregcam.dll
LFS
Normal file
BIN
andor-test/libs/atdevregcam.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atdevsimcam.dll
LFS
Normal file
BIN
andor-test/libs/atdevsimcam.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atmcd64d.dll
LFS
Normal file
BIN
andor-test/libs/atmcd64d.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atmcd64m.lib
LFS
Normal file
BIN
andor-test/libs/atmcd64m.lib
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atspooler.dll
LFS
Normal file
BIN
andor-test/libs/atspooler.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atusb_libusb.dll
LFS
Normal file
BIN
andor-test/libs/atusb_libusb.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atusb_libusb10.dll
LFS
Normal file
BIN
andor-test/libs/atusb_libusb10.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atutility.dll
LFS
Normal file
BIN
andor-test/libs/atutility.dll
LFS
Normal file
Binary file not shown.
BIN
andor-test/libs/atutilitym.lib
LFS
Normal file
BIN
andor-test/libs/atutilitym.lib
LFS
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user