C6, Systemdokumentation av. gränssnittsmodul

Relevanta dokument
Kravspecifikation TOPSim, steg 2

Testdokumentation av simulatorprototyp, steg 1

C7 Utvärdering av gränssnittsmoduler

Kravspecifikation CATD, steg 2

Rapport T5. Utvecklingsspecifikation av simulatorprototyp, steg 2 grundkrav. En rapport från CATD och TOPSim-projekten.

Kravspecifikation CATD, steg 1

Preliminär sammanfattande slutrapport från TOPSim-projektet september 2002

Sammanfattande slutrapport från CATD-projektet december 2002

Utvecklingsspecifikation av simulatorprototyp, steg 1

Studiebesök vid Railned, Utrecht April 2002

Slutrapport CATD-DSS, steg2

FTTS-projektet. Slutrapport för perioden Framtida tågtrafikstyrning Beslutsstöd och användargränssnitt

Projektrapport TOPSim, fas 4

Sammanfattande slutrapport från TOPSim-projektet december 2002

Utveckling av en dynamisk tidsgraf för tågtrafikstyrning

Rapport T3 TOPSim systembeskrivning. En rapport från TOPSim- och CATDprojekten

campus.borlänge Förstudie - Beslutsstöd för operativ tågtrafikstyrning

Grafiska användargränssnitt i Java

Roboten. Sida 1 av 11

Grafiska användargränssnitt i Java

Forskning om - Framtida operativa trafikstyrning Slutsatser och rekommendationer. Bengt Sandblad Arne W Andersson. Uppsala universitet

Gränssnitt för FakeGranska. Lars Mattsson

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

via länken: Kontaktpersoner på Uppsala universitet: Bengt Sandblad, Arne W Andersson.

Objektorienterad Programkonstruktion. Föreläsning jan 2016

LiTH. WalkCAM 2007/05/15. Testplan. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Användarhandledning. Redaktör: Patrik Molin Version 1.0. Mobile Scout. Status. LiTH Granskad Godkänd. TSRT71 Patrik Molin

diverse egenskapspaletter

Programmering B med Visual C

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Lab5 för prgmedcl04 Grafik

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215/TIG091

Framtida tågtrafikstyrning. Att styra tågtrafik i framtiden ett forskningsprojekt

Presentationsprogram - Kravspecifikation. Henrik Österdahl och Jenny Melander, D mars 2002

Utveckling av ett grafiskt användargränssnitt

Grafiska användargränssnitt i Java

Fyra i rad Javaprojekt inom TDDC32

3FrontOffice Statistik Direkt

TUTORIAL: SAMLING & KONSOLL

Manual Skogsappen - Hemkomstkontroll

EV3 Roboten. Sida 1 av 13

Vilken skillnad gör det var du placerar det? Prova båda.

Objektorienterad programmering. Grundläggande begrepp

Manual. Kursplan. Astrakan. ESF Edition Publikt användargränssnitt. Artisan Global Media

BuildingPortalSuite. Beskrivning BuildingPortalSuite - Beskrivning

Slutrapport: Informationsvisualisering av släktträd

Snabbmanual: Analysen

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl

NVDB Teknisk lösning ID-hantering och transaktioner

Kom igång med TIS-Office

PROGRAMMERINGSTEKNIK TIN212

Objektorientering: Lagring, räckvidd och livstid

Dagens tågtrafikstyrning. Dagens styrprinciper

Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).

Datorövning 2 Matlab/Simulink. Styr- och Reglerteknik för U3/EI2

PP7Mobile User s Guide

Obligatorisk uppgift: Simulering av köer i ett trafiksystem

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

Riktlinjer täthet mellan tåg

Vad utmärker ett bra användargränssnitt?

Klassdeklaration. Metoddeklaration. Parameteröverföring

Eltec VoteAid är ett system som används av kommuner och landsting för att sköta möten via trådlösa knappsatser.

Communicator Telefonist

Manual digipostpro. samt digivu. WAN och LAN. Sätt i kort... Ansluten

ALEPH ver. 16 Sökning

Energieffektiv tågföring med CATO

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Insamlingsverktyg - teknisk beskrivning av metadataformuläret

Förbättrad analys av förseningsdata med hjälp av RailSys

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

ALEPH ver. 16 Introduktion

Berth Arbman. Välkommen till bokningssystemet myweblog!

FLOAT - (FLexibel Omplanering Av Tåglägen i drift) OT8 2 Väl fungerande resor och transporter i storstadsregionen

Installation av Topocad

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Objektorienterad Programkonstruktion

Universe Engine Rapport

extensible Markup Language

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Kapitel 13 Placera på ark... 3

Microsoft PowerPoint

Installation av Topocad

Kravspecifikation. TDP005 Projekt: objektorienterade system. Version 4.0 Datum Anna Ahlberg Johan Almberg

Model View Controller. Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Statistik Bas. 3FrontOffice. Statistik Bas. Statistik Bas

Förteckning över ikoner i programmet Aliro IP-passerkontroll utan komplikationer

Axiell Arena Visa BOOK-IT:s resurser

Förteckning över ikoner i programmet

Kravspecifikation TDP005 Projekt: Objektorienterat system

Riktlinjer täthet mellan tåg

Objektorienterad programmering

Användarmanual TextAppen Online

TUTORIAL: KLASSER & OBJEKT

Kopiering av objekt i Java

Kundhandledning för EBIS. E-space Business Intelligence System. Version

ANVÄNDAR MANUAL. SESAM 800 RX MC Manager

Transkript:

C6, Systemdokumentation av gränssnittsmodul En rapport från CATD-projektet Ett forskningsprojekt i samverkan mellan MDI, inst. för informationsteknologi, Uppsala universitet Högskolan Dalarna Banverket Rapportnamn Systemdokumentation av gränssnittsmodul Rapportnummer C6 Revisionsdatum 2002-12-19 Status Slutversion

Förord Denna rapport är en deldokumentation inom projekten: CATD Framtida tågtrafikstyrning. Beslutsstöd och användargränssnitt Banverkets FoU, dnr S00-3165/08 TOPSim Simulering inom planering, utbildning och drift Banverkets FoU, dnr S00-3164/08 För ytterligare information om projekten hänvisas till projektplanerna samt till information på adressen http://www.hci.uu.se/projects/ Systemdokumentationen tas fram med olika status: arbetsmaterial, remissversion resp. slutrapport. Denna rapport, C6. Systemdokumentation av gränssnittsmodul, beskriver hur gränssnittet Simson är uppbyggt och vilken funktionalitet som det idag erbjuder. I CATD och TOPSim-projekten har följande personer deltagit MDI, Uppsala universitet Bengt Sandblad, projektledare Arne W Andersson Arvid Kauppi Johan Wikström Högskolan Dalarna Thomas Kvist ÅF-Industriteknik AB Per Lindström Karl-Einar Jonsson Maria Berg Roland Andersson Anders Nyman Magnus Löfsjögård Johnny Rudolf Banverket projektering Peter Hellström Banverket Jan Byström (kontaktperson CATD) Magnus Wahlborg (kontaktperson TOPSim) C6. Systemdokumentation av gränssnittsmodul 1

C6, Systemdokumentation av gränssnittsmodul. En rapport från CATD och TOPSim-projekten C6. Systemdokumentation av gränssnittsmodul 2

Innehållsförteckning 1. INLEDNING...4 2. SIMSON, SYSTEMÖVERSIKT...4 3 DATA PAKETET...5 3.1 INFIL TILL OBJEKT...5 3.2 DATA BESTÄNDIGHET...5 4 STATE PAKETET...6 4.1 BLOCK...6 4.2 TÅG...6 4.3 TIDTABELLER...6 4.4 TID...7 5 UI PAKETET...7 5.1 FÖRENKLAD SPÅRPLAN...9 5.2 DYNAMISK DATORBASERAD TIDTABELLSGRAF...9 5.2.1 Omplanering...9 5.3 TÅGINFORMATION...10 6 KOMMUNIKATION...10 6.1 MESSAGEHANDLER...10 6.2 MESSAGESENDER...11 RAPPORTFÖRTECKNING - ÖVERSIKT...12 C6. Systemdokumentation av gränssnittsmodul 3

1. Inledning Simson är en av tre komponenter i TOPSim systemet och utgör där det grafiska gränssnittet mot vilket operatörer/tågtrafikledare arbetar för att styra den simulerade tågtrafiken. De andra två komponenterna är simuleringskärnan TTS och applikationsservern TOPSim-server. Simson är helt och hållet utvecklat av Institutionen för Människa-Dator Interaktion vid Uppsala universitet. Syftet är att möjliggöra utvärdering av nya styrprinciper, koncept och användargränssnitt genom simulering. Detta dokument beskriver hur Simson är uppbyggd, hur kommunikationen med simulatorn sker samt vilken funktionalitet Simson idag erbjuder användaren. Design av gränssnittet har gjorts inom projektet FTTS (Framtida tågtrafikstyrning) och all implementation är gjord inom projektet CATD/TOPSim. 2. Simson, systemöversikt Nedan visas en översiktlig bild av systemet. För en mer detaljerad bild av TOPSim-servern hänvisas läsaren till rapport T6. Simson är designad enligt ett vanligt mönster i vilket man har tre olika aktörer: data, tillstånd och presentation. All kod är skriven i Java och för att särskilja de olika aktörerna på ett tydligt sätt placerar man kod tillhörande en viss aktör i ett paket som övergripande motsvarar just den aktören. Alltså finns det idag tre stycken paket kallade data, state och ui. SIMSON DATA STATE TOPSim SERVER PARSER DATA OBJEKT KOMMUNIK ATION TILLSTÅND TCP/IP TTS UI SIMSON UI OBJEKT C6. Systemdokumentation av gränssnittsmodul 4

3 Data paketet I paketet data återfinns statiska och dynamiska objekt vilka beskriver olika delar nödvändiga för simuleringen. Här återfinns också verktyg för att med hjälp av infilen initiera data objekten. Simson använder samma infil som simulatorn och de flesta objekten följer den beskrivning som ges i SIMON manualen [Rapport B139]. Det finns inga gemensamma data Simson och TTS emellan utan det är upp till Simson att se till att data på båda sidor modifieras så att de hela tiden överensstämmer. Detta sker med meddelandeutväxling och beskrivs under avsnittet kommunikation (se 6. Kommunikation). 3.1 Infil till objekt Då Java är ett objektorienterat språk har oftast en komponent i data paketet en direkt motsvarighet i verkligheten. Detta gör att man på ett enkelt och tydligt sätt kan representera bana, tåg, tidtabeller etc. som en hierarki av objekt. Varje objekt kommer sedan att innehålla data som beskriver objektet självt men kan också ha ett relationsberoende till andra i paketet ingående objekt. När man startar Simson skapas objekt men för att de skall innehålla några användbara data måste dessa tilldelas objekten från den infil som man valt att arbeta med. Simson använder sig av samma infil som TOPSim-servern och för att man skall kunna extrahera data ur denna fil finns det i paketet data verktyg lämpade för detta. Vid start av Simson överförs alltså data i infilen till objekten genom verktyg som implementerats tillsammans med ett open-source paket kallat ANTLR( Another Tool for Language Recognition). Detta sker genom att först göra en lexikal analys och sedan en syntax analys. Den förstnämnda innebär att man delar upp textfilen i symboler såsom tal, operatorer o.s.v. Dessa används sedan i den syntaktiska analysen där man söker efter kända mönster. När ett visst mönster hittats exekveras ett visst kodavsnitt som i sin tur initierar det eller de objekt som matchar det funna mönstret. När sedan denna analys är klar har samtliga data objekt initierats och är då en lokal kopia av det data som finns på server sidan. 3.2 Data beständighet Då användare interagerar med gränssnittet påverkar de naturligtvis en del av det data som finns. För att TOPSim servern skall bli varse om den ändring som en användare gjort på Simson sidan så skickas ett meddelande med ändringen till servern. Det gäller alltså att hela tiden se till att servern har samma data som Simson har. Detta gäller i de flesta fall men inte alltid. Ibland arbetar man med planer och prognoser av t.ex. tidtabellsdata. Detta medför att man på Simson sidan får ytterligare en representation av data som skiljer sig från både det data som lästs in från infilen och det data som finns sedan tidigare på de bägge sidorna (infilsdata kan ju ändras under simuleringen). För att spara plats och höja prestandan i systemet sparar man inte om allt data vid en ändring utan man identifierar istället de objekt som skiljer sig, kopierar dessa, men bibehåller referenser till andra objekt och övrig data intakt. C6. Systemdokumentation av gränssnittsmodul 5

4 State paketet State paketet handhar i första hand tillstånd hos objekten men i detta paket återfinns även de delar som sköter om kommunikationen med simulatorn. De objekt som man idag följer tillståndet hos är block på banan, tåg, tidtabeller för tåg och tiden i simuleringen. I detta paket finns även ett state objekt vilket fungerar som ett samlingsobjekt för simuleringen i stort. I detta objekt finns referenser till de viktigaste tillståndsobjekten och i presentationen har de flesta objekten en referens till detta samlingsobjekt. 4.1 Block Ett block kan anta ett av följande fem olika tillstånd: Reserved Blocked Free Entered Clicked För att få reda på i vilket tillstånd ett block är i kan en intressent anmäla sig till detta blocks lyssnarlista. Då tillståndet ändras kommer samtliga lyssnare i denna lista att varskos och kan sen i sin tur ta ställning till hur de ska reagera. Det går även att direkt ta reda på tillståndet hos ett block genom att anropa någon av de predikat metoder som finns. Dessa returnerar ett sant eller falskt värde som talar om huruvida blocket befinner sig i ett visst tillstånd eller inte. För att kunna anropa dessa måste det anropande objektet ha en referens till blocktillståndet. 4.2 Tåg Tillståndet hos tåg definieras främst av fysikaliska data såsom hastighet, position, acceleration, tid mm. Även här finns en lista till vilken andra intresserade objekt anmäler sig för att bli uppdaterade om ändringar. Då upplösningen i antalet meddelanden som skickas från simulatorn inte är tillräckligt hög för att kunna rita ut tågets position i önskade tidsintervall finns det i tillståndsobjektet för ett tåg en liten motor. Denna använder sig av det data som finns för att med hjälp av dessa beräkna positionen hos tåget med högre noggrannhet. 4.3 Tidtabeller Tidtabellen för ett tåg finns lagrad i data paketet efter det att inläsningen och tolkningen av infilen är genomförd. Men då denna tidtabell representerar original tidtabellen är det önskvärt att ändringar som görs inte direkt skriver över denna. Den struktur som idag står för tidtabellhanteringen läser vid simuleringens start in original tidtabellen och kopierar en delmängd av det data som finns i tidtabellen. Sedan sparas denna data för att kunna hämtas av andra objekt. När ett annat objekt hämtar en tidtabell är det hela tiden den tidtabell i vilken man senast gjorde en ändring som returneras. C6. Systemdokumentation av gränssnittsmodul 6

Att endast en delmängd av data i tidtabellen kopieras beror på att det finns många referenser till andra data objekt. Dessa påverkas inte av ändringar som görs i själva tidtabellen och behöver därför inte heller kopieras. Att endast kopiera en (liten) delmängd gör att mycket minne sparas samt att kopieringsprocessen i sig själv går oerhört mycket snabbare och smidigare. Då ändringar skall göras i en tidtabell markeras först tidtabellen för modifiering. Sedan kan ändringar göras och när dessa är klara avmarkeras tidtabellen för modifiering. Genom att hela tiden nya kopior skapas kan man låta strukturen minnas ett visst antal ändringar. Detta gör det enkelt att återta en äldre tidtabell, dvs man får en sk undo-funktion. 4.4 Tid Tiden i simuleringen beror av den realtidfaktor som sätts då man startar simuleringen. För att andra objekt skall få reda på tidsförändringen finns även i detta tillståndsobjekt en lyssnarlista. Då ett tidsintervall av storlek lika med realtidsfaktorn förflutit uppdateras alla lyssnare. 5 UI paketet Paketet UI är en grafisk presentation av data objekten och tillståndet hos dessa. Här sköts även interaktionen med användaren om. Gränssnittet består idag av två större objekt, tidsgrafen och spårplanen. Därtill finns ett antal objekt som visar information om tåg, stationer, tid och datum. I detta paket finns även programmets huvudobjekt, Simson, som är ansvarigt för att initiera och presentera de övriga objekten. De flesta objekten i detta paket är hårt knutna till data objekten men eftersom de endast presenterar data så modifierar objekten i UI paketet aldrig data direkt utan detta sker genom att använda funktioner i tillståndsobjekten. Utan att gå in för djupt på detaljer och för att tydliggöra Simsons användargränssnitt visas i figur 2 fördelningen av de grafiska komponenterna i gränssnittet. De komponenter som nämns i figur 2 kan relateras och kännas igen i bilden av en Simsonprototyp (figur 3). För utförligare information om grunden för design och interaktion hänvisas till FTTS (framtida tåg trafik styrning) rapporten, Styrprinciper och gränssnitt, rapport 4. C6. Systemdokumentation av gränssnittsmodul 7

DATUM STATIONSNAMN TID Ankommande Tåg Tid Tid-Sträcka Diagram AKTUELL PLAN: TIDTABELL SPÅRANVÄNDNING Ankommande Tåg Linjär distans skala Korrelerad Grafik Tåg Info FÖRENKLAD SPÅRPLAN HISTORIA Tåg Info STATIONSNAMN Figur 2. Grafiskt upplägg av användargränssnittet. Figur 3. Exempel på aktuellt utseende. C6. Systemdokumentation av gränssnittsmodul 8

5.1 Förenklad spårplan I den förenklade spårplanen finns möjlighet att manuellt reservera tågväg (TRH) och att återta reserverad tågväg (UTL). Det finns även möjlighet att tillfälligt magasinera tågväg. Interaktionen sker idag med mus och för att på ett så tydligt sätt som möjligt visa från vilken del man gör TRH eller UTL används s.k. rubberbanding. Detta innebär att en linje visas från den punkt man valt till mus pekaren så att man hela tiden enkelt kan följa förloppet. För att få upp information om ett tåg i spårplanen klickar man helt enkelt på tåget med musen. Då visas information om detta tåg i ett tåginformationsfält (se 5.3. Tåginformation). Det är även möjligt att se ett tågs aktuella planerade spåranvändning i den förenklade spårplanen. Detta visas då man klickat på ett tåg som tunna vita linjer i spårplanen. För att kunna få en översiktlig bild av hur banan ser ut kan man välja att visa två typer av tilläggsinformation i spårplanen, höjdkurvor och/eller kurvintensitet. 5.2 Dynamisk datorbaserad tidtabellsgraf Den dynamiska tidtabellsgrafen visar tidtabellerna för tågen som de ser ut just nu. Tidtabellerna hämtas från den tidtabellstruktur som finns i state paketet och som beskrivits ovan. Innan ett tåg börjat köra visas tidtabellen som den är och användaren har möjlighet att göra ändringar i tabellen. Men när ett tåg startat uppdateras tågets tidtabell efter hur tåget kör. Det som då visas är inte längre tågets tidtabell utan en prognos för hur tåget kommer att köra. Genom att även rita ut det eventuella område som finns mellan denna prognostiserade tidtabell och orginaltidtabellen får man en uppfattning om tågets försening/förtidighet. Nederst i grafen visas den aktuella simuleringstiden (nutiden) och vid denna linje ser man var på banan tåget befinner sig i nuläget. Tidtabellinjerna kodas i olika färger som överensstämmer med de färger som respektive tågtyp har erhållit, t.ex. grönt för fjärrtåg och blått för godståg. 5.2.1 Omplanering För att planera om ett tågs tidtabell klickar man på tågets tidtabellslinje alternativt på tåget i marginalen. Linjen blir då kraftigare och noder ritas ut på linjen i skärningen mellan linjen och stationerna. Även övrig information som kan vara till hjälp för planeringen visas kring linjen. Denna information är idag planerad spåranvändning vid stationerna. För att ändra avgångstiden vid en station klickar man med musen på noden som finns vid skärningen mellan tidtabell linjen och stationen. En informationsruta som visar aktuellt uppehåll vid stationen, avgångstid, ny avgångstid samt tillagt uppehåll blir då synlig invid noden. Genom att använda musens rullhjul kan det aktuella uppehållet ändras. En mus rullhjul har små tick och ett sådant tick motsvarar en minuts förändring. För att bekräfta sin ändring klickar man sedan igen och man kommer då tillbaka till att ha linjen markerad och kan välja en ny nod att förändra eller att avmarkera linjen genom ytterligare ett klick. C6. Systemdokumentation av gränssnittsmodul 9

5.3 Tåginformation För att få information om ett specifikt tåg klickar man med musen på detta tåg eller på dess tidtabellinje. Information visas då i ett tåginformationsfält. För tåg åkande från höger till vänster visas informationen längst ner till höger i gränssnittet och för tåg åt andra hållet längst ner till vänster i gränssnittet. Informationen som visas är: Tågets identifikations nummer Typ av tåg Typ av lok Längd [m] Vikt [ton] Position Hastighet [km/h] Acceleration 6 Kommunikation Kommunikationen mellan TTS och Simson sker med hjälp av meddelandeutväxling. Meddelanden som kan skickas finns beskrivna i rapport T6. Det finns två klasser i paketet state som sköter om kommunikationen, MessageHandler och MessageSender. Nedan beskrivs de två klasserna och deras relationer. 6.1 MessageHandler Denna klass initieras så fort man valt en infil att arbeta med. Vid initieringen startas en ny tråd (lättviktsprocess) som i sin tur startar hela uppkopplingsförfarandet mot servern. Systemet står alltså inte och väntar på att uppkopplingen mot servern skall bli klar utan kan genast börja att parsa infilen och initiera övriga klasser. Uppkopplingen mot servern sker på det sätt som beskrivs i rapport T6. Först kopplar man upp sig mot servern på en förbestämd port. När man identifierat sig med användarid och lösenord är servern redo att ta emot infilen. Denna skickas inte som text utan på binärt format. Då detta är gjort returnerar servern ett nytt portnummer. När man tagit emot det nya port numret kopplar man ner sig från servern och initierar en ny förbindelse, nu mot den nya porten där nu en TTS med den aktuella infilen finns. För att förbereda TTS skickas ett start meddelande. När detta är gjort kan en simulering köras, pausas, stoppas eller avslutas. Klassen MessageHandler går nu vidare (i sin egen tråd) genom att skapa en MessageSender och går därefter in i en loop. Denna loop kommer att köras så fort vi anropar start() till dess att man stoppar den via ett anropar till stop(). C6. Systemdokumentation av gränssnittsmodul 10

Meddelanden tas emot precis på samma sätt som tidigare då vi hade en klass SimonListener som skötte detta, men med ett undantag. Det finns nu möjlighet för intresserade objekt att lyssna på meddelandetrafiken från servern genom att anmäla sig till en lyssnarlista. Då ett nytt meddelande kommer från servern meddelas samtliga lyssnare om detta och får även möjlighet att ta del av meddelandet som kommit. 6.2 MessageSender Denna klass som initieras av MessageHandler sköter om all kommunikation till servern. För att kunna skicka meddelanden till servern får denna klass en referens till den förbindelse som upprättats av MessageHandlern vid uppkopplingsförfarandet. Meddelanden skickas i och med den nya TOPSim-servern på ett nytt sätt jämfört med tidigare. För att säkerställa att alla meddelanden som skickas verkligen kommer fram till servern och behandlas finns möjlighet att sända dem synkront. Detta innebär att vi inte skickar några nya meddelanden förrän ett svar från servern kommer att det gått bra med det nyss skickade meddelandet. Idag används synkron kommunikation endast för tidtabellsrelaterade meddelanden. MessageSender är uppbyggd så att den har tre stycken köer, en systemkö, en trafikkö samt en tidtabellkö. För att skicka ett meddelande hämtar objekt en referens till MessageSender genom anrop till State.getSender(). Eftersom nästan alla objekt i Simson redan har en referens till State är detta inget problem utan fungerar precis som tidigare. Sedan kan de anropa metoden send( meddelande ). Också detta ser ut precis som tidigare så inga ändringar behöver göras i de objekt som vill skicka meddelanden. När man så anropat send med sitt meddelande kontrollerar MessageSender vilken typ av meddelande det rör sig om och lägger in meddelandet i rätt kö. Även MessageSender kör i en egen tråd och här finns en loop som tar ut meddelanden från köerna och skickar dem i prioritetsordningen system, trafik, tidtabell. Meddelanden som är av system eller trafik typ ( t.ex. start, stop, UTL etc.) skickas som de är och med dessa fungerar allt precis som tidigare (asynkront). Meddelanden som är tidtabellrelaterade skickas däremot synkront. Detta sker genom att man innan meddelandet skickas registrerar en AnswerReceiver knyten till meddelandet. Denna AnswerReceiver kommer att blocka den kö som meddelandet kom ifrån (i detta fall tidtabellkön) tills den mottagit ett svarsmeddelande från servern. Detta gör att inga fler tidtabellsrelaterade meddelandet kommer att skickas förrän man fått svar på det skickade. Vad som händer rent tekniskt är att man först blockar kön. Sedan skapas en AnswerReceiver. Denna kör i en egen tråd och får som inparametrar referenser till meddelandet och till kön som meddelandet kom ifrån. Genom att undersöka vilken typ av meddelande det rör sig om vet AnswerReceivern vilken typ av meddelande den skall vänta på. AnswerReceivern registrerar sig som lyssnare hos MessageHandlern och får på så sätt reda på vilka meddelanden som kommer från servern. Varje meddelande jämförs med det som den väntar på och man kollar även att svarskoden är 0 ( 0 = OK medan 1 = NotOK ). När den hittat rätt meddelande tar man bort den blockering som finns på kön och AnswerReceivern avslutas (dör). Då kan nästa meddelanden plockas ut från kön och skickas enligt samma princip. C6. Systemdokumentation av gränssnittsmodul 11

Rapportförteckning - översikt CATD C1. Kravspecifikation CATD, steg 1 C2. Kravspecifikation CATD, steg 2 C3. Kravspecifikation TOPSim, steg 1 C4. Systemdokumentation för beslutsstöd, DSS C5. Utvärdering av DSS-moduler C6. Systemdokumentation av gränssnittsmoduler C7. Utvärdering av gränssnittsmoduler C8. Kravspecifikation TOPSim, steg 2 C9. Kravbeskrivning för utbildnings- och träningssimulator C10. Seminariedokumentation C11. Sammanfattande slutrapport från CATD-projektet TOPSim T1. Testdokumentation av simulatorprototyp, steg 0 T2. Utvecklingsspecifikation av simulatorprototyp, steg 1 T3. Systemspecifikation av simulatorprototyp, steg 1 T4. Testdokumentation av simulatorprototyp, steg 1 T5. Utvecklingsspecifikation av simulatorprototyp, steg 2 T6. Systemspecifikation av simulatorprototyp, steg 2 T7. Testdokumentation av simulatorprototyp, steg 2 T8. Seminariedokumentation (Se CATD rapport C10) T9. Simulatorsystem inom tågtrafikstyrning, en kunskapsdokumentation T10. Sammanfattande slutrapport från TOPSim-projektet C6. Systemdokumentation av gränssnittsmodul 12