Mälardalens högskola Instutionen för datateknik Fredrik Fahlman Radio Components Sweden AB Handledare på Radio Components Sweden AB: Nader Kardouni Handledare på Idt: Anders Wall Windowsprogrammering av användargränssnitt
Sammanfattning Examensarbetets uppgift har varit att ta fram ett användarvänligt gränssnitt för ett subsystem. Med detta subsystem skall befintliga radiobasstationers prestanda gällande täckning, talkvalitet, datahastighet och kapacitet för digitala mobilsystem förbättras. Den datakommunikation som behandlats är mottagning av information från subsystemet via en kontrollenhet som heter ANIC (Antenna Near Interface Control). Denna information skall sedan presenteras på bildskärm. Från en PC skall man kunna skicka kommandon till kontrollenheten via den seriella porten. Allt som händer i systemet skall även kunna sparas ner på en logfil. Arbetet skall användas för en prototyp som vid detta tillfälle håller på att skapas. En stor del av arbetet har varit att sätta sig in i hur datakommunikationen skall ske, hur de meddelanden för de data som skickas ska se ut och sätta sig in i hur Visual Basic fungerar. 2
Innehållsförteckning 1. Inledning 4 1.1 Utvecklingsmiljö 4 2. Bakgrund och syfte 5 3. Problembeskrivning 5 4. Förenklad prototypmodell av tänkt applikation 6 5. Beskrivning av formulär, klasser och moduler 7 6. Beskrivning av sändning och mottagning av data 8 7. Problemanalys 11 8. Körningsexempel 12 9. Resultat och Framtida arbete 14 10. Egna erfarenheter och reflektioner 15 11. Appendix 16 Appendix1-Formulär 16 Appenxix2-Klasser 18 Appendix3-Moduler 20 10. Referenser 23 Bilagor A. Användarmanual B. Exempel på loggfil C. källkod 3
1. Inledning 1.1 Utvecklingsmiljö Den utvecklingsmiljö som använts är Microsoft Visual Basic 6.0. Att lära sig språket och förstå syntax var inte speciellt svårt (det tar dock tid). Visual Basic tillhandahåller färdiga komponenter (Ref [2]), vilka används genom att klicka på den komponent man vill ha och sedan rita ut den på ett så kallat formulär. Formuläret är egentligen en komponent det också, vilken innehåller andra komponenter. När man sedan skapat en komponent kan man sätta properties (egenskaper) för den komponenten (Ref [1], Ref [5]). I Visual Basic finns det ett verktygsfält där properties kan sättas. Verktygsfältet visar de properties för den komponents som är markerad. Vill man inte använda sig av verktygsfältet kan properties även skrivas direkt i koden. Vissa properties går dock endast att sätta under run-time och måste således skrivas direkt i koden. 4
2. Bakgrund och syfte På Radio Components ska det tas fram ett subsystem som förbättrar befintliga radiobasstationers prestanda gällande täckning, talkvalitet, datahastighet och kapacitet för digitala mobilsystem. I detta subsystem finns en kontrollenhet som heter ANIC (Antenna Near Interface Control). Denna kontrollenhet har bland annat till uppgift att kontinuerligt styra och övervaka ingående delsystem och rapportera dess status via en PC seriell port. Med hjälp av ett lämpligt program ska informationen presenteras och man ska även kunna skicka kommandon eller ladda ner nya värden till kontrollenheten. Syftet är att skriva ett program som skall användas för att ge en grafisk bild av vad som händer i systemet genom att ständigt få information från det subsystem som skall användas. Radio Components startades 1999 och produkten är således på prototypstadiet. Det gränssnitt som jag skall utveckla skall alltså användas för denna prototyp. 3. Problembeskrivning De uppgifter som examensarbetet består av är att skissa ett förslag på ett användargränssnitt, skriva ett program som ska kommunicera med kontrollenheten via PC seriell port samt implementera ett befintligt kommunikationsprotokoll i programmet. Dokumentering av programmet skall göras samt redovisas muntligt och skriftligt på företaget. Verktyget som skall användas är Visual Basic. Från början var det tänkt att Borlands CBuilder skulle användas, men i CBuilder fattades det vissa kommunikationsfunktioner för PC-porten. För att lösa detta skulle man bli tvungen att beställa dessa funktioner, i form av dll-filer, från en annan leverantör, vilket inte ansågs aktuellt. Microsoft däremot hade dessa funktioner färdiga och detta blev anledningen till att Visual Basic användes. Radio Components ska ta fram fyra antennmoduler (den del som sitter uppe i en mast), vilka ska ha formen av en triangel, en sexhörning, en niohörning och en tolvhörning. Varje sida på dessa moduler kallas för en sektor. Alla sektorer har varsin tillhörande ANC (Antenna Near Common) och åtta stycken ANB: er (Antenna Near Box). Dessa är kretskort som sitter i masten och samlar information om antennens status. Den information som ANC ska ge ska vara generell för den sektorn den tillhör. Information från en ANB skall däremot vara detaljrik. Vilken information som kretskorten ska ge är ännu inte definierad, men det kan t ex vara att kontrollera vilken temperatur som ett förstärkarsteg har vid aktuell uteffekt. ANC och ANB fungerar som slavar åt ett annat kort som heter ANIC. ANIC är placerad på lämpligt ställe på marken (inomhus). Detta kretskort kallas för master och begär information från sina slavar. Det som skall göras först är att ta fram en prototyp för sexhörningen och det är till den som examensarbetet kommer att sträcka sig. I framtiden skall dock gränssnitt för alla moduler finnas, vilka på ett enkelt sätt skall kunna länkas in i befintlig implementation. 5
4. Förenklad prototypmodell av tänkt applikation Figur 1.0 är till för att ge en överskådlig bild av hur applikationen huvudsakligen är tänkt att se ut. Genom att i en meny välja vilken antennmodul man vill titta på ska man få fram en bild av hur (i detta fall) en sexhörning ser ut. Genom att klicka på en ANB ska ett fönster med information om mätvärden för just den speciella ANB: n öppnas. Klickar man däremot på en ANC skall man få upp ett fönster med information om alla ANB: er som tillhör denna ANC samt de mätvärden som ANC har. När alla mätvärden för en ANB är normala så ska den ha färgen grön. För ANC skall normalt läge indikeras med lila färg. Om det uppstår en varning på en ANB/ANC så skall gul färg indikera detta. Uppstår det ett fel så ska detta visas med röd färg. När ett fel eller en varning uppstår skall dessutom varning/fel beskrivas i en textruta. Tidpunkten när varningen/felet inträffade skall också finnas med. Fig 1.0 Prototypmodellen för hur det är tänkt att gränssnittet ska se ut. Detaljer är inte medtagna. 6
5. Beskrivning av formulär, klasser och moduler Fem formulär har använts för att bygga upp applikationen. De formulär som för närvarande existerar är: En meny där användaren i framtiden ska kunna välja vilket subsystem denne vill konfigurera. I dagsläget kan endast det subsystem med sex sektorer väljas. Ett formulär som visar den grafiska bilden över subsystemet. Formulär där användaren har möjlighet att bestämma portinställningar. Vilken port som skall användas för att skicka och ta emot data kan t ex väljas här. Även hastighet på överföringen av data kan väljas här. Ett formulär som öppnas om användaren klickar på en ANC. Detta formulär kommer att innehålla information om status på tillhörande ANB:er samt visa status och värde på de mätvärden som gjorts på vald ANC. Ett formulär som öppnas om användaren klickar på en ANB. Detta formulär kommer att innehålla information om status och värde på de mätvärden som gjorts på vald ANB. Dessutom har två klasser skapats för de objekt som används i en grafisk bild på ett av formulären. Dessa klasser innehåller bland annat metoder för att rita ut objekten. Eftersom applikationen ska utökas med fler grafiska gränssnitt för tre ytterligare subsystem i framtiden, har två hjälpmoduler använts för den implementation som kommer att delas av dessa. Den ena modulen är en deklarationsmodul. Den fungerar som en h-fil gör i programmeringsspråket C. Den andra modulen innehåller funktioner som kommer att vara gemensamma för de subsystem som skall utvecklas. De variabler och metoder som finns i formulär, klasser och hjälpmoduler kan ses under appendix1, appendix2 och appendix3. 7
6. Beskrivning av sändning och mottagning av data Den meddelandesändning som jag hanterade var data mellan en PC och kontrollkortet. För att kommunikation mellan dessa skall upprättas måste användaren öppna den port som används av programmet (Visual Basic) för sändning och mottagning av data. När detta utförs skickas ett meddelande till kontrollkortet som säger att programmet är mottagligt för information av de mätvärden som görs på antennmodulen. Detta meddelande innehåller ett kommando som säger: huvudprogrammet är vaket, en adress som anger att det var huvudprogrammet som skickat meddelandet samt datum och tid när meddelandet sändes. Kontrollenheten svarar genom att skicka ett meddelande som innehåller samma kommando och samma adress, datum och tid samt status på ANC och ANB. Den status som sänds är status på varje ANC och ANB. Den kan alltså vara normal, varning eller fel. Detta meddelande används för att uppdatera den grafiska bilden på antennmodulen och skickas därmed med jämna mellanrum. För att få en bild av hur meddelandet ser ut så har en liten beskrivning gjorts och kan ses på fig.2.0. När användaren klickar på en ANB eller en ANC öppnas ett nytt fönster där aktuell ANC/ANB presenteras samt att det skickas ett meddelande till kontrollenheten där detta meddelande innehåller ett kommando som säger: ANB/ANC är aktiv, en adress som beskriver vilken ANB/ANC som användaren klickat på och datum och tid när fönstret öppnades. Detta meddelande innebär att information om respektive mätvärde önskas mottas. Kontrollenheten sänder då tillbaka ett meddelande med samma kommando och adress, datum och tid, status på de mätvärden som önskas samt själva mätvärdet. Fig. 2.1 visar hur meddelande ser ut. Detta meddelande skickas kontinuerligt så länge fönstret är uppe. När användaren stänger fönstret skickas ett liknande meddelande som det som sändes när fönstret öppnades. Enda skillnaden är att kommandot har bytts ut till: ANB/ANC ej aktiv. Om en varning eller ett fel inträffar skickas ett meddelande från kontrollenheten som innehåller ett kommando som anger fel eller varning, adressen till berörd ANB/ANC, datum och tid för händelsen, en kod som anger vad det är för fel/varning och vilket mätvärde som orsakade varningen/felet. Sist i meddelandet finns det felaktiga mätvärdet. När en varning/fel åtgärdats skickas ett liknande meddelandet bortsett från kommandot som har bytts ut till varning/fel är åtgärdat. Detta meddelande kan åskådliggöras under fig. 2.2. 8
Fig. 2.0. 64 byte långt meddelande som används för uppdatering av Sector6Menu-fönstret. Kommando Adress Datum & Tid Status Anc Status Anb ---------------------------------------------------------- ------------------- ------------------- 8byte 8byte 48byte Header: Kommando - 1 byte. Adress - 1 byte. Datum & Tid - 6 byte. Status Anc - 8 byte där de 6 första byten beskriver status för Anc1-Anc6. De två sista byten är reserv. Status Anb - 48 byte där de första 8 byten tillhör Anb1-Anb8 på Anc1. De andra 8 byten tillhör Anb1-Anb8 på Anc2 osv. Fig. 2.1 44 byte långt informationsmeddelande som mottags när ett infoanb/infoanc fönster öppnas. Kommando Adress Datum & Tid Status Mätvärde ----------------------------------------------- --------------------- ---------------------------------------- 8byte 4byte 32byte Header: Kommando - 1 byte. Adress - 1 byte. Datum & Tid - 6 byte. Status Mätvärde - 4 byte som anger vad varje mätvärde har för status(fel/varning/ok). - 32 byte som innehåller 16 möjliga mätvärden. 9
Fig 2.2. (fel/varningsmeddelande) 16 byte lång. Kommando Adress Datum & Tid Kod Mätvärde Reserv ------------------------------------------------- ---------------- --------------------- --------------------- 8byte 2byte 2byte 4byte Header: Kommando - 1byte. Adress - 1 byte. Datum & Tid - 6 byte. Kod Mätvärde - 2 byte där första byten talar om vad det är för fel/varning och den andra byten talar om vilket mätvärde som orsakade felet/varningen. - 2 byte som innehåller det felaktiga mätvärdet. 10
7. Problemanalys Eftersom en grafisk bild av systemet skall finnas med i applikationen var ett av problemen att komma fram till en lösning på hur denna bild skulle presenteras. Att dela upp bilden i objekt gjorde att det blev enklare att hantera händelser som påverkade bilden. De händelser som hanterades på bilden var att ändra färger på ANB/ANC om varning/fel inträffade. Det skapades alltså objekt för ANC och för ANB. Det blev även enklare att läsa och förstå den kod som implementeras om objekt användes. Mindre implementationsproblem uppstod i samband med grafisk presentation av ANC. Att skapa en rektangel används genom att använda sig av en färdig metod som ritar ut en linje. Denna metod får då användas fyra gånger för att rita ut en rektangel. I Visual Basic finns det en metod som ritar ut en rektangel genom att ange övre vänstra hörnets koordinat samt nedre högra hörnets koordinat, men denna metod kan inte rita ut vridna rektanglar, vilket jag önskade. Meddelandesändningen medförde problem pga. att Visual Basic inte hann med att ta vara på data från kontrollenheten innan nästa data kom in i mottagarbufferten. För att lösa detta var man tvungen att antingen använda sig av en fördröjning i kontrollenheten eller en fördröjning i den funktion som hanterar porten i Visual Basic. 11
8. Körningsexempel För att få en bild av hur applikationen ser ut har jag simulerat händelser mellan en PC och kontrollkortet. Detta har utförts genom att jag har skickat meddelanden mellan komport1 och komport2 på samma dator. Det program som jag utvecklat har använt sig av den ena porten och för att kunna skicka meddelanden mellan två portar har jag skrivit ett litet program som sänder och tar emot data. I bilaga A finns en användarmanual som beskriver vad som kan göras från de olika fönstren. Fig 1.1 Systemet väntar på en uppkoppling. Fig 1.2 Uppkoppling är gjord och allt är ok. När systemet väntar på en uppkoppling visas det grafiskt genom att modulen har svart färg på alla ANC och ANB. Dessutom är oktagonen röd. När uppkoppling skett färgas oktagonen grön, alla ANC:er färgas lila och alla ANB:er gröna. Fig 1.3 Användaren har klickat på en ANC. Fig 1.3 En varning och ett fel har inträffat. När en användare klickat på en ANC visar ett nytt fönster informationen om den aktuella ANC: n. Om ingen information har mottagits från antennen är fälten tomma. Anledningen till att det står dummy1-dummy8 är att ledningen på Radio Components vid denna tidpunkt inte bestämt vilka mätvärden som ska göras, varken på ANB eller ANC. En varning visas med gul färg och fel med röd färg. I fig. 1.3 har således en varning inträffat på ANC1 och ett fel har inträffat på dess ANB2. 12
Fig 1.4. Användaren har stängt av sektor2. En användare kan stänga av en hel sektor via en knapp i informationsfönstret. Hela sektorn stängs därmed av för mottagning av information och detta visas visuellt med att hela sektorn färgas grå. Användaren är i denna stund på väg att öppna loggfilen för att kunna spara information. 13
9. Resultat och framtida arbete Mottagning/sändning av data och hanteringen av detta data var den bit som orsakade mest bekymmer och bland annat storleken på meddelanden kom att ändras många gånger under arbetets gång. Resultatet av detta blev många kodförändringar, vilket tog mycket tid. Arbetet har resulterat i att man lättare kan se om fel, varningar uppstått och dessutom avgöra vad som gick fel och varför. Med programmet kan man dessutom beordra subsystemet att utföra handlingar (som ännu är Odefinierade). Porthastigheten som är 115 200 baud är relativt låg hastighet för den mängd data som ska överföras mellan en PC och kontrollkortet. En lösning på det problemet är att man kan använda sig av ett nätverkskort istället för att använda en komport. Framtida arbete skall genomföras genom att ta fram grafiska gränssnitt för alla subsystem. Dessutom skall alla grafiska gränssnitt utökas med mer funktionalitet än det gränssnitt som examensarbetet bestod i att göra. Ett mål för framtiden är att kunna använda en webbrowser som användargränssnitt. Att färgblinda operatörer ska kunna använda sig av programmet är också ett framtida mål som måste uppfyllas. 14
10. Egna erfarenheter och reflektioner Att Visual Basic blev det språk som användes medförde att jag blev tvungen att först inhämta en del material, dels från Internet (Ref[5]), dels från en CD-ROM skiva, framtagen av Microsoft. Den mesta informationen inhämtade jag dock från böcker(ref[1], Ref[2], Ref[3], Ref[4]). Detta gjorde att jag lärde mig grunderna rätt fort. Jag var positiv till att Visual Basic blev det verktyg som jag skulle använda, eftersom jag då fick lära mig ytterligare ett språk som jag vill kunna. Att försöka skriva så lättförståelig kod som möjligt var en erfarenhet jag lärde mig. Under skoltiden har det aldrig varit någon annan som skall försöka utöka den kod man skrivit och därmed har man förmodligen slarvat med både kommentarer och att göra program så förståeliga som möjligt. Det är inte alltid bra att optimera sin kod för mycket. Det kan straffa sig i form av tid när nästa programmerare tar vid där man själv slutat. 15
Appendix Appendix1-Formulär SystemMenu: Metoder: cmdok_click cmdquit_click Meny där man väljer vilket system man vill titta på. - Knapp för bekräftning av systemval. - Avslutar programmet. Sector6Menu: I denna meny finns bilden över sektorerna. Metoder: cmdmenu_click - Knapp för att återgå till SystemMenu. cmdsend - Knapp för att sända valt kommando. cmdquit_click - Knapp för att avsluta applikationen. Form_Load - Anropas när formuläret laddas. SystemInit - Sätter startvärden. GreenImage_Click - Stänger av systemet vid klick. mnuport_click - Öppnar/stänger porten (från menyn). mnuproperties_click - Väljs från menyn när konfigurering av porten vill göras. mnustart_click - Väljs för att starta loggning av data ner på fil. mnustop_click - Väljs för att stoppa loggning. mnuexit_click - Avslutar programmet. mnutomenu_click - Tar en tillbaka till SystemMenu. MSComm1_OnComm- Hanterar händelser som rör porten. Picture1_MouseDown - Händelse som genereras om musen är nedtryckt. Picture1_MouseMove - Händelse som genereras om musen har vissa koordinater. redimage_click - Startar systemet vid klick. Timer1_Timer - Uppdaterar systemet vid lämpliga intervaller. 16
InfoAnb: Visar information om den Anb man valt att se på. Metod: cmdexit - Knapp för att stänga fönstret. StartStopCmd_Click - Knapp för att stänga av informationen till en Anb. InfoAnc: Visar information om de Anb: er som tillhör vald Anc. Metod: CmdExit - Knapp för att stänga fönstret. StartStopCmd_Click - Knapp för att stänga av informationen till en Anc. Properties: Variabler: IFlow Inställningar för porten. - Håller reda på vilken flödeskontroll man har. Metoder: LoadPropertySettings - Initierar de värden som går att välja. cmdcancel - Avbryter inställningen. cmdok_click - Sätter och sparar de val man gjort. FormLoad - Sätter storleken på fönstret. optflow_click - Sätter vald flödeskontroll. 17
Appendix 2-Klasser Anb: Klassen Anb är en hjälpklass för att skapa Anb-objekt. När man skapar variabler så genererar Visual Basic egna metoder som heter set, get och let. Jag har valt att inte ta upp de metoderna för var och en eftersom de gör samma saker, så jag beskriver de här. Detta gäller även för klassen Anc. let: get: set: Anropas när man tilldelar ett värde till en klassvariabel. Anropas när man tilldelar an annan variabel värdet av en klassvariabel. Anropas när man skapar ett objekt. Variabler: mvarx mvary mvarcolor mvarradius mvarwarningflag mvarerrorflag mvarshowinfo mvarewmessage mvarnoconnection - Håller reda på objektets x koordinat. - Håller reda på objektets y koordinat. - Håller reda på objektets färg. - Håller reda på objektets radie. - Flagga för att kontrollera om en varning inträffat. - Flagga för fel. - Används för skapande av infoanb objekt. - Sträng för att hålla reda på varningar och fel. - Flagga som indikerar kontakt med en Anb. Metoder: InitiateEWMessage - Initierar strängen EWMessage. GetIndexEWMessage - Kollar en flagga från strängen EWMessage på en viss plats. SetIndexEWMessage - Sätter en flagga i strängen EWMessage på en viss plats. changecolor - Byter färg på objektet. drawanb - Ritar ut objektet. info - Hoppar till informationsformuläret som hör till objektet. Sänder ett meddelande till antennen om att information kan börja sändas till mig. isincircle - Kontrollerar om musens x, y-koordinater är inom objektet. 18
Anc: Hjälpklass för att skapa Anc-objekt. Variabler: mvarupleftx - Håller reda på objektets x, y-koordinater i respektive hörn. mvaruplefty mvaruprightx mvaruprighty mvarlowleftx mvarlowlefty mvarlowrightx mvarlowrighty mvarcolor - Håller reda på objektets färg. mvarradius - Håller reda på cirkelns radie. mvarmiddlecirclex - Håller reda på x, y-koordinaterna för cirklarna inuti rektanglarna. mvaruppercirclex mvarlowercirclex mvarmiddlecircley mvaruppercircley mvarlowercircley mvarupperxconstant - Konstanter för att ange avstånd från mitten-cirkeln. mvarupperyconstant mvarlowerxconstant mvarloweryconstant mvaranbstartnumb - Håller reda på vilka Anb:er som hör till vilka Anc:er. mvarbrokenline - Flagga som indikerar om Anc vill ha information eller inte. mvarshowinfo - Används för att skapa infoanc-objekt. mvarewmessage - Sträng för att hålla reda på varningar och fel. mvarnoconnection - Flagga som indikerar kontakt med en Anc. Metoder: InitiateEWMessage - Initierar strängen EWMessage. GetIndexEWMessage - Kollar en flagga från strängen EWMessage på en viss plats. SetIndexEWMessage - Sätter en flagga i strängen EWMessage på en viss plats. initiateanc - Initierar värden på Anc. isinrectangle - Kontrollerar om musen har sina koordinater inom rektangeln. info - Hoppar till informationsformuläret som hör till objektet. Sänder meddelande till antennen om att information kan börja sändas till mig. changecolor - Byter färg på objektet. drawanccircle - Ritar ut cirklarna. drawancborder - Ritar ut en ram runt cirklarna för att få en rektangel. 19
Appendix3-Moduler HelpFunctions GetCode DisplayInfoAnb DisplayInfoAnb DisplayEWAnc DisplayEWAnb UpdateSystem - Översätter varning/fel-koder till text. - Visar värden för Anb på skärmen som erhållits från antennen. - Visar värden för Anc på skärmen som erhållits från antennen. - Visar varningar och fel värden när ett fel/varnings-meddelande inträffar. - Visar varningar och fel värden när ett fel/varnings-meddelande inträffar. - Funktion som alltid anropas om systemet skall uppdateras och som sedan fördelar ut uppgifterna till underliggande funktioner. UpdateMainWindow - Funktion som anropas om fönstret Sector6Menu skall uppdateras. AllGone UpdateInfoAnb UpdateInfoAnc SystemOn SaveFile HandleData - Letar igenom strängen EWMessage och kollar om alla flaggor tagits bort. - Uppdaterar infoanb-formuläret (om detta är synligt) med hjälp av anrop till antingen DisplayInfoAnb eller DisplayEWAnb. - Uppdaterar infoanc-formuläret (om detta är synligt) med hjälp av anrop till antingen DisplayInfoAnc eller DisplayEWAnc. - Anropas när man fått svar från antennen på en begäran om uppkoppling. - Sparar information på en log-fil om användaren klickat på StartLogfile i menyn. Klickar användaren sedan på StopLogfile i menyn så stängs filen. - Hanterar den data som kommer från porten genom att lägga data i rätt strukturer. 20
Declarations Här är globala variabler och strukturer deklarerade, vilka används i de olika formulären. Filename - Namnet på filen som ska sparas. Connected - Flagga som indikerar om vi har fått kontakt med antennen. AnbArray - Innehåller Anb-objekten. AncArray - Innehåller Anc-objekten. FileSize - Håller reda på filens storlek. FileNr - Nummer på filen. SaveFlag - Indikerar att sparning till fil kan göras. MSB_IN_ADDRESS - Mest signifikanta bitarna i adressen. LSB_IN_ADDRESS - Minst signifikanta bitarna i adressen. ANB_NR - Håller reda på rätt nummer i Anb-Arrayen. ANC_NR - Håller reda på rätt nummer i Anc-Arrayen. SendFrame - Ram som innehåller de data som ska sändas till antennen. START - Flagga som indikerar att Start-knappen har tryckts in på infoformuläret. SHUTDOWN - Flagga som indikerar att Shutdown-knappen har tryckts in på infoformuläret. History - Innehåller namnen på filerna som ska sparas. HistoryCount - Räknare för att hålla reda på vilken fil man sparar till. Counting - Räknare som räknas upp varje gång man inte fått svar från antennen vid ett uppkopplingsförsök. MAX_EW_LENGTH MAX_INFO_LENGTH MAX_MEASURE_LENGTH MAXSIZE MAX_CONNECT_ATTEMPTS - Längden på fel/varnings-meddelandet. - Längden på info-meddelandet. - Längden på den del där värdena ligger i infomeddelandet. - Största tillåtna storleken på filerna. - Största antalet försök till uppkoppling innan felmeddelande fås. COMMANDS AwakeAckFlag Frame REST DIV ANBSTART ANCSTART PcMessage - Håller reda på vilket meddelande som mottagits. - Flagga som indikerar om svar vid uppkopplingsförfrågan fåtts. - Array som innehåller data som mottagits. - Används för att få fram ett nummer från 1-8 ifrån AnbArray som går från 0-47. - Används för att få fram ett nummer från 1-6 ifrån AncArray som går från 0-5. - Flagga som indikerar att Start-knappen blivit intryckt på ett Anbformulär. - Flagga som indikerar att Start-knappen blivit intryckt på ett Ancformulär. - Flagga som används när ramar som sänds från pc skall sparas. 21
InfoMsg Date Status Pos EWMsg Date Code Value SendingMsg Date Sector Anb MainInfoMsg Date Sector Anb - Struktur för info-meddelande som innehåller: - Datum och tid. - Status på mätvärden (kan vara varning, fel eller ok). - Innehåller alla mätvärden. - Struktur för fel/varnings-meddelande som innehåller: - Datum och tid. - Kod som senare omvandlas till text. - Mätvärdet. - Struktur för meddelanden som sänds från pc som innehåller: - Datum och tid. - Vilken Anc det berör. - Vilken Anb det berör. - Struktur för uppdatering av Sector6Menu-fönstret och den innehåller: - Datum och tid - Status för alla Anc - Status för alla Anb Dessutom förekommer dessa : -Färgkonstanter för uppdatering av den grafiska bilden. -Kod för fel/varningsmeddelanden. -Kod för kommando. -Mätvärden i info-meddelande som tillhör en viss status: Det finns fyra statusbytes och varje byte håller reda på fyra mätvärden. Det kan alltså finnas max 16 mätvärden. 22
10. Referenser Ref [1] Eric Stroo, Maureen Williams Zimmerman (1998), Visual Basic 6.0 Programmers Guide, Microsoft Press Ref[2] Eric Stroo, Maureen Williams Zimmerman (1998), Visual Basic 6.0 Controls Reference, Microsoft Press Ref[3] Eric Stroo, Maureen Williams Zimmerman (1998), Visual Basic 6.0 Component Tool Guide, Microsoft Press Ref[4] Ref[5] Eric Stroo, Maureen Williams Zimmerman (1998), Visual Basic 6.0 Language Reference, Microsoft Press Microsoft Product Support Service http://www.support.microsoft.com/ 23