Realtid. eda040project2010 MANUAL. - Christoffer Olsson. - Daniel Lehtonen



Relevanta dokument
Hidden Camera App. Realtidsprogrammering EDA040. Joakim Svensson (dt05js8) Torbjörn Lundberg (dt05tl3) Henrik Andersson (dt05ha1)

Referensmanual. De olika lägena. Idle. Movie. Synchronous. Asynchronous

Åtkomst och användarhandledning

Projektrapport EDA095

Projekt i Nätverksprogrammering. MegaNet Handledare: Pierre Nugues

Piff och Puffs Chatsystem

Handbok Simond. Peter H. Grasch

Manual Nedladdningsbara klienten NLK

Laboration 2: Ett kommunikationssystem

1 Översikt. 1.1 Koncept 1 (19) Tomas Rook Dokument typ Rev. Manual

NEO Speech. Trygghetstelefon. Användarmanual (SE)

Datorsystem Laboration 2: Minnesmappade bussar

Bruksanvisning. Applikationsplats

MANUAL NETALERT FÖR ANDROID VERSION 3.3

Låt ipad bli fjärrkontroll för din Mac

Användarhandbok OE/OSSpeaker V.10.3

Projektarbete 2: Interaktiv prototyp

Tentamen i Realtidsprogrammering

19. Skriva ut statistik

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

ZACI är den programvara som är navet i kommunikationen när det gäller kortbetalningar.

EDA095 Nätverksprogrammering

Intraoral kamera. Installations- och användarmanual

ELMIA WLAN (INTERNET)

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Manual för Kollektomat

Linuxadministration I 1DV417 - Laboration 4 Nätverk, DHCP, säkerhetskopiering, processhantering, Samba och NFS

CAMZWEXT3 version 2 CCTV Säkerhetssystem med ljud och rörelse detektor samt videoaktivering.

Styra olika typer av objekt som animering, video, ljud och Flashfilm

Android-app Användarmanual 1.0

CANDY4 HD II

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

ANVÄNDARMANUAL. handdatorer i ängs- och betesmarksinventeringen. för

Smart Rogic Manual. Robostick Manual

Skriv in sökvägen sam.sll.se

Switch Driver 5. Programvara för Radio Switch, JoyBox och JoyCable. Sensory Software

Innehållsförteckning

App-klient för smartphones Power BI Arbetsflöde CRM Online Webb-klienten Dokumenthantering Molnet...

Bruksanvisning KABA MAS AUDITCON KABA MAS HAMILTON Modell 100, 200, 400, 50 och 52

Till närstående som ska vara med vid samordnad vård- och omsorgsplanering via video eller telefon

FÖRBEREDANDE INSTÄLLNINGAR INFÖR SKYPE MÖTE SAMORDNAD VÅRD- OCH OMSORGSPLANERING

Att bekanta dig med NetBeans programmeringsmiljö och skriva några enkla program med programmeringsspråket Java.

LABORATIONSRAPPORT Säkerhet och Sårbarhet Laboration 1 Brandväggar

HOGIA skatteanalys. Installationsguiden startar med en välkomstdialog för produkten. Klicka på Nästa.

Installation av. Vitec Online

Lättlästa instruktioner för ipad ios8

Lära känna skrivbordet

Manual ipad och Netpublicator

Kapitel 1 Ansluta Router till Internet

Projektrapport. MegaLoad. Nätverksprogrammering EDA

MANUAL NETALERT FÖR IPHONE VERSION 1.0

Att komma igång med FirstClass (FC)!

Manual för version V2

Du har fått stycken taggar. (av föreningen okt-06 eller av den f.d. medlem du övertagit lägenheten från) Din pinkod är:

Instruktioner för uppdatering från Ethiris 4.10 till 5.x

Hur BitTorrent fungerar

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

För installationer av SQL Server som inte görs från Hogias installation måste följande inställningar göras:

Gesäll provet Internetprogrammering I. Författare: Henrik Fridström. Personnummer: Skola: DSV

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Mirasys VMS 7.3. Workstation användarvägledning

Denna laboration skapades för elever vid Roslagens Högskola men kan användas av vem som helst. Namnen på servrarna måste i så fall ändras.

Radiomottagare LE10 CRS-URE Användarhandbok

Designspecifikation den 13 december 2007

ANVÄNDARMANUAL ANSLUTA TILL REGION HALLAND VIA CITRIX

Manual Sportident Onlinekontroll via GPRS

Manual för deltagare kursen Bakgavellyft Så går du kursen Bakgavellyft

Systemkrav. Systemkrav för Hogia Approval Manager. Gäller från och med programversion

Installationsguide. För att installera mjukvara och hårdvara, följ nedanstående anvisningar.

Användarmanual för nya funktioner

SIS Capture Station. IIIIII Användarhandbok

Hogia Administration AB bedriver kontinuerlig utveckling av programmen och reserverar sig för avvikelse mellan program och handbok.

Foderöverföringar på gårdar med DeLaval VMS Mgmt

Seriehantering. [En enkel guide för hur du som serieadministratör använder SVEMO TA.]

Instruktioner för användning av Accessapplikationen till uppföljning av skyddsvärda arter kärlväxter samt AnnexIIkärlväxter

FileCentral Desktop. Användarhandledning Version

Så här gör du för att lägga till nytt e-postkonto i Windows 8. Öppna E-post från startskärmen.

Aktivera och använda EtherTalk för Mac OS 9.x

RAPPORT: ATT UPPLEVA EN UTSTÄLLNING HELT I LJUD. FÖR UTSTÄLLNINGEN VÄRDEFULLT. BAKGRUND..s 2 METOD...s 2 RESULTAT...s 3 9 ANALYS AV WORKSHOP...

Lathund för att arbeta med pdf

HexaFlip. Kravspecifikation

Mobil lagerhantering med streckkodsskanner

CD 600 IntelliLink, Navi 650, Navi 950 IntelliLink Vanliga frågor

4 Installation av drivrutiner

Föreläsning 7. Grafiska användargränssnitt

Innehåll. Förändringar i v5.2

Microsoft Windows 8 Grunder

AVCAD 4.0 for MS SQL-SERVER

BILAGA KARTLÄGGNING SOCIALSEKRETERARE STOCKHOLM (MELLAN)

Elektroniskt informationsutbyte mellan arbetsgivare och Försäkringskassan. Information om filöverföring

Manual. Danfoss termostat

Studentguide Adobe Connect Pro

Milesight Motion Detection V1.0

Webbkamera från

IT-arbetsplats med distansåtkomst

Installations-handbok för PC Suite. SV Issue 1

Brädspelet Mulan. Håkan Berggren, Magnus Ellisson, Lars Kristiansson, Cheng-Huei Kuo, Eva Ljunggren, Joakim Viker. Göteborg 1999.

Mer om Outlook. Extratexter till kapitel 4 Mejla. I avsnittet lär du dig: vad Outlook idag är och kan användas till

Diagram. I detta kapitel lär du dig: m Diagrammets beståndsdelar. m Att skapa både inbäddat diagram och diagramblad. m Att ändra diagramform.

Flexibel meny i Studentportalen

Transkript:

Realtid eda040project2010 MANUAL dt08es7 dt08co0 dt08dm8 dt08dl4 - Emil Selinder - Christoffer Olsson - David Meyer - Daniel Lehtonen

Innehållsförtäckning Introduktion Hur man kör igång programmet Proxy Server Client HTTPserver Hur systemet fungerar Struktur Server Client GUI

Introduktion I kursen Realtidsprogrammering ingår det ett projekt där man ska skapa ett övervakningssystem i vilket man kan koppla upp sig mot några nätverksanslutna kameror som finns utsatta i olika datorsalar i E:huset på LTH. Sedan ska man via ett gränssnitt på sin dator kunna se i realtid vad som sker i de olika datorsalarna. Det ska finnas två olika lägen på bildströmmen. I det ena läget får man bilder var femte sekund och i det andra läget ska en videoström med högre framerate visas. Programmet ska dessutom detektera om det sker någon rörelse och då automatiskt sätta igång videoläget. Kamerorna som används är från Axis och är av modell Axis211A. Hur man kör igång programmet Vi har två olika sätt att sätta upp systemet, dels genom att ansluta via en proxy och då låta servern köras lokalt på datorn och dels att ladda upp servern direkt på kamerorna med korskompilering. Proxy För att kunna ansluta en server till en kamera måste man först starta kameran. Detta gör man genom att telnet:a till en kamera, exempelvis: telnet <kameranamn>.student.lth.se där <kameranamn> är en kamera som finns på LTH, till exempel argus-1 och när man väl skrivit in rätt användarnamn och lösenord ska man köra CameraProxy som finns på kameran genom att skriva: /etc/cameraproxy <nätverks-port> Där nätverksporten är en port mellan 1024 och 65535. När du väljer en port så kommer den valda porten samt nästföljande port att reserveras åt kameran. Eftersom brandväggen blockerar vissa portar, tillåts endast portarna mellan 8081 och 8089 Ex. /etc/cameraproxy 8085 matas in, portarna 8085 och 8086 reserveras då åt kameran. Systemet är byggt för att köra med två kameror så denna proceduren måste upprepas så att vi får två kameror. Server När det är klart kan man köra servern genom att först starta en ny terminal, bläddra till mappen där.jar-filerna ligger i och sedan skriva: java -jar CameraServer <IP adress> <nätverks-port> <kamera-port> Eftersom vår klient ansluter till två kameror behöver man starta två stycken servers, och därmed

göra instruktionerna två gånger. För att det ska fungera med två kameror måste vi ange olika portar för kamera och nätverk för de olika instanserna. För kameraporten krävs att man anger ett portnummer som är minst två steg större eller mindre. Client När väl servrarna är up and running är det dags att köra klienten. Den startar man genom att skriva: java -jar CameraClient <kamera1> <kamera2> <kamera#> ska vara localhost och <kameraport> exempel: 127.0.0.1:6666 HTTP:servern För att starta http-servern ska man göra som för proxy, fast man kör JPEGHTTPServer.jar istället och exempel på portnummer är: argus-3.student.lth.se <kamera-port> = 6666. <nätverksport> = 8085. Sedan kan man hämta bilder genom att i en webläsare skriva: http://localhost:<kamera-port>/ För att uppdatera en bild kan man trycka på uppdatera i webläsaren, alternativt trycka F5 Hur systemet fungerar När systemet väl är igång använder man sig enbart av GUI:t. Där använder man sig av de olika knapparna för att ansluta, synkronisera och trigga filmläget. Till en början kommer 2 bildströmmar att skicaks till de olika bildrutorna där bilderna visas så fort klienten tar emot dem. Om man trycker på synkronisera-knappen kommer bilderna att synkroniseras, det vill säga att visas med gemensam fördröjning gentemot när bilderna togs. Om bildströmmarna har allt för lång fördröjning kommer synkroniseringen automatiskt att stängas av och bilderna blir asynkrona. Om någon kamera detekterar att en rörelse har skett, kommer videoläget att triggas ifall den inte redan är igång. Gränssnitt Gränssnittet består av ett fixt fönster med två mindre fönster som vart och ett visar bilder från en övervakningskamera. Det finns också tre stycken knappar; Connect (för att ansluta till kamerorna), Movie Mode (för att sätta kamerorna i videoläge och skicka ca 25 bilder per sekund) och Synchronize (för att synkronisera bilderna så att det visas nästan samtidigt i fönstren). Under de två fönstren med bilderna visas bildernas fördröjning, från det att dem togs till det att dem visas i gränssnittet. Runt fönstren har vi en svart ram som då vi trycker

på Connect blir grön istället, och på så vis visar att vi är uppkopplade mot kamerorna. Knapparna Synchronized och Movie Mode går inte att trycka på förrän man har anslutit till kamerorna med knappen Connect. Struktur Server Servern begär bilder från kamerorna i olika takt beroende på om om moviemode är aktiverat eller inte. Det finns en periodisk tråd för varje läge som tar bilderna. När bilderna är tagna skickas de över till klientsidan. Detta kallas push och överföringen sker via TCP/IP. Servern tar även emot kommandon från clienten för att moviemode skall startas sammtidigt för båda kamerorna. Klasser CameraThread: Är en tråd som anropar den angivna kamera var femte sekund för att få en ny bild. När bilden har mottagits skickas vektorn med data till tillhörande CamServer för att sedan skickas över nätverket till klienten. Denna tråd hör till läget Idle-mode. CamServer:

Är vår klass för att hantera all överföring av data från server till klienten. De två huvudsakliga uppgifterna för CamServer är att tillhandahålla de två metoderna sendimage och sendcommand så att servern kan skicka bilder och kommando. Input_Manager: Den stora klassen på serversidan som först och främst lagrar objekt av de andra klasserna för att sedan kunna tillhandlahålla dessa. Dennes ansvar ligger sedan i att hantera indata från klienten som endast kommer bestå av diverse kommando. Dessa kommando tolkas och Input_Manager kommer sedan manipulera de olika trådarna beroende på vilket kommando det var. Main: Det enda denna gör är läsa in ip-adress, kamera-port och nätverksport och sedan skapa en CamServer, en instans av en Axis211A och en Input_Manager. Sedan vidarebefodras informationen till Input_Manager. MotionThread: Är en tråd som läser av hur mycket rörelse det är i bilden med ett intervall på en sekund. Tråden kommer bara köras då vi är i Idle-mode eftersom då man är i Movie-mode har vi ingen nytta av denna informationen. MovieThread: Är en tråd som anropar den angivna kamera med ett intervall på 40 milisekunder för att få en ny bild. När bilden har mottagits skickas vektorn med data till tillhörande CamServer för att sedan skickas över nätverket till klienten. Denna tråd hör till läget Movie-mode. Client Clienten är uppbyggd så att den tar emot bilder och kommandon som byte listor via en tråd. Därefter behandlas bilderna olika beroende på om det är synkront eller asonkront läge. Är det synkront läge fördröjs alla bilder så det blir 200ms fördröjning. I asynkront läge visas bara bilderna direkt. Clienten kollar efter två kommandon det ena är PICTURE och betyder att den förjande datan är en bild. Det andra kommandot är MOVIE_MODE och det kommer från server sidan då en kamera detekterat rörelse. När detta kommando kommit in broadcastar vi ut det till båda servrarna. Klasser

Main: Innehåller mainmetoden som startar en instans av Client Client: Client är kärnan av programmet på clientsidan. Klassen väver samman alla klasser och startar instanser av PictureQueue, PictureUpdateThread, SyncHandler, GUI. När användaren trycker på connect i guit starats två instanser av Connection i denna klass, detta för att de etablera anslutningen. Efter anslutning är det denna klass som har hand om output till serversidan. Connection: Ansvarar för socket objekt mellan klienten och servern. Skapar en instans av ClientInput och observerar klienten för att kunna stänga ner anslutningen. ClientInput: Denna klass läser hela tiden av data från en InputStream med tillhörande id, efter hand sätts data samman till antingen en bild eller ett kommando. BIder skickas till respektive PictureQueue. Denna klass kontollerar vilket kommando som skickas och anropar beroende på detta rätt metod i Client. Anledningen till att klienten observeras är att denna tråd skall terminera då anslutningen avbryts. Picture: Picture klassen representarar en bild och innehåller data för bilden samt ett id som anger vart bilden kommer från. Från ett bildobjekt kan man sedan få reda på timestamp, aktuell fördröjning

samt få hela bilden som en array med bytes. Picture Queue: Denna klass är en monitor som modellerar en smart kö för bilder. Detta för att möjligöra synchronize funktionen för programmet. Det skapas en instans av denna klass för varje kamera och klassen innehåller ett object av SyncHandler för att kön ska kunna avgöra om det är synchronisering eller inte. Det är en instans av ClientInput och en instans av PictureUpdateThread som opererar på varje PictureQueue objekt. ClientInput lägger till bilder i kön och PictureUpdateThread hämtar bilder i kön och visar dem i guit. PictureQueue gör så att PictureUpdateThread sover lagom länge i synchriniserat läge för att fördröjningen ska bli 200ms. När programmet är i asynkront läge fördröjs inte PictureUpdateThread alls och bilderna visas direkt. PictureUpdateThread: PictureUpdateThread är en simpel tråd vars uppgift är att uppdatera guit med bilder. getnextpic i PictureQueue anropas för att få nästa bild. PictureQueue gör så att denna tråd sover lagom länge för att fördröjningen ska bli 200ms i synkront läge. SyncHandler: SyncHandlers uppgift är att hålla koll på om vi är i synkront eller asynkront läge och skriva ut information om detta i guit. GUI Paketet med GUI har funktionalitet för att låta användaren interagera med programmet. Klasser

GUI: Ritar upp programmets grafiska användargränssnitt. Innehåller också metoder för att hämta ImagePanel-objekt, ändra ifall vi är anslutna eller inte, sätta på och av Movie Mode samt ändra delayen som visas under kamera-fönstren. ConnectButton: Skapar en knapp som detekterar ifall användaren tryckt på connect. ImagePanel: Skapar ett fönster i vilket en bild från kameran kan visas. Innehåller också en metod refresh som används för att uppdatera bilderna som visas. ModeButton: Skapar en knapp för att avgöra om vi är i movie-läge eller idle-läge. SynchronizeButton: Skapar en knapp som kommunicerar med klassen SyncHandler i surveillance-paketet. WindowCloser: Försöker att stänga ner anslutningarna och sedan GUIt då man trycker på krysset i fönstret för att avsluta.