GUI: Oberon A2 (
CameraViewer.Mod)
Görüntü İşleme: Julia (libdhmprocessing.so/.dll)
CameraViewer.Mod (Oberon GUI + WM pencereleri)
└─ FrameReceived() → ComputeAmplitude / Phase / Spectrum / Recon
└─ JuliaProcessing.Mod (Oberon FFI bridge)
└─ libdhmprocessing.dll / .so (Julia + FFTW)
Julia kütüphanesi yoksa Oberon yedek hesaplamalarına otomatik düşer.
CameraAPI-Package/
└── source/
├── NiImaq.Mod NI-IMAQ FFI (değişmedi)
├── CameraAPI.Mod Kamera oturumu (değişmedi)
├── CameraViewer.Mod GUI + Julia entegrasyonu ✏️
└── JuliaProcessing.Mod Julia DLL yükleyici (YENİ) 🆕
CameraAPI-Julia/
├── Project.toml
├── build_lib.jl PackageCompiler build scripti
├── precompile.jl AOT precompile execution
└── src/
├── CameraAPI.jl Ana modül
└── Processing.jl @ccallable C-ABI export'ları
cd CameraAPI-Julia
julia --project=. build_lib.jlÜretilen kütüphane:
- Linux/macOS:
build/lib/libdhmprocessing.so - Windows:
build/lib/libdhmprocessing.dll
İlk derleme ~5–10 dk sürebilir (PackageCompiler AOT).
Kütüphaneyi OberonA2'nin çalışma dizinine kopyala:
# Windows
copy build\lib\libdhmprocessing.dll C:\OberonA2\
# Linux/macOS
cp build/lib/libdhmprocessing.so ~/OberonA2/OberonA2 içinde sırayla:
Compiler.Compile source/NiImaq.Mod ~
Compiler.Compile source/CameraAPI.Mod ~
Compiler.Compile source/JuliaProcessing.Mod ~
Compiler.Compile source/CameraViewer.Mod ~
KernelLog'da şunu görmelisiniz:
[JuliaProcessing] libdhmprocessing.dll yüklendi.
[JuliaProcessing] Tüm fonksiyonlar hazır.
CameraViewer.Open "img0" ~
| Fonksiyon | Girdi | Algoritma |
|---|---|---|
dhm_init() |
— | Julia runtime başlat |
dhm_shutdown() |
— | Temizlik |
dhm_compute_amplitude(src, dst, w, h) |
BGRA8888 | √(R²+G²+B²)/√3 |
dhm_compute_phase(src, dst, w, h) |
BGRA8888 | atan2(G-R, B-R) → HSV |
dhm_compute_spectrum(src, dst, w, h) |
BGRA8888 | log|FFT₂D| (FFTW) |
dhm_compute_recon(src, dst, w, h, z, λ, px) |
BGRA8888 | ASM (stub) |
libdhmprocessing yüklenemediyse JuliaProcessing.Loaded = FALSE olur.
CameraViewer.Mod otomatik olarak orijinal Oberon hesaplamalarına döner —
sistem her zaman çalışmaya devam eder.