Referensmanual De olika lägena Systemet har sex stycken olika lägen indelade i tre olika grupper, idle/movie, synchronous/asynchronous och manual/auto. När programmet startas befinner det sig i idle-läge, synchronous-läge och manual-läge. Idle Det här läget skickar en bild per sekund från kamerorna och visar upp dem i användargränssnittet. Idle läget går över till Movie mode om någon av kamerorna detekterar någon rörelse med hjälp av dess s.k. Motion Detection samt om programmet sitter i Auto-läge. Programmet startar i Idle-läge. Movie Det här läget skickar bilder från kamerorna så fort det är tillgängliga högst 25 bilder per sekund, med möjlig tidsfördröjning från att bilderna ska visas så synkront som möjligt, och visar upp dem i användargränssnittet. Detta för att simulera en direktström från kameran Synchronous Det här läget visar upp bilderna synkroniserat mellan kamerorna. Det vill säga att om en bild från kamera ett är tagen 50 millisekunder efter en bild från kamera två, så visas bilden från kamera två upp och bilden från kamera ett väntar 50 millisekunder innan den visas upp. Det här läget hålls aktiverat så länge inte fler än två bilderna från de båda kamerorna har mindre än 200 millisekunder mellan varandra eller det manuellt väljs att gå in i asynchronous - läge. Programmet kommer automatiskt att försöka hålla allt i synchronous - läge, men kommer gå över till asynchronous ifall det blir för stor tidsfördröjning imellan bilderna. Programmet startar i Synchronous. Asynchronous Det här läget visar upp bilderna från kamerorna så fort som möjligt, oavsett om de har en tidsskillnad. Läget aktiveras antingen manuellt eller när bilderna som programmet håller för tillfället har mer än 200 millisekunder mellan varandra.
Manual Det här läget låter användaren bestämma över om man ska befinna sig i idleeller movie-läge. Det går även att bestämma mellan sychronous- och asynchronous- läge. Programmet startar i Manual Läge. Auto Det här läget låter systemet själv att gå över till movie-läge ifall det upptäcker tillräckligt mycket rörelse. Systemet stannar sedan i movie-läget fram tills användaren byter till manual-läge och därefter till idle-läge. Systemet skiftar även mellan synchronous- och asynchronous-läge. Motion Detection Kameran har en feature som kommer ge utslag om där är saker som rör sig skarpt framför den, detta används för att skifta mellan Idle och Movie läge när programmet sitter i Auto - läge. Design Vi har valt att använda oss utav två stycken trådar på serversidan TCPPicServer och CameraManager som pratar med en monitor ServerMonitor. Till serverns monitor kan också tråden HTTP ansluta sig och be om den aktuella bilden. På klientsida har vi två trådar TCPPicClient och TCPMotion per server för att kunna kommunicera mellan klientens monitor ClientMonitor och servern. Det finns även en tråd GUIManager som pratar med klientens monitor och GUIt.
TCPPicServer på serversidan hanterar TCP-paketen och väntar på att få en förfrågan från klienten, den svarar sedan med den aktuella bilden från monitorn. Den kan även få förfrågningar om att byta tillståndsläge och uppdaterar då monitorn med det nya läget. CameraManager i servern uppdaterar monitorn med bilder i önskad hastighet idle eller movie. I idle-läge skickar CameraManager ett motion detection meddelande till klienten via TCP. På klientsidan hanterar TCPPicClient TCP-paketen och ber om en bild från servern i den takt som önskas idle eller movie och tar emot bilderna. Dessa placeras sedan i en lista av bilder i klientens monitor, där dessa bilder ligger i ordningen efter numrering på kamrorna (så som att kamera 1 ligger på första platsen i listan osv.).clientmonitorn lagrar en bild buffert för varje kamera och kommer returnera dessa bilder vid anrop och kommer hålla och lagra bufferten för att två kameror ska kunna visas så synkroniserat som möjligt. GUIt NewGUI använder Swing det är då viktigt att hantera det faktum att Swing inte är trådsäkert. Därför använder sig GUIManager sig utav invokelater när den uppdaterar GUIt NewGUI med aktuell bild från monitorn. I GUIManager finns det logik för att avgöra vilken bild som ska levereras, synchronous eller asychronous. Om det skiljer mer än 200 millisekunder mellan mer än 2 bilderna från de två kamerorna, så visas bilderna direkt. GUIManager uppdaterar monitorn med lägesinställningar så som idle/movie, synchronous/asynchronous och manual/auto.
Bild 1: På klientsidan är tråd 1 TCPPicClient, tråd 2 är GUIManager och tråd 3 är TCPMotion. På serversidan är tråd 1 TCPPicServer och tråd 2 är CameraManager.
Användarmanual- Server 1. Starta servern i terminalen med java -jar server.jar. 2. Mata in önskat portnummer för proxyservern (Observera att 2 portar används. Den valda samt den valda + 1). 3. Mata in kamerans namn och portnummer. 5. Mata in önskad port för HTTP-server. Användarmanual- Klient 1. Starta klienten i terminalen med java -jar client.java. 2. Mata in den första serverns namn och portnummer. 3. Mata in den andra serverns namn och portnummer. 4. Använd GUI:t för att ändra inställningar för de olika programtillstånden.
5. I Gui:t så finns där ett fält för varje kamera där vardera kamera kan visa sin egen ström av bilder. Under dessa så visas det vilken delay båda bilderna visas med. 6. Under detta finns där även ett antal små markerings fält där man kan skifta runt huruvida programmet skall vara idle/movie, synkat/osynkat och manuellt/auto. 7. Om rörelse upptäcks på en av kamerorna får bilden en tunn röd kant.