Blog van mijn afstudeerproject (Technische informatica)
woensdag 11 april 2012
donderdag 5 april 2012
Afstuderen!
Volgende week is het dan zo ver, ik ga afstuderen.
Het verslag is klaar en ingebonden, nu nog een poster en presentatie in elkaar draaien!
Het verslag is klaar en ingebonden, nu nog een poster en presentatie in elkaar draaien!
zondag 25 maart 2012
De laatste loodjes..
Het einde is in zicht, het tussenverslag was bijna helemaal goed en aangezien het project ook al bijna helemaal klaar is (laatste puntjes op de i zetten). Omdat ik al zo ver ben is het mogelijk om al in schoolweek 10 van dit semester af te studeren. Schoolweek 10 valt in de week na Pasen dus dat is al erg snel.
Dus druk aan slag met het eindverslag!
Dus druk aan slag met het eindverslag!
donderdag 8 maart 2012
Tussentijdse status
Tijd voor een status update..
De afgelopen weken is er veel gedaan en getypt. Het tussenverslag is bijna klaar en daarmee ook het systeemdesign.Zo terugkijkend op dit blog en in mijn aantekeningen zie ik toch wel dat dit project groot is, groter dan ik aan het begin dacht. De planning die Edwin en ik hebben opgesteld is totaal niet haalbaar gebleken, dit mede doordat we ook nog een heel leuk en interessant semester Iphone development moesten volgen.
Momenteel ben ik ook bezig om de laatste hand te leggen aan mijn deel van de proof of concept.
Wat is er momenteel klaar:
Agent
Deze stuurt de actuele cpu, geheugen, netwerk en disk status naar de server. Daarnaast wordt er ook connectie gemaakt met een worklistserver om de grootte van een werklijst en de snelheid waarmee deze binnenkomt te loggen en naar de server te sturen. Omdat het uitlezen van de röntgensystemen niet mogelijk bleek te zijn, tenminste niet op dit moment heb ik dus geen dedicated agent voor deze systemen kunnen maken. De algemene agent laat echter wel duidelijk het concept en de werking zien.
Server
De server en SQL database zijn bijna klaar, de data wordt al netjes ontvangen en in de juiste tabellen geplaatst. Het laatste stukje behelst het communiceren met de verschillende Gui's. Dit is voor 90% klaar. Het communicatieprotocol met behulp van JSON files is ook al netjes beschreven en kan door andere Edwin gebruikt gaan worden in zijn agent. Aangezien ik na het wireshark onderzoek van de röntgensystemen kon concluderen dat dit momenteel niet tot een bruikbare oplossing zou lijden heb ik extra tijd besteed aan de server, sql en communicatie. Tijd die achteraf hard nodig was want dit was toch meer werk dan ik ingeschat had.
SQL
De Microsoft SQL Server draait momenteel op mijn laptop en de basis tabellen zijn aangemaakt. In het verslag zijn deze tabellen ook allemaal netjes benoemt en uitgelegd.
De afgelopen weken is er veel gedaan en getypt. Het tussenverslag is bijna klaar en daarmee ook het systeemdesign.Zo terugkijkend op dit blog en in mijn aantekeningen zie ik toch wel dat dit project groot is, groter dan ik aan het begin dacht. De planning die Edwin en ik hebben opgesteld is totaal niet haalbaar gebleken, dit mede doordat we ook nog een heel leuk en interessant semester Iphone development moesten volgen.
Momenteel ben ik ook bezig om de laatste hand te leggen aan mijn deel van de proof of concept.
Wat is er momenteel klaar:
Agent
Deze stuurt de actuele cpu, geheugen, netwerk en disk status naar de server. Daarnaast wordt er ook connectie gemaakt met een worklistserver om de grootte van een werklijst en de snelheid waarmee deze binnenkomt te loggen en naar de server te sturen. Omdat het uitlezen van de röntgensystemen niet mogelijk bleek te zijn, tenminste niet op dit moment heb ik dus geen dedicated agent voor deze systemen kunnen maken. De algemene agent laat echter wel duidelijk het concept en de werking zien.
Server
De server en SQL database zijn bijna klaar, de data wordt al netjes ontvangen en in de juiste tabellen geplaatst. Het laatste stukje behelst het communiceren met de verschillende Gui's. Dit is voor 90% klaar. Het communicatieprotocol met behulp van JSON files is ook al netjes beschreven en kan door andere Edwin gebruikt gaan worden in zijn agent. Aangezien ik na het wireshark onderzoek van de röntgensystemen kon concluderen dat dit momenteel niet tot een bruikbare oplossing zou lijden heb ik extra tijd besteed aan de server, sql en communicatie. Tijd die achteraf hard nodig was want dit was toch meer werk dan ik ingeschat had.
SQL
De Microsoft SQL Server draait momenteel op mijn laptop en de basis tabellen zijn aangemaakt. In het verslag zijn deze tabellen ook allemaal netjes benoemt en uitgelegd.
donderdag 16 februari 2012
JSON, SQL en meer..
Afgelopen weken weer behoorlijk wat werkt verzet, druk bezig met het maken van het tussenverslag (waar ondermeer mijn SDD in verwerkt zit) en ook bezig geweest met het verder uitwerken van de software.
Naar aanleiding van een semester Iphone ontwikkeling waar collega Edwin Kailuhu gewerk heeft met JSON heb ik in ons project de communicatie tussen agent en server omgezet naar JSON. Voordeel is de compactere opbouw en beter leesbaar. Er wordt een object van het type DataPacket (zelf gedefinieerd) aangemaakt en gevuld met gegevens, de opbouw van dit object is vergelijkbaar met de opbouw van het eerder gebruikte xml formaat. Dit object wordt vervolgens door de json.net bibliotheek omgezet in een json string en verzonden naar de server. De server zet de string vervolgens weer om in een object van het type DataPacket.
Het formaat van het DataPacket is als volgt:
Daarnaast heb ik een SQL server opgebouwd met nu nog een enkele tabel waarin alle data wordt geplaatst. Deze database wordt natuurlijk straks netjes opgezet met meerdere tabellen. Het ontwerpen van deze tabellen is een behoorlijke klus, vooral omdat we tijdens de opleiding niet veel databases hebben gehad. Hierdoor mis ik de handigheid om tabellen te ontwerpen. Na een middag puzzelen ben ik tot de (voorlopig) volgende indeling gekomen.
Naar aanleiding van een semester Iphone ontwikkeling waar collega Edwin Kailuhu gewerk heeft met JSON heb ik in ons project de communicatie tussen agent en server omgezet naar JSON. Voordeel is de compactere opbouw en beter leesbaar. Er wordt een object van het type DataPacket (zelf gedefinieerd) aangemaakt en gevuld met gegevens, de opbouw van dit object is vergelijkbaar met de opbouw van het eerder gebruikte xml formaat. Dit object wordt vervolgens door de json.net bibliotheek omgezet in een json string en verzonden naar de server. De server zet de string vervolgens weer om in een object van het type DataPacket.
Het formaat van het DataPacket is als volgt:
Daarnaast heb ik een SQL server opgebouwd met nu nog een enkele tabel waarin alle data wordt geplaatst. Deze database wordt natuurlijk straks netjes opgezet met meerdere tabellen. Het ontwerpen van deze tabellen is een behoorlijke klus, vooral omdat we tijdens de opleiding niet veel databases hebben gehad. Hierdoor mis ik de handigheid om tabellen te ontwerpen. Na een middag puzzelen ben ik tot de (voorlopig) volgende indeling gekomen.
Ik ben uitgegaan van een zo flexibel mogelijk systeem met het oog op toekomstige uitbreiding. Daarnaast is denk ik de opzet ook goed te combineren met bijvoorbeeld een mobiel dashboard of een weergave via een webbrowser.
Ook op het vlak van mijn WireShark project kan ik vordering melden, inmiddels worden de poorten van 2 röntgenkamers gekopieerd naar 2 andere poorten en kan ik eenvoudig inpluggen en de data analyseren.
donderdag 2 februari 2012
(semi) Dynamische GUI
Ik had het idee om het dashboard zo flexibel mogelijk te maken, het moet dus mogelijk zijn om verschillende pagina's te maken om apparaten te groeperen op afdeling, type of locatie. Een hele dynamische gui is voor dit proof of concept misschien nog wat te ver gezien de beschikbare tijd. Maar een tussenweg moest toch te vinden zijn.
Ik denk dat ik die tussenweg heb gevonden, namelijk een soort van standaard layout waar de diverse items dynamisch aangepast kunnen worden. In de eerste eenvoudige opzet acht items en een label. Op de achtergrond heb ik een array met verschillende vensters (momenteel nog gevuld met slechts 1 venster) en ieder venster heeft maximaal 8 items met daarin de beschrijving, label naam, de modaliteit naam (om een apparaat te koppelen aan een item) en een eventuele actie omschrijving voor de button (het groene vinkje, rode kruis of geen verbinding symbool). Hiermee wordt het straks mogelijk om door te klikken naar een volgende pagina.
Daarnaast heb ik getest of meerdere agents contact kunnen maken met mijn Intersect Server, zoals te zien in onderstaand filmpje is dit gelukt.
donderdag 19 januari 2012
Intersect; een eerste pre-pre-pre-preview
Een eerste blik op hoe simpel een dashboard kan zijn.
De agent haalt gegevens op van het systeem en bewaakt het errorlog van mijn virtuele röntgenkamer. De gegevens worden verzonden en wanneer de errorlog wordt aangepast omdat er een fout wordt weggeschreven (dit simuleer ik met het venster linksonder) dan wordt er een melding richting de server gestuurd dat er een critical error is.
De server ontvangt de data en ziet dat het om een critical melding gaat, vervolgens wordt het vinkje een rood kruis. Door op het kruis te klikken wordt de status weer teruggezet naar het groene vinkje.
donderdag 12 januari 2012
Systeemdata => XML => TCP/IP => Server => XML
Weer een belangrijk stuk werkend, er wordt systeem informatie opgevraagd uit de client zoals bijvoorbeeld Windows Taakbeheer dit ook doet. De informatie wordt omgezet in een xml formaat en vervolgens via tcp/ip verstuurd naar een server welke de file weer verder verwerkt.
Dit wordt straks de basis voor de communicatie tussen de verschillende agents en de centrale server.
donderdag 5 januari 2012
SPAN(nend)
Omdat het communicatie protocol van de rontgenkamers niet openbaar is en het niet mogelijk is eventuele foutmeldingen ook naar een 2e adres te sturen ben ik genoodzaakt om het protocol te reverse engineeren, tenminste te proberen want als het om versleutelde data gaat kan dit een probleem worden.
De beste manier is om dus mee te luisteren met het netwerkverkeer, dit wordt vaak gedaan door een hub tussen pathpunt en apparaat te zetten waarop een systeem wordt aangesloten met daarop Wireshark.
Gelukkig gebruiken wij hier CISCO switches en deze hebben een vreselijk handige functie SPAN.
SPAN staat voor Switched Port Analyzer en is een manier om data te kopieren naar een andere poort zodat hier met behulp van een sniffer (Wireshark) de data geanalyseerd kan worden.
De beste manier is om dus mee te luisteren met het netwerkverkeer, dit wordt vaak gedaan door een hub tussen pathpunt en apparaat te zetten waarop een systeem wordt aangesloten met daarop Wireshark.
Gelukkig gebruiken wij hier CISCO switches en deze hebben een vreselijk handige functie SPAN.
SPAN staat voor Switched Port Analyzer en is een manier om data te kopieren naar een andere poort zodat hier met behulp van een sniffer (Wireshark) de data geanalyseerd kan worden.
Door nu op de rontgenkamer fouten te genereren en de kamer opnieuw te starten zodat deze weer aangemeld wordt bij leverancier kan ik hopelijk gericht zoeken naar de gebruikte protocollen en deze dus reverse engineeren. Wanneer deze gegevens bekend zijn is het mogelijk om een eenvoudige sniffer te programmeren welke toegevoegd kan worden aan het project.
Het werkend krijgen van dit systeem zou heel erg mooi zijn aangezien dan alle foutmeldingen afgevangen kunnen worden.
Vandaag heb ik de de juiste pathpunten en switches gezocht en overleg gehad met collega's hoe ik dit het beste kan aanpakken. Gelukkig zijn er voldoende vrije poorten op de switches en worden deze ook niet al te zwaar belast zodat het gebruiken van SPAN geen performance problemen zou moeten veroorzaken.
dinsdag 3 januari 2012
Happy New Year!
Het nieuwe jaar is weer gestart, iedereen nog de beste wensen voor 2012.
Afgelopen week vakantie gehad en daardoor geen updates gedaan in dit blog, ondertussen wel het een en ander geprogrammeerd. Het project lijkt iets uit te gaan lopen onder andere doordat ik doormiddel van Wireshark het protocol moet gaan ontrafelen waarmee onze Röntgenkamers communiceren met de leverancier. Dit staat de komende weken op de planning, hiervoor moeten echter eerst nog wat instellingen aangepast worden op enkele switches zodat ik met een laptop of pc de lijn kan "afluisteren".
Op andere fronten gaat het gelukkig een stuk beter, ik heb al een aantal onderdelen voor de agent en server werkend en ook het binnenhalen van werklijsten met behulp van de Dicom Modality Worklist is mogelijk.
De afgelopen weken heb ik de volgende onderdelen werkend gekregen:
Afgelopen week vakantie gehad en daardoor geen updates gedaan in dit blog, ondertussen wel het een en ander geprogrammeerd. Het project lijkt iets uit te gaan lopen onder andere doordat ik doormiddel van Wireshark het protocol moet gaan ontrafelen waarmee onze Röntgenkamers communiceren met de leverancier. Dit staat de komende weken op de planning, hiervoor moeten echter eerst nog wat instellingen aangepast worden op enkele switches zodat ik met een laptop of pc de lijn kan "afluisteren".
Op andere fronten gaat het gelukkig een stuk beter, ik heb al een aantal onderdelen voor de agent en server werkend en ook het binnenhalen van werklijsten met behulp van de Dicom Modality Worklist is mogelijk.
De afgelopen weken heb ik de volgende onderdelen werkend gekregen:
- Email communicatie (server en client)
- XML files maken, schrijven en lezen
- Versturen van bovenstaande xml files (doormiddel van socketcommunicatie)
Neem daarbij nog de eerder functionerend gekregen onderdelen:
Windows service in c#
Hardware monitoring (van het werkstation / pc)
En de blokkendoos voor het Intersect begint al aardig compleet te worden. De grote uitdaging zal hem zitten in het samenvoegen van al deze onderdelen tot een stabiele windows service.
Om de agent compleet te krijgen moet ik de volgende zaken nog aanpakken:
- Protocol communicatie Röntgenkamers met leverancier (dit om foutmeldingen af te kunnen vangen van deze kamers.
- Logfile analyser
- Netwerk ping en Dicom ping
Daarnaast moet ik nog starten aan de centrale server (samen met Edwin Kailuhu) en aan het dashboard voor de afdeling.
Abonneren op:
Posts (Atom)