LAT Hologramm-Software 2.0
Loading...
Searching...
No Matches
SLM.m
Go to the documentation of this file.
1classdef (Abstract) SLM < Device
2
3
4 properties (Access = public)
5 active;
7 %General Settings
8 pixelX;
9 pixelY;
10 pixelPitch = 1; %mm
11 grayLevels;
12 phaseMax;
13
14 %Calibration Setting
15 addDisplacementCorrection = true;
16 displacementX = 0; %mm
17 displacementY = 0; %mm
18 angleCalibrationFactor = 1;
19 lensCalibrationFactor = 1;
20
21 AIOSLM = 0;
22 resizeBehaviour = 'stretch';
23
24 %Play Opions
25 loops = 1;
26
27 framerate_mode = 'fixed'; %'fixed', 'fromFile' %Anzeigedauer der Bilder: Fixed = Fester Wert '1/Framerate'; fromFile = Die Anzeigedauer wird einer Datei entnommen, de während der Hologrammberechnung erzeugt wird.
28 framerate = 1; %[Hz]
29 controlLaserEmission = false;
30 showStatus = false;
32 paused = true;
33
34 %Video Settings
35 videoFolder;
36 imgList;
37 actualImageNo = 0;
38
39 end
40
41 methods (Abstract)
42 sendImage(obj,image);
43 showBlankScreen(obj);
44 end
46 methods
47
48 function loadVideo(obj,folder)
49
50
51 obj.videoFolder = folder;
52
53 files = dir(obj.videoFolder); %Alle Dateien aus Liste auslesen
54 names = {files.name};
55 nImg = size(names,2);
56 obj.imgList =[];
57
58 for i = 1:1:nImg
59 path = strcat(obj.videoFolder,'\',names{1,i});%Achtung, andere Schreibweise, da Typ Cell
60 %Prüfen, ob Bilddatei vom Typ png,jpg oder bmp ist, alle anderen Dateien ignorieren
61 if(strlength(path)>3)
62 if(extractBetween(path,strlength(path)-2,strlength(path))=="png" || ...
63 extractBetween(path,strlength(path)-2,strlength(path))=="bmp" ||...
64 extractBetween(path,strlength(path)-2,strlength(path))=="jpg")
65 obj.imgList = [obj.imgList; string(path)];
66
67 end
68 end
69 end
70 %Bild vom SLM löschen und aktuelles Bild zurücksetzen
72 obj.showBlankScreen();
73 end
74
75 function playVideo(obj)
77 obj.paused = false;
78 %Erst Anzeigedauern laden
79 displayTime=0;%[s]
80 if (obj.framerate_mode == "fixed")
81 displayTime = ones(size(obj.imgList))./obj.framerate;
82
83 elseif(obj.framerate_mode == "fromFile")
84 disp("Method not implemented yet");
85 %#fehlt noch
86 else
87 %#Warnung
88 end
89 %Loop
90 for loop = 1:1:obj.loops
91 for n = 1:1:size(obj.imgList)
92 if(obj.paused==false)
93 %#Fehlermeldung, wenn kein Laser verbunden
94 obj.sendImage(single(imread(obj.imgList(n)))./255);
95 if(obj.controlLaserEmission)
96 setWS('Laser','timer',displayTime(n));%#nicht schön gelöst
97 evalin('base','Laser.laserTime(Laser.timer);');%Schaltet den Laser ein
98 end
99 pause(displayTime);
100 else
101 obj.actualImageNo = n;
102 break;
103 end
104 end
105 end
106 end
107 function sendImageNo(obj)
108 if(obj.actualImageNo == 0)
109 obj.showBlankScreen();
110 else
111 obj.sendImage(single(imread(obj.imgList(obj.actualImageNo)))./255);
112 %imshow(obj.imgList(obj.actualImageNo));
113 end
114 end
115
116
117 end
118end
119
Definition: Device.m:6
Definition: Laser.m:7
Definition: SLM.m:7
Property actualImageNo
Index des aktuell angezeigten Bildes in der 'imgList'.
Definition: SLM.m:87
#define true
Definition: nuts_bolts.h:26
#define false
Definition: nuts_bolts.h:25
function setWS(in field, in param, in value)