Larmprogram för grannar
|
|
- Marie Åkesson
- för 6 år sedan
- Visningar:
Transkript
1 Industrial Electrical Engineering and Automation CODEN:LUTEDX/(TEIE-3023)/1-39/(2013) Larmprogram för grannar Filip Göransson Division of Industrial Electrical Engineering and Automation Faculty of Engineering, Lund University
2 Larmprogram för grannar LTH Ingenjörshögskolan vid Campus Helsingborg Computer engineering / Datateknik Examensarbete: Filip Göransson
3 Copyright Filip Göransson LTH Ingenjörshögskolan vid Campus Helsingborg Lunds universitet Box Helsingborg LTH School of Engineering Lund University Box 882 SE Helsingborg Sweden Tryckt i Sverige Media-Tryck Biblioteksdirektionen Lunds universitet Lund 2012
4 Sammanfattning I examensarbetet analyseras och utvecklas en alternativ process vid utlösning av larm i en bostad, där grannar uppmanas samverka med hjälp av ett larmprogram. Larmföretaget Trex, uppdragsgivaren till arbetet undrar om det är möjligt att med hjälp av Skype skapa en tjänst som liknar denna alternativa process. Den tilltänkta tjänsten inleds med att en kund får vetskap om att larmet i dennes bostad utlösts. Kunden väljer därefter att delge informationen till sina kontakter/grannar eller att strunta i det. Informationsförmedling görs genom att ringa ett telefonsamtal till ett online-nummer som tillhör ett Skype-konto. Kontakterna till kunden rings sedan upp via ett larmprogram som innehåller kod för kommunikation med Skype och en databas. Vid svar på samtal spelas ett ljudklipp upp med adressen till bostaden. Kontakterna i närheten kan därefter agera och titta till den specificerade bostaden. Analysen som görs i arbetet berör framförallt Skype API eftersom huvudfrågan i arbetet är: Går det att använda Skype till att larma? Vilka datastrukturer som är lämpliga för kommunikation med databasen analyseras också. Resultatet av examensarbetet ger indikationer på att det går att använda Skype för att larma. Det utvecklade programmet saknar dock uppspelningsfunktion vilket innebär att det inte kan användas helt och hållet ännu. Utförligare testning och vidareutveckling av slutgiltigt program krävs följaktligen innan programmet kan användas på ett tillfredsställande och meningsfullt vis. Utvecklingen av programmet gjordes med programmeringsspråket Visual Basic och ramverket.net tillsammans med Microsoft SQL Server. Nyckelord: Skype,.NET, Visual Basic, larmprogram, databas, Trex
5 Abstract This thesis is about analyzing and developing an alternative response process when an alarm is triggered in a home. Neighbors are in this alternative urged to cooperate with the help of an alarm program. The alarm company Trex, the author of this assignment, is wondering if it would be possible to create a service that resembles the alternative described above with the help of Skype. The process commences with a customer being given the knowledge that the alarm in his or hers home has been triggered. The customer then chooses whether or not to share this information with the contacts/neighbors. If the customer chooses to share the information he or she calls an online number connected to a Skype account. Via an alarm program containing code used to communicate with Skype and a database, the contacts are then called. If a call is answered an audio clip plays with the customer s address information. The contacts available in the vicinity can then act upon hearing this information and check out the specified home. The analyzing that is done in this thesis especially concerns Skype API, this is because of the main question that is asked in this thesis, which is: Is it possible to use Skype to alarm? The rest of the analyzing concerns the data structure to use when managing data to and from the database. The result of this thesis gives indications that Skype can be used to alarm. The developed program is however lacking the ability to play audio clips in calls, which means it can t be fully used yet. More thorough testing and development are needed of the final program to be able to use the program in a satisfying and meaningful way. The programming language and database used in the development of the program were Visual Basic.NET and Microsoft SQL Server. Keywords: Skype,.NET, Visual Basic, alarm program, database, Trex
6 Förord Jag vill inledningsvis tacka Trex för möjligheten att få utföra ett intressant och lärorikt examensarbete. Jag vill även tacka Christian Nyberg och Mats Lilja för tips och rättning av examensarbetet. Till sist vill jag tacka utvecklarna på Skypes forum för kunskaperna de delade med sig av.
7 Innehållsförteckning 1 Inledning Bakgrund Larmprogrammets uppbyggnad Processen Problemformulering Syfte Avgränsningar Metod Förberedande studier Teknisk Bakgrund Skype Samtalskostnader Lämpligaste alternativen för larmprogrammet Skype P2P Tekniker för effektivisering av Skype Skype4Com NET Framework (Dotnet Framework) Base Class Library (BCL) ActiveX Data Objects.NET (ADO.NET) Dataset Arbeta direkt med databas Common Language Runtime (CLR) Visual Basic.NET (VB.NET) Utveckling Databas Skapandet av databas Val av struktur för hantering av data Klasser Huvudprogrammet Testning Databas GUI Huvudprogram Uppringning Uppspelning Problem under utvecklingen Information Programrelaterat Resultat... 27
8 6 Slutsats och kommentarer Framtida vidareutveckling Källkritik Terminologi Referenser... 30
9
10 1 Inledning 1.1 Bakgrund Larmföretaget Trex med verksamhet i Båstad installerar larm hos företag och privatpersoner. Företaget är litet men har funnits länge och under samtliga år samarbetat med väktarbolag. Nu har man ställt sig frågan om grannsamverkan kan användas i larmprocessen istället för väktare. Denna alternativa larmprocess beskrivs nedan. När ett larm går i ett hus eller lägenhet behövs det ibland väktare som kan rycka ut. Responstiden kan i vissa fall vara för stor för de kunder som bor avlägset. Ett kostnadseffektivt och tidseffektivt alternativ till väktare vore om grannar inom rimligt avstånd ifrån varandra kunde hjälpas åt när larm går. För att detta ska kunna förverkligas måste man som kund när ett larm går, genom en enkel tjänst, kunna underrätta sina grannar. För att grannarna ska kunna få information så snabbt som möjligt krävs det att tjänsten inte har tidsfördröjningar. Det krävs även att grannarna får informationen samtidigt för en effektiv samverkan. Detta kan möjligtvis uppfyllas genom att kunden kan ringa ett nummer kopplat till ett Skype-konto som sedan ett program använder för att automatiskt ringa upp grannar i det närliggande området. För en automatiserad tjänst likt denna krävs ett program som kan kommunicera med en databas och Skype. En tjänst som uppfyller kraven ovan finns i dagsläget inte men test gjorda av Trex med programspråket Visual Basic.Net tillsammans med Skype API har gett resultat som pekar på att en sådan tjänst kan utvecklas. Två punkter som gör det möjligt att använda tjänsten: De flesta kan nås närsomhelst och varsomhelst idag tack vare mobiler. Dagens bredbandshastigheter och teknologier har gjort Skype effektivt. 1
11 1.2 Larmprogrammets uppbyggnad Figur 1: Hur larmprogrammet ska fungera Varje kund som väljer att använda larmtjänsten ska läggas in i en databas. En kontaktlista ska därefter skapas åt kunden med grannar som finns i databasen. För att tjänsten ska vara så effektiv som möjligt bör grannar som bor närmast väljas som kontakter. Det tjänsten ska erbjuda kunderna i databasen är att vid larm ge dem möjligheten att enkelt förmedla information om larmet till deras kontaktlista. 2
12 Att skicka SMS är inget bra alternativ eftersom det i vissa fall kan dröja innan det når fram, dessutom kan ett SMS missas av mottagaren. Trex anser istället att uppringning av kontakter är ett bättre alternativ. För en uppringningsfunktion krävs ett Skype-konto med ett online-nummer och ett program som automatiskt kan ringa och spela upp larmmeddelande skapat från en kunddatabas Processen I figur 1 kan man se att telefonnumret är det som ska användas för att hitta en kund i databasen vid inkommande larm. Ett ljudklipp som innehåller information om vilket hus och adress det rör sig om ska därefter skapas. Detta kan göras automatiskt t.ex. med hjälp av biblioteket Microsoft Speech Object Library. I det finns en text-till-röst-funktion som kan integreras i ett program. När ett ljudklipp skapats ska det sedan skickas ut med varje samtal. 1.3 Problemformulering Arbetet kommer undersöka om det går att utveckla ett larmprogram som använder sig av Skype samt ta reda på vilken typ av databashanterare och grafiskt användargränssnitt som är bäst lämpat för detta ändamål. Huvudsakliga frågan i projektet kommer vara: Går det att använda Skype till att larma? Delfrågor o Blir tjänsten tidseffektiv med Skype API? o Är kostnaden rimlig? o Fungerar samtal med flera kunder samtidigt? o Blir tjänsten tillförlitlig? 1.4 Syfte Syftet med projektet är att analysera och vid möjlighet utveckla ett alternativ som kan effektivisera och ändra på den nuvarande processen vid larmutlösning för företaget Trex. Resultatet ska ge indikation på huruvida Skype kan ingå i processen eller inte. 1.5 Avgränsningar Projektet ska ge svaret på om det finns möjlighet och om det är lämpligt att använda Skype i en larmapplikation. Att utveckla ett helt fungerande larmprogram är inte rimligt. Funktionaliteten i programmet är beroende av vad analysen ger för resultat och hur mycket som hinns med de veckor då utveckling sker. 3
13 2 Metod Utvecklingen av larmprogrammet började med att bestämma krav. De krav som prioriterades var de krav som tillsammans utgjorde en enkel larmapplikation d.v.s. en applikation innehållandes databas, grafiskt gränssnitt och nödvändiga klasser för integration med funktioner i Skype API. Ingen speciell programutvecklingsmetod användes under projektet. Arbetet delades upp i olika faser som överlappade varandra. Utveckling och testning skedde parallellt. Även kod kommenterades och testresultat antecknades för användning i rapporten under dessa faser, vilket innebär att dokumentationen delvis skedde parallellt med testning och utveckling. Rapportskrivandet enligt tidplanen nedan är således inte helt och hållet representativ för hur processen såg ut, men om man bortser från denna punkt och att några extra veckor användes för rapportskrivande så kan man säga att tidplanen följdes. Rapport Testning Utveckling Framtagning av krav Förberedande studier Figur 2: Tidplan 2.1 Förberedande studier Den första veckan ägnades åt att välja programspråk, testa olika databaser och utvecklingsmiljöer. Programmeringsspråken som passade bäst till projektet var Visual Basic och C#. Detta berodde på att de testprogram som redan fanns gjorda av Trex använde sig av.net framework och Skypes API. Fördelen med att välja C# hade varit att det liknar Java mer än VB.NET, vilket datateknikutbildningen handlat till stor del om. Valet föll trots det på VB.NET eftersom Trexs kunskap och testprogram då kunde användas bättre, vilket var 4
14 till projektets fördel. Med VB.NET som programspråk kunde även projektets utveckling diskuteras enklare med Trex och framtida vidareutveckling av programmet göras mer okomplicerat. För att få kunskap om språket användes övningar på internet. När det gäller databasutveckling i Visual Basic användes Murach s ADO NET 4 database programming with VB 2010 där man kan läsa om Visual Basic 2010 och dess alternativ när det gäller databasutveckling. Till boken finns det övningar att hämta på en hemsida. 3 Teknisk Bakgrund 3.1 Skype Skype är ett program där man kan kommunicera med hjälp av IP-telefoni. Samtal kan ske mellan datorer, datorer och telefoner, datorer och mobiler. Det finns även chat tillgänglig där man kan chatta och dela filer[1]. Skillnaderna mellan de olika samtalsalternativen förutom de uppenbara är kostnaderna Samtalskostnader Om man ska ringa med sitt Skype-konto till ett annat Skype-konto är det gratis, men om man ska ringa till mobiler eller telefoner måste man betala in pengar med hjälp av kreditkort eller annat betalningssätt. Vid samtalskredit kan man åt gången sätta in 100 kr eller 250 kr[2]. Öppningsavgiften för samtal ligger på mellan 50 öre och en krona beroende på om man ringer till mobil eller telefon. Minutavgiften ligger på 21 öre/minut för uppringning av fasta telefoner och 2,63 kr för mobiler. För månadsabonnemang kan man ringa obegränsat mycket i Sverige till fasta telefoner för kostnaden 55 kr. Om man behöver ett månadsabonnemang för uppringning av både mobiler och fasta telefoner finns det inget obegränsat alternativ, då måste man abonnera på ett visst antal minuter, t.ex. 120 minuter för 172 kr eller 400 minuter för 241 kr i månaden[3]. För köp av abonnemang för online-nummer för vanliga telefoner och mobiler att ringa till finns det två alternativ. Det ena är 3-månaders för 185 kr och 12- månaders för 500 kr[4] Lämpligaste alternativen för larmprogrammet För just denna applikation är det bäst att köpa abonnemang för ett visst antal minuter i månaden, helst max som är 400 min. Minutpriset vid uppringning av mobiler blir då endast 60 öre/minut jämfört med 2,63 öre/minut med Skype- 5
15 kredit. Detta abonnemang kan man naturligtvis avsluta om man senare upptäcker att det inte finns behov för just det antalet minuter och då istället ta ett billigare abonnemang. När det gäller ett online-nummer för kontot, räcker 3-månadersabonnemang. Eftersom den påtänkta tjänsten ska kunna nå en kunds kontakter på bästa sätt kommer troligtvis de flesta att ange sina mobilnummer istället för fasta telefonnummer som kontaktnummer i databasen. Därför är ett obegränsat månadsabonnemang där man endast kan ringa fasta telefoner inte passande för kontot till larmprogrammet, även om möjligheten att köpa kredit upptill för samtal med mobiler finns Skype P2P Skype använder sig av Skype Protocol, ett hemligt protokoll där P2P-teknik används[5]. Datorer kopplas samman i ett datornätverk där varje enskild dator kan agera klient eller server för någon av de andra datorerna i nätverket; i P2P sammanhang brukar man kalla detta för att datorerna blir noder. Fördelen med att använda P2P nätverk jämfört med att använda klient-server- nätverk är att kostnaderna blir mindre eftersom man kan utnyttja slutanvändarens processoroch nätverkskraft. Om en ny nod kopplas till nätverket bidrar den med mer processorkraft och bandbredd till hela nätverket Tekniker för effektivisering av Skype För att Skype ska bli effektivt används olika tekniker: 1. Ett av de största problemen man stöter på i P2P nätverk är brandväggar, men i Skype P2P är detta inget problem. Användare som begränsas av brandväggar kan ta hjälp av klienter som inte har brandväggar eller av klienter med publika dirigeringsbara (routningsbara) IP-adresser vid kommunikation med andra klienter bakom brandvägg. Detta görs genom dirigering av samtal. Säkerheten äventyras inte av detta eftersom trafiken samtidigt är krypterad. Man har dessutom utvecklat olika tekniker för att förbigå inställningar av brandväggar eller gateways (nätverksnoder) som i P2P sammanhang hade gjort kommunikation i Skype omöjlig. Tack vare dessa tekniker fungerar således Skype bakom de flesta brandväggar och gateways. 2. Många program där man använder snabbmeddelande använder sig av centraliserade bibliotek, vilka håller reda på IP-adress och status för en viss användare. Detta alternativ har visat sig kräva stora resurser när antalet användare blir många. Istället för centraliserade bibliotek använder Skype ett globalt decentraliserat användarregister för att hålla reda på vilka användare som är tillgängliga att upprätta anslutning med. Detta gör man genom 6
16 supernoder. Det som skiljer sig mellan noderna och supernoderna i Skype är att supernoderna inte dirigerar några samtal, de håller istället reda på information om andra användare[6] Skype4Com Skype4Com är en COM DLL[7], med andra ord en Active X komponent. Den kan användas i utvecklingsmiljöer med stöd för Active X som t.ex. Visual Studio. När Skype4Com blivit importerat i ett projekt är Skype API tillgängligt. Det representeras av ett bibliotek. I biblioteket finns det klasser med möjlighet att skapa objekt, använda egenskaper och hantera händelser, vilka sedan kan användas till att kommunicera med Skype och hantera telefonsamtal och andra viktiga funktioner[8]. Mycket av Skype4Com är händelsebaserat, vilket betyder att utvecklare kan skriva kod som hanterar händelser för de flesta funktioner i Skype. 3.2.NET Framework (Dotnet Framework).NET Framework är ett mjukvaruramverk. Det körs huvudsakligen på Microsoft Windows. Ramverket förser en utvecklare med komponenter som kan användas tillsammans med egen kod. De två komponenter man framförallt kan använda för att beskriva ramverket är klassbiblioteket Base Class Library och exekveringsmotorn Common Language Runtime [9] Base Class Library (BCL) Klassbiblioteket BCL innehåller testad och återanvändbar kod framförallt för vanliga operationer inom programmering. Tack vare det blir programmeringsprocessen i dotnet mer tidseffektiv. När det gäller webbutveckling t.ex. för utveckling av dynamiska hemsidor, program och tjänster, kan man använda sig av ramverket ASP.NET. Biblioteket innehåller även klasser för interaktion med databashanterare som t.ex. Microsoft SQL Server och MYSQL, dessa klasser kallas ADO.NETklasser[10] ActiveX Data Objects.NET (ADO.NET) ADO.NET är API:n för dataåtkomst för databasapplikationer i dotnet. För att utveckla databasapplikationer i dotnet använder man ADO.NET-klasserna. När det gäller att arbeta med data i databaser finns det två olika alternativ att välja mellan. Alternativen är att arbeta med dataset eller direkt med databasen[11]. 7
17 Dataset Klasserna i ADO.NET ger utvecklaren alternativ när det gäller datahantering. Ett av alternativen är att använda dataset. Ett dataset används för att lagra data från databasen. Arbete med dataset innebär att man inte arbetar direkt med databasen. Med detta tillvägagångssätt behövs ingen anslutning med databasen förutom när man måste hämta och uppdatera data. Denna uppbyggnad av en databasapplikation kallas för en frånkopplad dataarkitektur. Samverkande klasser och dataflöde vid arbete med dataset är illustrerat i figur 3. Figur 3: Dataflöde mellan klasser vid användning av dataset I figuren ser man att dataset består av tabeller. De motsvarar databasens tabeller. Lagret mellan applikation och databas är.net data provider, för SQL server är det SQL server data provider. De klasser som tillhandahålls av den sköter hämtning och lagring av data. Processen kan förklaras på följande vis: Data adapter utför SQL-frågor som sparats i objekt av klassen Command. Command-objekt använder sedan objekt av klassen Connection till att hämta eller spara data i databasen. Vid uppdatering av data i databasen d.v.s. när borttagning eller insättning skett i ett dataset, kan man med hjälp av egenskapen Update i Data Adapter automatiskt uppdatera ändringarna till databasen. En fördel med att använda dataset i applikationer är att man använder mindre datorresurser vid datamanipulation eftersom man inte behöver vara uppkopplad till databasen om man vill jobba med data i den. Uppdatering av databasen blir även den mindre komplex eftersom den sköts automatiskt genom jämförelse mellan dataset och databas. 8
18 Dock kan fördelen beskriven ovan bli till en nackdel om många arbetar samtidigt med databasen och många försöker uppdatera data. Data kan då bli inaktuell eller skrivas över oavsiktligt. Detta samtidighetsproblem kan man åtgärda med frekvent uppdatering av databas eller undantagshantering, men detta motverkar då till viss del syftet med dataset eftersom man då behöver tillgång till databasen mer frekvent trots den frånkopplade dataarkitekturen [12] Arbeta direkt med databas Om man inte vill använda dataset kan man istället arbeta med databasen direkt. Den största skillnaden är att dataflödet inte styrs av en dataadapter. Varje Command-objekt exekveras var för sig. Resultaten av frågorna hanteras även de enskilt. Vid varje insättning, borttagning eller annan operation öppnas och stängs en anslutning till databas. Hur flödet ser ut kan man se i figur 4. Figur 4: Dataflöde vid arbete direkt med databasen Ett Command-objekt innehållande SQL-kod exekveras och hämtar data från databasen genom klassen Connection. Resultatet kan sedan läsas med hjälp av klassen Data reader. Objektet läser rad för rad, vilket innebär att man måste anpassa den datastruktur som sparar resultatet efter detta. Fördelen med att inte använda dataset är att man får mer frihet att bestämma och anpassa sitt program. När man använder dataset är det mycket kod som 9
19 genereras, vilket innebär att det kan vara svårt att få en överblick och känsla av kontroll över koden. Som följd blir det svårare att felsöka koden. Utan dataset kan man även skapa sina egna klasser för hantering av data, dessa kan sedan ingå i klassbibliotek som kan användas i flera olika applikationer. De nackdelar man stöter på utan dataset är bl.a. att mycket kod måste skrivas för att utföra det som är simpelt med dataset. Med mer kod krävs mer tid och mer kunskap av databaser, SQL, programspråk, felsökning och felhantering[13] Common Language Runtime (CLR) CLR är en exekveringsmotor Runtime Environment. Den exekverar och kompilerar koden för dotnetspråk. Den är resultatet av en implementation av Common Language Infrastructure förkortat CLI, som är en specifikation skapad av Microsoft, över hur en miljö ska vara för att kunna köra flera högnivåspråk på datorer med olika hårdvaruarkitekturer och ramverk utan att språken behöver anpassas[14]. Miljön beskrivs i nästa stycke. Kompilatorer för olika programspråk ger CLR metadata. Metadata baseras bland annat på typer och referenser för programkoden skriven. CLR använder sedan informationen till att hantera och lokalisera klasser, instanser och generera maskinkod. Eftersom kompilatorer och verktyg har detta samarbete med CLR och följer CLI:s riktlinjer blir språkinteroperabilitet en möjlighet. Objekt skapade i ett av språken kan utan problem kommunicera med objekt i andra språk[15]. All kod som exekveras av CLR kompileras först till CIL (Common Intermediate Language) bytekod. En JIT-kompilator i CLR översätter därefter koden till maskinkod som sedan processorn utför[16]. För språk som Visual Basic innebär CLR att språket blir mer objektorienterat. Några exempel är att man kan skapa hierarkier genom att klasser kan ärva, att programmeraren kan skapa interface och att man kan få en mer strukturerad undantagshantering[17] Visual Basic.NET (VB.NET) Visual i Visual Basic står för att det är språk där man utvecklar applikationer med hjälp av ett grafiskt gränssnitt. Detta gränssnitt brukar användas för att skapa prototyper, inte bara av.net-utvecklare utan även av utvecklare för andra språk. Det är just lättheten med att testa programfunktioner genom drag-and-drop av komponenter och kontroller som gör det till ett bra språk för utveckling av grafiska användargränssnitt[18]. 10
20 Basic i Visual Basic är en förkortning av Beginner s All Purpose Symbolic Instruction Code. Det är ett språk utvecklat på 60-talet som skulle göra det enkelt att förstå programmering och göra applikationer. Med BASIC kunde man inte utveckla sitt program på ett visuellt sätt, det var endast textbaserat[19]. Vad som skiljer sig mest mellan VB och VB.NET är att VB.NET är mer objektorienterat och kan kommunicera med andra språk. Vid utveckling av program i VB.NET brukar man använda Visual Studio. I Microsoft Visual Basic 2010, en del av Visual Studio 2010, använder man sig av olika menyer där man kan dra och släppa komponenter och kontroller på en form. En Windows form är en yta på vilket information presenteras visuellt och interaktion med användare kan ske. Kontroller som t.ex. textrutor kan läggas på ytan, användaren kan sedan använda dessa för att ge input till programmet. Input kan ske med hjälp av en knapp, även det en kontroll. Hur programmeraren bestämmer vad som ska göras och när det ska göras, görs genom att hantera och utnyttja de händelser som skapas för Form-objektet och varje kontroll när de blir aktiva. Det är därför man brukar säga att VB.NET är ett händelsedrivet språk. I exemplet nedan adderas innehållet i de två första rutorna vid knapptryck. Resultatet visas sedan i den tredje rutan. Figur 5: Exempelprogram med additionsräkning 11
21 Koden för programmet ser ut på följande sätt: Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim number1, number2, result As Integer number1 = TextBox1.Text number2 = TextBox2.Text result = number1 + number2 TextBox3.Text = result End Sub End Class Sub står för subrutin. Just denna subrutin hanterar knappens klickhändelse. När man deklarerar en variabel använder man Dim som står för Dimension. Typen av variabel skriver man sist. I detta fall är typen integer. För att få tillgång till textrutornas innehåll används punknotation följt av egenskapen Text. Addition sker sedan precis som i andra programmeringsspråk med operatorn +. Resultatet av additionen sparas därefter i en variabel som slutligen tilldelas den tredje textrutan. 12
22 4 Utveckling Utvecklingen inleddes i slutet av de förberedande studierna. Övergången mellan dessa faser underlättades med hjälp av de exempelprogram som utvecklats med hjälp av övningar och Trexs exempelprogram. 4.1 Databas Microsofts SQL server var den databashanterare som använts i övningarna från boken Murach s ADO.NET database programming with VB Enkelheten med denna hanterare med VB.NET-kod gjorde att valet av SQLserver föll på den Skapandet av databas Som beskrivet i avsnitt 1.2 behövdes två tabeller för att skapa en kunddatabas där varje kund har en unik kontaktlista, en för kunderna (customer) och en för kontakterna (relatedcustomers). Figur 6: Tabeller i databasen I figur 6 kan man se tabellerna och deras kolumner. Relationen mellan tabellerna är mittpartiet där nyckel och oändlighetstecknet motsvarar en-till - många-relation. Primärnyckeln i customer är customerid. Detta id tilldelas varje ny kund automatiskt. I tabellens script är primärnyckel-raden inställd på ökning med ett för varje ny kund, vilket resulterar i att alla kunder får unika id-nummer. Den främmande nyckeln i relatedcustomer är raden customer. Den innehåller med andra ord samma id som i customerid. Något man tyvärr inte urskiljer i figuren är att raderna customer och relatedid tillsammans bildar en primärnyckel för att förhindra dubbletter i kontakter. 13
23 För att skräddarsy databasen på enklast sätt användes Microsoft SQL Server Management Studio. Det är ett tilläggsprogram till Microsoft SQL Server där man bl.a. kan skapa en databas helt utan ett script eller med ett script. Det alternativ som passade bäst för detta projekt låg mittemellan alternativen. För att vara försäkrad om att vissa inställningar i databasen inte skulle ställa till problem och slösa tid om de implementerades fel, användes några av tilläggsprogrammets funktioner. Efter generering av ett script med dessa inställningar, kompletterades det med egen kod. Det slutgiltiga databasscriptet kördes till sist i tilläggsprogrammet för att skapa en databasfil för användning i Visual Studio Val av struktur för hantering av data När databasfilen blivit importerad i programprojektet var det dags att bestämma hur databaskommunikationen skulle ske och med hjälp av vilka datastrukturer. Några av exempelprogrammen från den förberedande fasen använde sig av dataset samt en inbyggd funktion i Visual Studio som skapar en grafisk sammanställning av raderna i en tabell genom att man drar en av databasens tabeller från en sidomeny och släpper på ett form-objekt. I figur 7 har kundtabellen customer, vilken i det här exempelprogrammet är en del av ett dataset tillsammans med relatedcustomers, släppts på ritytan Form1. Figur 7: Drag-and-drop av tabell på ett form-objekt En kontroll som hanterar representationen av data skapar ett rutnät, detta kan ske p.g.a. att Visual Studio använder sig av komplex databindning, vilket 14
24 innebär att kontrollen blir bunden till alla element i rutnätet d.v.s. alla rader och kolumner. Till följd av rutnätet skapas fyra nya objekt för att hantera automatisk navigation, tilläggning, borttagning, uppdatering av kundtabellen i databasen. Deras namn kan man se nedanför rutnätet. Med rutnätet kan man sedan lägga till sql-frågor som bestämmer hur data ska laddas in och var. Denna enkla funktion till att hantera dataset verkade lockande till en början eftersom erfarenheten av VB.NET var begränsad, men ju längre tiden gick, tills dess att förberedelsefasen och utvecklingsfasen började överlappa varandra, kom insikten av att ju mer förenklat det grafiska användargränssnittet samt databaskommunikationen gjordes desto mer begränsat och komplicerat blev utvecklingen av resterande delar av programmet. Det var dock inte bara denna inbyggda funktion för att hantera dataset som den negativa erfarenheten av dataset baserades på. Flera av de klasser som gjordes med dataset i förberedelsefasen var svåra att felsöka och göra användbara i andra klasser. I avsnitt och tas nackdelar och fördelar upp om dataset. De nackdelar som var mest märkbara i programmen var svårigheterna med att felsöka och göra samarbetande klasser. Nackdelen när det gällde samtidighet var inget argument mot dataset i detta projekt eftersom databasen inte ska användas av flera samtidigt. Istället för dataset användes listor i databasklassen samt ett grafiskt användargränssnitt bestående av flera olika klasser (se nästa avsnitt). 4.2 Klasser KundDb Klassen som kommunicerar med databasen heter KundDb. I den finns metoder för att ta bort kund, lägga till kund och ändra kunddata i databasen. Det finns även metoder för att lägga till och ta bort kontakter i en kunds kontaktlista. De beskrivna metoderna var metoder som redan var planerade i den förberedande fasen. De oplanerade men förväntade metoderna som tillkom i utvecklingsfasen var en sökningsmetod som söker på för- och efternamn och två andra sökmetoder, vilka försöker hitta en kund med ett visst id eller telefonnummer. Till sist gjordes metoder för hämtning av kunder och kontakter för visualisering av databasen. Dessa returnerar listor av kundobjekt. Exempel på en sådan metod är metoden GetKunder() Public Shared Function GetKunder() As List(Of Kund)... Return kundlista Beslutet att inte använda dataset innebar att metoder för datahämtning och sparning behövdes. Anledningen till att just liststrukturen blev datastrukturen 15
25 för sparning av data var för att den visade sig passa bra för att spara kundobjekt i på ett simpelt sätt och som gjorde visualisering av databasdata enklare i GUI-klasserna. Hjälpklass för GUI: Kund Kundklassen är en hjälpklass till GUI-klasserna. Med klassen skapar man kundobjekt. Dessa objekt har egenskaper som motsvarar kundtabellen i databasen. Eftersom dataset inte används måste svaren på SQL-frågorna i databasklassen som rör kunder tas omhand på ett annat sätt. För att förenkla denna process används objekt som motsvarar en kund i databasen. Varje egenskap sparas ner i ett objekt med hjälp av en dataläsare (se avsnitt ). Eftersom raderna i tabellen läses av sekventiellt måste motsvarande egenskap i kundobjektet ha samma ordning i koden. När objekten fått alla egenskaper läggs de i en lista deklarerat för kundobjekt. Denna liststruktur gör det sedan enkelt för klasser såsom DatabaseGUI, AddNModify, AddContact och huvudklassen MultiCaller att hämta och använda kundlistor med sina egna metoder. Egenskaperna för id och förnamn för en kund läggs till på följande sätt. Varje egenskap har Get- och Set-metoder. Public Property KundFNamn() As String Get Return d_kundfnamn End Get Set(ByVal value As String) d_kundfnamn = value End Set End Property Public Property KundId() As Integer Get Return d_kundid End Get Set(ByVal value As Integer) d_kundid = value End Set End Property End Property 16
26 De klasser som utgör GUI är följande: DatabaseGUI I den här klassen sköts visualisering av databasen och CRUD (Create, Retrieve, Update, Delete). Rutnät likt det somt togs upp i , fast utan dataset, har lagts på ett form-objekt. Det engelska namnet på denna kontroll är listview, på svenska blir det listvy och det stämmer bra överens med vad det är. Valet att presentera data på detta sätt var för att det passade bra ihop med listorna från databasklassen och för att det representerade tabellen på ett tillfredställande sätt. En av egenskaperna en listvy har är att man kan lägga till kolumner. Ifyllning av dessa kolumner görs genom att använda listor skapade av databasklassens metoder. Listor som returneras är antingen kundlistor eller kontaktlistor. De olika listorna skiljer sig inte åt sett till de objekt de innehåller. Kontaktlistorna innehåller kundobjekt de med eftersom egenskaperna för en kontakt är samma som för en kund och kommer från samma tabell, nämligen kundtabellen. Figur 8. DatabaseGUI 17
27 I klassen finns knappar för tilläggning, borttagning, ändring, sökning och visning (se figur 8). De knappar på bilden som inte är tillgängliga beror på att ingen kund i listvyn valts. När knapptryck av Visa alla kunder sker och man väljer en kund blir de utsuddade knapparna synliga. Denna avaktivering och aktivering av knappar är till för att minimera risken att fel kund väljs. Hur det ser ut när man väljer Visa kontakter kan man se i figur 9. Figur 9: Visualisering av kontaktlista Kontakter visas i samma ruta som kunder. Det som händer vid Visa kontakter är att listvyn töms på kunder och ersätts med kontakter och att kundknapparna, söknappen och knappen man tryckt på försvinner. Under utvecklingen hände det ofta att någon kund var i fokus som inte skulle vara det eller att ingen kund var i fokus vid knapptryck. För att slippa dessa fel implementerades kod som släckte eller avaktiverade knappar när de inte behövdes. Skälet till att lägga Lägg till kontakt i GUI-läget i figur 8 istället för i figur 9 är att man då har tillgång till alla kunder i listan, vilket kan vara behövligt om man vill se adresserna till kunderna man vill lägga till som kontakter. AddContact-klassen visar endast namnet på personen man vill lägga till. 18
28 AddContact Med AddContact-klassen bestående av ett form-objekt kan man lägga till kontakter för en kund. På ytan finns en combobox vilket är en kontroll där en lista över kunder som kan läggas till som kontakter visas vid fokusering. I klassen används databasklassens metod för att lägga till kontakter. Figur 10: Tilläggning av kontakt När man lagt till en kontakt dyker det upp ett fönster. I bilden ovan är tilläggningen lyckad. Om en kontakt redan finns i kontaktlistan eller om man försöker lägga till sig själv som kontakt meddelas detta istället. AddNModify Om man vill lägga till eller ändra information för befintlig kund används denna klass. I figur 11 på nästa sida kan man se hur det går till. 19
29 Figur 11: Fönster för tilläggning eller ändring av kundinfo Denna klass kan man använda om man vill ändra en kunds information eller lägga till en ny kund. Om en kund är i fokus i DatabaseGUI-fönstret så vet klassen att en ändring av en befintlig kund ska göras i stället för tilläggning av ny kund. Om en ändring ska göras så hämtar den information om vald kund osv. Vid tilläggning av ny kund kan man stöta på det scenario som figur 11 visar. Här glömdes ort att fyllas i och med hjälpklassen ValidData beskriven nedan visas passande felmeddelande. ValidData Det är väldigt viktigt att input som ges i textrutor i AddNModify är korrekt eftersom databasen har bestämda typer i tabellerna. ValidData-klassen är en hjälpklass. Den har som syfte att se till så att textrutor som behövs fyllas i blir ifyllda och att input för en viss ruta inte är felaktig. Felaktigt blir det t.ex. om man försöker ge strängvärden där det ska vara integer, ValidData anger då med hjälp av en popup-ruta på vilken rad felet finns. 20
30 Larm Larmklassen är en hjälpklass till GUI-klasserna och MultiCaller-klassen. Den sköter anslutningen med databasen. Genom att anropa dess enda metod GetConnection() får man anslutningen till databasen i form av en connectionstring. Anslutningsträngen innehåller databasens instansnamn, i vilken mapp man hittar den och namnet man gett den. 4.3 Huvudprogrammet Integration av klasser gjordes i huvudprogrammet MultiCaller. Det är en klass som påbörjades av Trex. I den fanns från början exempel på hur man kunde ringa upp telefoner med hjälp av Skype4Com och metoder som hanterade olika händelser för funktioner i Skype. MultiCaller Varje form-objekt har en händelse som heter Load. Denna händelse inträffar vid start av ett fönster. MultiCaller-klassen hanterar dess load-händelse med hjälp av en subrutin. Just att välja denna klass som startfönster föreföll sig logiskt eftersom det var i denna klass inkommande samtal skulle hanteras och kontakter ringas upp med hjälp av databas. Med andra ord behövde denna klass vara i fokus hela tiden i väntan på samtal. I load-händelsen behövdes därför en check som kollade om Skype-klienten är igång och om databasen är tillgänglig. Innan Skype är igång och databasen är tillgänglig ser fönstret för den här klassen ut som i figur 12. Figur 12: Ingen anslutning till Skype eller databas. 21
31 Om Skype inte är igång, startar MultiCaller upp Skype-klienten med kodraden skypeclient.client.start(true). Denna startfunktion är en del av Skype4Com-biblioteket. Däremot blir det större problem om inte databasen är tillgänglig, för det kan inte larmprogrammet åtgärda. Då krävs manuell start eller konfiguration av databasen. Om anslutningarna till Skype och databas fungerar ser det ut som i figur 13. Figur 13: Databas och Skype tillgängliga. När databasen blir tillgänglig fungerar även databasknappen nere i högra hörnet. Om man klickar på denna kommer man till DatabaseGUI. Genom att studera och experimentera med Skype4Com-biblioteket, kom förståelsen efter en tid om vilka funktioner och händelser som skulle användas i samband med samtal. Ett samtal kan befinna sig i olika tillstånd, ett av dem är clsringing i samtalsstatusklassen TCallStatus. I koden på nästa sida hanteras inkommande samtal i larmprogrammet. 22
32 Public Sub skypeclient_callstatus(byval pcall As SKYPE4COMLib.ICall, ByVal Status As SKYPE4COMLib.TCallStatus) Handles skypeclient.callstatus If Status = SKYPE4COMLib.TCallStatus.clsRinging And _ (skypeclient.convert.texttocalltype("incoming_p2p") = pcall.type Or _ skypeclient.convert.texttocalltype("incoming_pstn") = pcall.type) And _ Counter = 0 Then Try ' Answer the Call. pcall.answer() ' Make counter 1 to handle double signal Counter = 1 ' Thread sleeps so functions don't collide Thread.Sleep(1000) ' Finish the Call. pcall.finish() ' Thread sleeps so calls don't collide Thread.Sleep(1000) ' Call Contacts callcontacts(pcall) ' Display call information. Catch ex As Exception MsgBox("Unable to answer call: " + ex.tostring, MsgBoxStyle.Information) End Try End If Else Counter = 0 End Sub INCOMING_PSP står för inkommande samtal från ett Skype-konto och INCOMING_PSTN från en fast telefon eller mobil. För att svara använder man funktionen answer() och för att avsluta Finish(). pcall är ett call-objekt som skickas med CallStatus-händelsen som parameter i subrutinen. callcontacts() är en metod i MultiCaller klassen som använder sig av databasklassens metoder för att ringa upp en kunds kontakter. Den har ett callobjekt som parameter. Olika metoder i databasklassen används beroende på typen av det inkommande samtalet. Koden nedan är från callcontacts(). Dim kund As New Kund Dim kontaktlista As List(Of Kund) ' Decides whether the incoming call is placed ' from a telephone or a Skype account If (skypeclient.convert.texttocalltype("incoming_p2p") = Pcall.Type) Then kund = KundDb.GetKundByName(Pcall.PartnerHandle.ToString) kontaktlista = KundDb.GetKontakter(kund.KundId) ElseIf (skypeclient.convert.texttocalltype("incoming_pstn") = Pcall.Type) Then Dim pstn As String pstn = "0" + Pcall.PstnNumber.Substring(3, Pcall.PstnNumber.Length - 3) kund = KundDb.GetKundByTeleNbr(pstn) kontaktlista = KundDb.GetKontakter(kund.KundId) End If 23
33 När en kund hittats ringer Skype upp alla kontakter i kontaktlistan. Uppringningen av en kunds kontakter görs genom koden nedan. ' Gets the contacts for a specific customer kontaktlista = KundDb.GetKontakter(kund.KundId) If kontaktlista.count > 0 Then Dim kontakt As Kund For i As Integer = 0 To kontaktlista.count - 1 kontakt = kontaktlista(i) mycall = skypeclient.placecall("+46" + kontakt.telenbr)'calls the contacts Next End If 4.4 Testning Databas Databasen testades genom script och funktioner i Microsoft SQL Server Management Studio. Ett exempel på testscript är inläggningen av många kunder i databasen. Restriktioner (constraints) kollades också genom olika tester för input GUI DatabaseGUIs sökfunktion och AddNModifys textrutor testades för olika input Huvudprogram Uppringning Uppringningen av en kunds kontaktlista testades till en början med hjälp av två Skype-konton. Detta för att det var smidigast och kostnadsfritt. Genom att göra ett konto i databasen med samma namn som Skype-kontot för larmprogrammet gick det att från ett annat konto på en annan dator ringa upp i larmprogrammets konto. Larmprogrammets konto hittade då det andra kontots kontaktlista i databasen och ringde upp den. Kontakterna för kontot var kopplade till telefonnummer tillhörandes tre mobiler och en fast telefon. Vid svar på samtal upptäcktes att programmet fick felmeddelande om man svarade och avslutade inkommande samtal för tätt inpå. Detta löstes genom att låta programmet sova en sekund mellan answer() och finish(). Tråden fick även sova mellan finish() och utåtgående samtal till kontakter för att förhindra att samtal inte krockade (se avsnitt om MultiCaller). I MultiCaller kan man även hitta en räknare som sätts till ett vid varje inkommande samtal. Vid varje mottagning av samtal innan denna åtgärd, skickades en dubbelsignal som inte gick att svara på. Detta fel gick inte att 24
34 hitta i koden. De felsökningar som gjordes gav inga svar på var denna signal kom ifrån, men tack vare forumet för Skype API på Skypes hemsida, hittades en tråd om detta fel. Det visade sig av inläggen att felet var ett känt problem. En utvecklare till API:n skrev där att man genom egen kod var tvungen att hantera denna signal. Lösningen blev att vid varje nytt inkommande samtal sätta en räknare till ett och sedan använda räknaren i en if-sats för att filtrera bort den felaktiga signalen. Innan nästa riktiga signal inkommer nollställs räknaren (se kod för svar av samtal avsnitt 4.3). Den felaktiga uppringningssignalen som inte går att svara på går aldrig in i if-satsen och krockar således inte med pågående samtal. När dubbelsignalen och krockande samtal hanterats blev samtalen tidseffektiva. Tidsfördröjningen för uppringning av kontakt ett (mobil ett) var precis som vid normala samtal d.v.s. samtal inte hanterade av Skype API. Tidsfördröjningen kontakter emellan var inte heller stor. Ungefär en halv sekund till en sekund var tidsfördröjningen mellan signalerna för mobil ett och mobil två, likaså mellan mobil två, tre och den fasta telefonen. För att vara säker på att uppringning fungerade i riktiga situationer, skaffade Trex ett online-nummer på Skype. Sedan lades testkunder och testkontakter in i databasen med riktiga telefonnummer. Vid uppringning av numret från en av testkunderna, ringdes tillhörande kontaktlista upp. Detta fungerade utan problem Uppspelning Kod för uppspelning och testning av ljudklipp för samtal gjordes sist i projektet. Anledningen till detta var att uppspelningen var beroende av att uppringningen fungerade. Testningen av uppspelning kunde inte göras på ett bra sätt annars. Försök till att använda eget inspelat klipp för uppspelning i ett samtal fungerade till en början inte, men inlägg från utvecklare på forumet för Skype API skrev att endast klipp med 16 bitars sampling och 16khz mono kunde spelas upp. Efter att klippet anpassats till detta format fungerade uppspelningen för ett samtal. Tyvärr fungerade detsamma inte för flersamtal. Vid test med två mobiler, fungerade uppspelning i mobil ett tills mobil två svarade. Då avbröts uppspelningen för mobil ett och klippet spelades upp för mobil två. Klippet fortsatte för mobil ett först när mobil två avslutade sitt samtal. Felsökning av koden gav inget svar på problemet, men som så många gånger innan under 25
35 test- och utvecklingsfasen fanns svaret på Skypes forum. Svaret visade sig vara att man inte kan spela upp ljud för mer än ett samtal åt gången. Endast ett samtal kan ges ljud-input. Den ursprungliga idén om att spela upp ljudklipp för varje enskilt samtal slopades. En annan diskussionstråd tog dock upp konferenssamtal d.v.s. samtal där man kopplar ihop flera olika personer. Utvecklarna påpekade att ett konferenssamtal räknades som ett samtal. Testning gjordes av uppspelning i konferenssamtal med två telefoner. Uppspelningen lyckades men inte utan problem. Nya problem som uppstod var t.ex. att den kontakt som svarar först får höra meddelandet från början, den andra lite senare. 4.5 Problem under utvecklingen Information Dokumentationen var bristfällig när det gäller vissa delar av Skype API. Detta ledde till att man fick förlita sig på Skypes forum. På forumet fanns utvecklare för Skype API, där de skrev om lösningar och fakta som inte gick att hitta i Skype4Com-dokumentationen eller i annan dokumentation Programrelaterat De flesta fel som uppstod i programmet gick oftast att lösa utan hjälp från Skype-forumet eller internet genom användning av Try/Catch-satser och vanliga felsökningsmetoder. Samtalskrockar och dubbelsignaler var dock undantag. För att visualisera dubbelsignalen och överblicka samtalskrockar användes ett verktyg avsett för Skype som heter Tracer. Med Tracer kan man se samtalen i textform i realtid och skriva in kommandon direkt till Skypeklienten. 26
36 5 Resultat Det utvecklade programmet har tillgång till en kunddatabas. CRUD (Create, Retrieve, Update, Delete) i denna görs möjligt genom GUI-klasser som använder sig av en databasklass innehållandes metoder med SQL-frågor. Ytterligare funktioner som finns tillgängliga tack vare dessa klasser är hantering av kontakter och sökning av kunder. En funktion som hanterar uppringning av kunder hanteras i en särskild samtalsklass vid namn MultiCaller. Den fungerar delvis för uppringning men behöver anpassas efter upptäckter gjorda gällande uppspelning av ljudklipp i samtal. Någon funktion för uppspelning av ljudklipp i samtal finns i nuläget inte. Anledningen till att detta inte finns är oförutsedda omständigheter i slutet av projektet och tidsbrist. Utgångspunkten var från början att det för varje enskilt samtal skulle spelas upp ljudklipp vid larmsignal. Denna samtida uppspelning i flera samtal kunde emellertid inte implementeras i programmet eftersom Skype API inte stöder det. Endast ett samtal kan vara aktivt och spela upp ljudklipp. Fokus flyttades sista veckan i utvecklingsfasen från flersamtal till konferenssamtal. Ett konferenssamtal är endast ett samtal, men med flera deltagare. Test av uppspelning i konferenssamtal med två deltagare gav ett positivt resultat. Sammanfattningsvis kan man säga att projektet inte resulterade i ett larmprogram som fungerar, utan i ett program och lösningar som kan användas i framtagningen av ett. 27
37 6 Slutsats och kommentarer Projektet hade som syfte att analysera om Skype går att använda i ett larmprogram. Enligt det program och tester som gjorts så verkar den möjligheten vara god. De problem som stöttes på i slutet av projektet gällande Skype borde man med mer tid kunna lösa. Delfrågorna ställda i problemformuleringen kan besvaras positivt. Låga samtalskostnader vid abonnemang gör att den färdiga tjänsten kan erbjudas billigt. Tidsfördröjning för uppringning blir minimal och kan ignoreras. Man kan således dra slutsatsen att den färdiga tjänsten kan bli effektiv, både kostnadsmässigt och tidsmässigt Användandet av konferenssamtal istället för flera samtal kan ses som negativt i den bemärkelsen att det tillför ytterligare problem som måste lösas, t.ex. loopning av ljudklipp i samtalet. Tillförlitligheten i programmet blir däremot bättre med konferenssamtal eftersom samtalskrockar kan minimeras i och med att flera samtal sammanslås till ett och samma samtal. Tillräckligt många test har dock inte gjorts av nuvarande program för att säga om Skype API och programmet är tillförlitliga i larmsammanhang. Dessutom kommer ändringar av programmet med b.la. konferenssamtal fordra än mer testning av programmet. Först när larmprogrammet genomgått ändringar och tester kan man dra en slutsats gällande denna delfråga. 6.1 Framtida vidareutveckling När uppspelningsfunktionen implementerats och testats behövs integration av text-till-röst i programmet. Eftersom Get- och Set-metoder finns för varje kundegenskap borde skapandet av ljudklipp inte bli komplicerat. I början av projektet diskuterades samtalshistorik med Trex. Det var ingenting som till sist blev ett krav. Anledningen var att historik inte ansågs vara en nödvändig del av larmprogrammet. Om man ändå i framtiden känner för att lägga till samtalshistorik kan detta göras tämligen lätt genom att studera de existerande klassernas kod och kommentarer, detsamma gällande databasens script. Den funktion historiken hade fyllt hade varit att man då kunde sett över vilka kunder som svarar och inte svarar. Kunder vars statistik upplevts som dålig hade då kunnat få tillsägelser eller i värsta fall blivit uteslutna. D.v.s. för att få hjälp av andra måste man själv vara hjälpsam. Utan hjälpsamhet grannar emellan, kvittar det om programmet fungerar. För den färdiga tjänstens effektivitet bestäms framförallt av kunderna själva, inte av programmet. 28
Larmprogram för grannar
Larmprogram för grannar LTH Ingenjörshögskolan vid Campus Helsingborg Computer engineering / Datateknik Examensarbete: Filip Göransson Copyright Filip Göransson LTH Ingenjörshögskolan vid Campus Helsingborg
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Creo Customization. Lars Björs 2014-10-16
Creo Customization Lars Björs 2014-10-16 Norra Europas största partner och återförsäljare av PTC relaterad programvara (Windchill, Creo, Arbortext, MathCad, Relex) 70 anställda Egen utvecklingsavdelning
Arbeta med databas. Översikt. Lektion 1: Arbeta med Entity Data Models. Arbeta med Entity Data Models. LINQ (Language Integrated Query).
Arbeta med databas Översikt Arbeta med Entity Data Models. LINQ (Language Integrated Query). Lektion 1: Arbeta med Entity Data Models Introduktion till ADO.NET Entity Framework. Stöd i ADO.NET Entity Framework.
Inledande programmering med C# (1DV402) Introduktion till C#
Introduktion till C# Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i
Webservice & ERP-Integration Rapport
Webservice & ERP-Integration Rapport Hardwood AB Mustafa Lazem 930916-9713 Jonas Ahrne 920325-0379 Hasan Nerjovaj 940130-7195 Stefan Liden 920628-0639 2014-05-18 Innehåll Bakgrund... 2 Syfte... 2 Projektbeskrivning...
Komponenter med COM (och COM+/VC++ 7.0)
MÄLARDALENS HÖGSKOLA Komponenter med COM (och COM+/VC++ 7.0) Med Visual C++ 7.0 COM-komponent EI0230 Komponentbaserad applikationsutveckling oktober 2003 Om denna sammanfattning Denna sammanfattning innehåller
Laboration 1 Introduktion till Visual Basic 6.0
Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.
Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson
Rapport grupp 4 Software Engineering Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson 2009-10-29 Processer Sprinter Scrum har varit till stor hjälp för oss för att nå våra mål,
Manuell installation av SQL Server 2008 R2 Express för SSF Timing
Manuell installation av SQL Server 2008 R2 Express för SSF Timing Innehåll 1. Metoder att installera...1 2. Förutsättningar...2 DotNet Framework 3.5...2 MSI Installer 4.5...2 3. Hämta SQL Server 2008 R2
PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC
lektion 1 PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC VB är ett applikationsutvecklingsverktyg med programmeringsspråket är basic, gränssnittet är grafiskt och man arbetar hela tiden
Retrieve a set of frequently asked questions about digital loans and their answers
GetFAQ Webservice name: GetFAQ Adress: https://www.elib.se/webservices/getfaq.asmx WSDL: https://www.elib.se/webservices/getfaq.asmx?wsdl Webservice Methods: Name: GetFAQ Description: Retrieve a set of
Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB
Snabbguide Visma Compact API Copyright 2006-2010 Visma Spcs AB Komma igång med Compact API Hur APIet fungerar Visma Compacts API läser och skriver direkt till databasen via ett antal färdiga metoder som
Administrationsmanual ImageBank 2
Administrationsmanual ImageBank 2 INNEHÅLL 1. Konventioner i manualen 3 2. Uppmärksamhetssymboler 3 3. Vad är imagebank SysAdmin 4 4. Guide för att snabbt komma igång 5 5. Uppgradera din imagebank 1.2
Chapter 4: Writing Classes/ Att skriva egna klasser.
Chapter 4: Writing Classes/ Att skriva egna klasser. I dessa uppgifter kommer du att lära dig om hur man definierar egna objekt genom att skriva klasser. Detta är grunden för att förstå objekt orienterad
Manual C3 BMS v. 1.1 för Windows Mobile telefoner
Manual C3 BMS v. 1.1 för Windows Mobile telefoner Hur funkar det? Larmsystemet består av en server och databas i Stockholm samt applikationen C3 BMS i telefonen. Trafiken mellan server och telefon sker
ADO.NET Murach Kapitel 17-20
Databaser och C# ADO.NET Murach Kapitel 17-20 2013-01-30 1 Winstrand Development Databas ADO.NET Är en del av.net ramverket och tillhandahåller delar för att kommunicera med olika datakällor. Dessa kan
Innehåll MySQL Intro. Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata
Innehåll MySQL Intro Allmänt om Lagrade Procedurer Enkel utformning Skapa en lagrad procedur Använda parameter som indata 1 Lagrad procedur / Stored Procedure Lagrad procedur har många namn, förkortningen
Kopiering av objekt i Java
1 (6) Kopiering av objekt i Java Först När du läser detta papper bör du samtidigt studera dokumentationen för klasserna Object, Cloneable (java.lang) och ArrayList (java.util). Mycket blir klarare genom
Mål med lektionen! Repetera och befästa kunskaperna.
Entity Framework Mål med lektionen! Repetera och befästa kunskaperna. Vad lektionen omfattar Repetera och gå igenom kursen lite snabbt. Vilka problem vill vi lösa? Vi arbetar med Webbapplikationer Vi kommer
Datatal Flexi Presentity
Datatal Flexi Presentity En snabbguide för Presentity Innehållsförteckning 1. Login 2 2. Hänvisa 3 2.1 Att sätta hänvisningar 3 2.2 Snabbknappar 4 2.3 Windows gadget 5 3. Samtal 5 4. Status 6 4.1 Exempel
Att skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
JobOffice SQL databas på server
JobOffice SQL databas på server Nedan följer en instruktion hur du konfigurerar JobOffice kassas SQL databas på en server. Om du känner dig osäker på det här, kontakta någon lokal data- och nätverkstekniker.
KAP 18 SQL SERVER AGENT
KAP 18 SQL SERVER AGENT Tjänsten Sql Server Agent Operator Job Alert (larm) http://www.youtube.com/watch?v=ii1tc493bzm 1 VAD ÄR SQL SERVER AGENT? SQL Server Agent är en tjänst (service) som ansvarar för:
Metoder (funktioner) Murach s: kap Winstrand Development
(funktioner) Murach s: kap 6 2013-01-23 1 Winstrand Development Metoder I C# kan vi dela in koden i block en kodsekvens ska köras likadant på flera ställen i applikationen. Detta block kallas för en metod
Gränssnitt för FakeGranska. Lars Mattsson
Gränssnitt för FakeGranska av Lars Mattsson (larsmatt@kth.se) Innehållsförteckning 1 Introduktion...3 2 Genomförande:...3 3 Användning...5 4 Kända buggar:...6 5 Källförteckning...6 2 1 Introduktion Taken
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat
Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta
Objektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer
Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se
Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document
Programutvecklingsprojekt 2003-04-24 Projektgrupp Elvin Detailed Design Document Björn Engdahl Fredrik Dahlström Mats Eriksson Staffan Friberg Thomas Glod Tom Eriksson engdahl@kth.se fd@kth.se d94-mae@nada.kth.se
Digitalt lärande och programmering i klassrummet
Stockholm 2018-02-14 14 februari 2018 Digitalt lärande och programmering i klassrummet Programmera i Python med micro:bit Introduktion I förra lektionen gick vi igenom grunderna i hur man programmerar
Objektorienterad programmering
Objektorienterad programmering Emil Ahlqvist (c10eat@cs.umu.se) Didrik Püschel (dv11dpl@cs.umu.se) Johan Hammarström (c08jhm@cs.umu.se) Hannes Frimmel Moström (c10hml@cs.umu.se) 1 1. Introduktion 1.1 Objektorienterad
Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.
Schenker har interna system som handhar information som är av intresse för våra kunder/partners. Idag finns ett flertal av dem tillgängliga via Internet, sk Online-tjänster. Dessa erbjuder inte bara hämtning
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 11 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Designmönster Adapter, Factory, Iterator,
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
TUTORIAL: KLASSER & OBJEKT
TUTORIAL: KLASSER & OBJEKT I denna tutorial lär vi oss att använda klasser och objekt samt hur vi bygger en enkel applikation kring dessa. I tutorialen kommer det finnas en mängd kod som du antingen kan
Manuell installation av SQL Server 2008 R2 Express SP2 fo r SSF Timing
Manuell installation av SQL Server 2008 R2 Express SP2 fo r SSF Timing 1 Förutsättningar 1.1 Windows 7 och nyare DotNet Framework 3.5 SQL server 2008R2 kräver dotnet framework(.net) 2.0 för att fungera.
IT-system. BUP Användarmanual
IT-system Användarmanual Innehållsförteckning 1. Att komma igång med... 1 1.1 Installera... 1 1.1.1 Byt databas... 1 1.1.2 Behörighet att byta databas... 2 1.2 Logga in... 3 1.2 Inloggad... 3 1.3 Logga
Introduktion till integrering av Schenkers e-tjänster. Version 2.0
Introduktion till integrering av Schenkers e- Version 2.0 Datum: 2008-06-18 Sida 2 av 8 Revisionshistorik Lägg senaste ändringen först! Datum Version Revision 2008-06-18 2.0 Stora delar av introduktionen
Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
1 Installationsinstruktioner
1 Installationsinstruktioner 1.1 Förbereda installationen På Aucotecs hemsiad www.aucotec.com kan du kontrollera de aktuella systemkraven för Engineering Base. Försäkra dig om att din dators hårdvara uppfyller
Föreläsning 2. Operativsystem och programmering
Föreläsning 2 Operativsystem och programmering Behov av operativsystem En dator så som beskriven i förra föreläsningen är nästan oanvändbar. Processorn kan bara ges enkla instruktioner såsom hämta data
TUTORIAL: SAMLING & KONSOLL
TUTORIAL: SAMLING & KONSOLL Denna tutorial är en fortsättning på den tutorial där vi skapade klassen Car och sedan objekt av denna klass. Vi skall nu lära oss att lagra dessa objekt i en samling och även
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär
1.Lär känna MS SQL Observera. Tips. Förberedelse
1.Lär känna MS SQL 2008 Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill genomföra
NetBeans 7. Avsikt. Projektfönster
NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng
TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,
Manual Skogsappen - Hemkomstkontroll
Manual Skogsappen - Hemkomstkontroll Detta dokument utgör användarhandledningen till funktionen hemkomstkontroll i mobilappen Skogsappen som tillhör tjänsten epiforest. E p i s c o p e M o n i t o r i
OBJEKTORIENTERAD PROGRAMVARUUTVECKLING. Övningstentamen 1
Institutionen för Data- och informationsteknik JSk TENTAMEN OBJEKTORIENTERAD PROGRAMVARUUTVECKLING Övningstentamen 1 OBS! Det kan finnas kurser med samma eller liknande namn på olika utbildningslinjer.
Så här byter du från Unifaun WebOrder (UWO) till Unifaun OnlineConnect (UOCT)
Så här byter du från Unifaun WebOrder (UWO) till Unifaun OnlineConnect (UOCT) För att genomföra migrationen till UOCT bör ditt konto ha det nya utskriftssystemet Unifaun OnlinePrinter (UOP) aktiverat.
Windows Forms Winstrand Development
2013-01-23 1 Winstrand Development Användargränssnitt Hittills har vi skapat program för kommandoraden. Den bakomliggande koden fungerar som den ska, men vi upptäcker snabbt att programmen är begränsade
Ontech Control för Iphone Användarmanual Svenska
Ontech Control för Iphone Användarmanual Svenska På grund av restriktioner hos Apple så är vår Iphone app begränsade i vissa ärenden. Bland annat så skickas SMS ej automatiskt när inställningar är gjorda
Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Introduktion till Jasmine 1.2 ODQL
Introduktion till Jasmine 1.2 ODQL I detta avsnitt beskrivs ett antal praktiska handgrepp som behövs för att köra Jasmine ODQL. 1 ODQL miljön Man kan enklast köra ODQL mot Jasmine från ett vanligt Command
Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt idnummer på varje blad (så att vi inte slarvar bort dem).
1 (11) TENTAMEN: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv ditt idnummer på varje blad (så att
Classes och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API
Snabbguide Visma Compact API Version 5.1 Copyright 2006-2008 Visma Spcs AB Visma Compact API Introduktion Visma Compact API är ett programmeringsgränssnitt framtaget för att underlätta integration av Visma
Databasutveckling Microsoft T-SQL - Fortsättning. Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering
Databasutveckling Microsoft T-SQL - Fortsättning Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Funktioner GROUP BY HAVING Skapa databaser Skapa tabeller Lite om transaktioshantering
1 Installationsinstruktioner
1 Installationsinstruktioner 1.1 Förbereda installationen Kontrollera systemkraven. Försäkra dig om att din dators hårdvara uppfyller de systemkrav som är specificerade. Vid installering av Engineering
Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10
Projekt Rapport RaidPlanner Jeanette Karlsson UD10 Abstrakt: Denna rapport handlar om mitt projekt i kursen Individuellt Mjukvaruutvecklings projekt. Rapporten kommer att ta upp hur jag gått tillväga,
Föreläsnings 9 - Exceptions, I/O
Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public
Win95/98 Nätverks Kompendium. av DRIFTGRUPPEN
Win95/98 Nätverks Kompendium av DRIFTGRUPPEN Sammanfattning Vad håller jag i handen? Detta är en lättförståelig guide till hur man lägger in och ställer in nätverket i Windows 95 och 98 Efter 6 (sex) enkla
Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016
Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class
Objektsamlingar i Java
1 (6) Objektsamlingar i Java Objektorienterad programmering 3 Syfte Att ge träning i att använda objektsamlingar i Java. Mål Efter övningen skall du kunna använda objektsamlingsklasserna ArrayList och
Jetshop AB WEBSERVICE-API 1.2 ANVÄNDARMANUAL. Version 1.2 2011-10-12
Jetshop AB WEBSERVICE-API 1.2 ANVÄNDARMANUAL Version 1.2 2011-10-12 1. Förord I det här dokumentet ges en generell beskrivning av det Webservice-API som är utvecklat av Jetshop AB, och är avsett för dig
Spara papper! Skriv inte ut sammanfattning utan ladda ner PDF!
Denna beskrivning har gjorts på Windows XP Professional (men bör fungera även på Home Edition och Windows 2000/2003). Att installera Oracle 9i Personal Edition kräver ca. 3 GB hårddiskplats och ca. 200
MANUAL - CELLIP 365 COMMUNICATOR
INNEHÅLLSFÖRTECKNING Innehållsförteckning... 1 Introduktion... 2 1. Kom igång... 2 32-bitarsversionen av Skype för företag och Office är ett krav... 2 Installera Communicatorn... 2 Tillåt Communicatorn
Webbtjänster med API er
Webbtjänster med API er Mål med lektionen! Veta kursmålen. Lite grunder om WCF Vem är jag? Mitt namn är Björn Jönsson och jobbar på Tahoe Solutions, ni når mig via mail: bjorn.jonsson@tahoesolutions.se
iphone/ipad Snabbguide för anställda på HB
iphone/ipad Snabbguide för anställda på HB Innehållsförteckning: Första uppstarten... 1 Apple-ID... 1 Hitta min iphone... 1 Trådlöst nätverk (Wi-Fi)... 2 Kalender, E-post & Kontakter... 3 GW-Sync konfiguration...
NetBeans 5.5. Avsikt. Projektfönster
NetBeans 5.5 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till
MANUAL CELLIP SOFTPHONE
INNEHÅLLSFÖRTECKNING Innehållsförteckning... 1 Funktioner... 2 1. Starta Cellip Softphone... 2 2. Logga in... 2 3. Ringa med Cellip Softphone... 2 4. Dolt nummer... 3 5. Svara i Cellip Softphone... 3 6.
PROGRAMMERINGSTEKNIK TIN212
Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:
Lär känna MS SQL 2008 / Övning. Observera. Tips. Förberedelse
Lär känna MS SQL 2008 / Övning Observera Övningar som finns tillgängliga är till för att du ska kunna testa dina kunskaper och träna på dem. Det är helt upp till dig när du vill genomföra och om du vill
Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.
Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Kunskapsbank ICARUS DB
Kunskapsbank ICARUS DB K E Y L O G I C A B 1 Innehållsförteckning 1 Innehållsförteckning 1 2 SQL Server 2005 3 2.1 Installation 3 2.2 Användargränssnitt (DBMS) för SQL Express 3 2.3 Undvik att transaktionsloggen
Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse
Verktyg och Utvecklingsmiljö Föreläsning 2 Eclipse Verktyg Modern programutveckling innebär att man måste behärska ett antal verktyg. Editorer Kompilatorer Avlusare(debugger) Versionshantering(kommer i
Tentamen i TDP004 Objektorienterad Programmering Praktisk del
Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2010-04-07 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär
Installera SoS2000. Kapitel 2 Installation Innehåll
Kapitel 2 Installation Innehåll INSTALLATION MDAC och ODBC...2 Installera SoS2000 i arbetsplatsen...2 SoS2000 serverprogramvara...2 SoS2000 och övriga Office program...3 Avinstallera SoS2000...3 Brandväggar...3
Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.
TNT ExpressShipper installation. Om ni redan har en ExpressShipper installation på företaget behöver ni först ta reda på vilken version som är installerad och sökvägen till databasen. Versionen ser ni
Användarhandledning Version 1.2
Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...
Programmering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Manual C3 BMS för Android-telefoner
- för dig som gillar ovanliga fåglar 2012-09-24 Manual C3 BMS för Android-telefoner Hur fungerar det? Larmsystemet består av en server och databas i Stockholm samt applikationen C3 BMS i telefonen. Trafiken
Ladda ned appen Plickers till din surfplatta eller mobiltelefon och logga in med samma konto som du skapade ovan. Appen är gratis.
Manual Plickers Plickers är ett responsverktyg och ett baskonto är gratis att använda. Eleverna behöver inte några egna enheter för att kunna lämna sina svar, bara varsitt personligt kort med en skanningsbar
Nyhet. SMS funktion i Opus Dental. Sidan 1 av 12
Nyhet SMS funktion i Opus Dental 2004 Sidan 1 av 12 OPUS SMS-funktion Opus SMS är tjänsten som förser Opus Dental med SMS - funktionalitet. Med Opus SMS kan Opus Dental: Skicka påminnelser via SMS Med
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11
Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11 Undantag Engelska: exceptions Skansholm: exceptionella händelser Fel som genereras om man försöker
Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2
AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga
1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.
1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som
DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.
1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.
Max Walter SKYPE FÖR MAC OS X
Max Walter SKYPE FÖR MAC OS X Del KOM IGÅNG MED SKYPE 6. Ring till andra på Internet... 6 7. Telefonkonferenser... 8. Chatta... 9. Filer... 9 0. Videosamtal.... Personifiera Skype... 6. Ändra användarstatus...
Programmering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Frekvenstabell över tärningskast med C#
Instruktion Frekvenstabell över tärningskast med C# Introduktionsuppgift Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402 Innehåll Du ska följa steg för steg -instruktionen i
Algoritmer. Två gränssnitt
Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;
Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT 2007. Lars Larsson Algoritmer 1
Algoritmer Lars Larsson VT 2007 Lars Larsson Algoritmer 1 1 2 3 4 5 Lars Larsson Algoritmer 2 Ni som går denna kurs är framtidens projektledare inom mjukvaruutveckling. Som ledare måste ni göra svåra beslut
CMA Desktop PC baserad Video och Chat
CMA Desktop PC baserad Video och Chat En pilot i miljöns tecken NLL Länsteknik Arbetsplats: Länsteknik Sunderby Sjukhus Sida 2 (8) Start och inloggning av CMA Desktop CMA Desktop startas automatiskt när
Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel
Programmeringsteknik för Bio1 och I1 Övning 2 Kort repetition Övningsgrupp 3 (Sal E33) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1310/
emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)
emopluppen Användning av "Ant" Version: 1.4 ( 2002/04/26 07:27:52 UTC) Niklas Backlund Sammanfattning Det här dokumentet handlar om programmet Ant, som är en byggmiljö för programutvecklingsprojekt. Dess