• No results found

Utveckling av lagerhanteringsapplikation för handterminal : Development of storage management application for PDA

N/A
N/A
Protected

Academic year: 2021

Share "Utveckling av lagerhanteringsapplikation för handterminal : Development of storage management application for PDA"

Copied!
45
0
0

Loading.... (view fulltext now)

Full text

(1)

Utveckling av

lagerhanteringsapplikation

för handterminal

Kristoffer Rönnberg

Marcus Magnusson

EXAMENSARBETE 2007

DATATEKNIK

(2)

Postadress: Besöksadress: Telefon: Box 1026 Gjuterigatan 5 036-10 10 00 (vx) 551 11 Jönköping

Utveckling av

lagerhanteringsapplikation

för handterminal

Development of

storage management application

for PDA

Kristoffer Rönnberg Marcus Magnusson

Detta examensarbete är utfört vid Tekniska Högskolan i Jönköping inom ämnesområdet Datateknik.Arbetet är ett led i den treåriga

högskoleingenjörsutbildningen

Författarna svarar själva för framförda åsikter, slutsatser och resultat. Handledare: Bengt Ekeberg

Omfattning: 10 poäng (C-nivå) Datum: 2007-06-15

(3)

Sammanfattning

1

Abstract

This exam paper has been a collaboration between the writers and System Anderson AB. The assignment was about completing a client application, running on a PDA, and a server application, running as a web service. The web service handles the communication with System Anderssons existing database. The main goal for the application is that it will be used to increase efficiency in storage management. The client application will hold functions for withdrawal, purchase, delivering and inventory. This project brings up the implementation of the functions for withdrawal and purchasing.

A part of this exam paper contains the basic theory that underlies the project. It also contains a summary of the different choices that has been made.

The result of this exam paper is a well-functioning version of our application. The application contains functions for withdrawal and purchasing.

(4)

Sammanfattning

2

Sammanfattning

Detta examensarbete har gjorts i samarbete med System Andersson AB. Uppdraget bestod i att färdigställa en klientapplikation för en handterminal samt en serverapplikation i form av en webbtjänst som sköter all

kommunikation med företagets befintliga databas. Målet är att applikationen skall användas för att effektivisera lagerhantering inom verkstadsindustrin. Klientapplikationen ska innehålla funktioner för uttag, inköp, inleverans och inventering. Detta projekt avgränsar sig till att implementera funktionerna för uttag och inköp.

Rapporten innehåller en grundläggande teoridel som tar upp den teori som ligger till grund för projektet. Dessutom innehåller den en redogörelse för de olika metodval som gjorts.

Resultatet av detta examensarbete är en väl fungerande applikation.

Applikationen innehåller fungerande funktioner för såväl uttag som inköp.

Nyckelord

Systemutveckling, Handterminal, Compact Framework, C#, XML, Streckkoder, Prestanda, Driftsäkerhet, Användargränssnitt

(5)

Sammanfattning

3

Figurlista

Figur 1 Kompileringsförlopp, Java [2] ... 13 

Figur 2 Gotive H42 ... 19 

Figur 3 Interleaved 2 of 5 ... 22 

Figur 4 Code 39 ... 23 

Figur 5 Upp- och nerpil ... 29 

Figur 6 Backspace ... 29 

Figur 7 Exit ... 29 

Figur 8 Alfanumeriskt tangentbord ... 32 

Figur 9 Numeriskt tangentbord ... 33 

Figur 10 Anställningsvy ... 34  Figur 11 Funktionsmeny ... 35  Figur 12 Uttagsmeny ... 36  Figur 13 Uttag TO ... 36  Figur 14 UtgPlanTO ... 37  Figur 15 UtgEjPlanTO ... 37  Figur 16 UtgTOUttaget ... 38 

Figur 17 Fritt Uttag ... 38 

(6)

Innehållsförteckning 4

Innehållsförteckning

1  Inledning ... 6  1.1  FÖRORD ... 6  1.2  BAKGRUND ... 7  1.2.1  Uppdraget ... 7  1.2.2  Företagets bakgrund ... 8  1.3  SYFTE OCH MÅL ... 9  1.4  AVGRÄNSNINGAR ... 9  1.5  DISPOSITION ... 10  2  Teoretisk bakgrund ... 11  2.1  PROGRAMMERINGSSPRÅK ... 11  2.1.1  Objektorienterad programmering ... 11  2.1.2  Java ... 12  2.1.3  C# ... 14  2.2  UTVECKLINGSPLATTFORM ... 15  2.2.1  .NET Framework ... 15 

2.2.2  .NET Compact Framework ... 15 

2.2.3  Visual Studio.NET ... 15  2.2.4  ASP.NET ... 15  2.2.5  Windows CE ... 15  2.2.6  XML ... 16  2.2.7  Pervasive PSQL ... 18  2.3  HANDTERMINAL ... 19  2.3.1  Gotive H42 ... 19  2.3.2  Gotive SDK ... 20  2.4  STRECKKODER ... 22  2.4.1  Interleaved 2 of 5 ... 22  2.4.2  Code 39 ... 23  3  Genomförande ... 24  3.1  INLEDNINGSFAS ... 24  3.1.1  Utvecklingsmiljö ... 24  3.1.2  Testmiljö ... 25  3.2  PRESTANDA ... 26  3.3  DRIFTSÄKERHET ... 27  3.4  ANVÄNDARVÄNLIGHET ... 28 

3.5  DESIGN OCH FUNKTION ... 29 

3.5.1  Uppbyggnad ... 29  3.5.2  Knappklass... 29  3.5.3  Streckkodsläsare ... 30  3.5.4  Alfanumeriskt tangentbord ... 32  3.5.5  Numeriskt tangentbord ... 33  4  Resultat ... 34 

4.1  DESIGN OCH LAYOUT ... 34 

4.1.1  Anställningsvy ... 34 

4.1.2  Funktionsmeny ... 35 

4.1.3  Uttagsmeny ... 36 

4.1.4  Inköpsmeny ... 39 

4.2  FRÅGESTÄLLNINGAR OCH MÅL ... 40 

(7)

Innehållsförteckning

5

6  Referenser ... 42 

(8)

Inledning

6

1 Inledning

1.1 Förord

Det här examensarbetet är en del av vår kandidatexamen i Datateknik vid Jönköpings Tekniska Högskola. Projektet har gett oss mer insikt och förståelse för hur ett systemutvecklingsprojekt fungerar i ”verkligheten”.

Vi skulle först och främst vilja tacka System Andersson AB och dess VD Thomas Candemar för att vi har fått möjligheten att genomföra detta arbete. Ett speciellt tack vill vi rikta till Andreas Käll som har varit till stor hjälp genom hela arbetet samt övrig personal som varit delaktiga i projektet. Vi vill också tacka all personal på företaget för det varma bemötandet vi har möts av vid våra besök. Till sist tackar vi vår handledare på JTH, Bengt Ekeberg, som varit till stöd och hjälp under vår rapportskrivning.

Arbetet på System Andersson AB har varit till stor nytta och har gett oss en ökad förståelse för ett ingenjörsmässigt arbete samt en god inblick i det

stundande arbetslivet. Vi hoppas att vårt arbete i sin tur kan generera nytta för företaget på samma sätt som det gjort för oss.

(9)

Inledning

7

1.2 Bakgrund

1.2.1 Uppdraget

Detta examensarbete har gjorts i samarbete med System Andersson AB. System Andersson har under 8 års tid använt sig av en äldre generation handterminaler. Då företaget gjort en behovsanalys och sett ett behov för vidareutveckling av marknaden ämnar de att utveckla en applikation för användning på den nya generationens handterminaler. En detaljerad beskrivning har därför tagits fram av företaget.

Projektet omfattar design, implementering och dokumentation av en applikation för handterminalen från företaget Gotive. Applikationen skall innehålla funktioner för:

• Inleverans – Matchar inköpsorders mot verkligt levererat antal • Uttag – Registrerar uttag av material och verktyg från lagret • Inköp – Bokar inköp för framtida arbeten

• Inventering – Matchar lagersaldo (databas) mot verkligt lagersaldo Tanken är att en färdig version ska visas på Elmia Subcontractor i november 2007. Applikationen kommer att bestå av en klientapplikation som körs på handterminalen samt en serverapplikation i form av en webbtjänst som körs på en central server. Tanken är att klientapplikationen kommunicerar med

webbtjänsten. Webbtjänsten i sin tur har hand om all databashantering. Viktiga punkter för företaget i projektet är:

• Prestanda • Driftsäkerhet

• Användarvänlighet

Inom prestanda ligger främst tyngdpunkten på att få ner svarstiderna. Detta för att produkten överhuvudtaget skall ha en framtid på marknaden. Med

driftsäkerhet menas att produkten alltid skall vara uppkopplat mot nätverket. Endast när hela nätverket går offline är det acceptabelt att handterminalen inte har kontakt. Eftersom även personer med liten eller ingen datorvana skall arbeta med terminalen ställs höga krav på användarvänlighet i applikationen. Programmet skall vara lättnavigerat och tydligt för att undvika fel och

(10)

Inledning

8

1.2.2 Företagets bakgrund

System Andersson AB grundades år 1980. System Andersson är

marknadsledande inom verkstadssystem, med över 1500 installationer på tillverkande företag. Företaget har idag ca.20 anställda.

Förra året levererade System Andersson över 100 verkstadssystem.

Huvudprodukten är Andersson Qwick MPS, som är ett verkstadssystem, men System Andersson levererar även egna kringprodukter, exempelvis

handterminaler. System Andersson kan om kunderna så vill, ta helhetsansvar och koppla såväl Affärssystem som CRM system till deras egenutvecklade verkstadssystem.

(11)

Inledning

9

1.3 Syfte och mål

Målet med detta examensarbete är att färdigställa klient- och server-applikation för handterminalen så att de motsvarar de mål och krav som satts upp samråd med företaget.

• Prestanda

Hur uppnås korta svarstider vid kommunikation mellan server- och klientapplikation?

• Driftsäkerhet

Hur ska klientapplikationen behandla kommunikationsproblem med server?

• Användarvänlighet

Hur strukturerar man ett användargränssnitt för att det ska passa såväl personer med datorvana, som personer utan?

En avgörande del i projektet är att handterminalen ska effektivisera personalens arbete. Detta uppnås genom korta svarstider, hög driftsäkerhet och ett väl genomtänkt användargränssnitt.

1.4 Avgränsningar

För att färdigställa projektet inom tidsramen för examensarbetet, kommer vi att avgränsa oss till att endast implementera funktionerna för inköp och uttag. I mån av tid kommer vi även att implementera funktionerna för inventering och inleverans.

(12)

Inledning

10

1.5 Disposition

Rapporten utgår från att läsaren har viss kännedom om programmering. Teori

I teoridelen tar vi upp den teori som ligger till grund för rapporten. Vi börjar med att jämföra de olika programmeringsspråk som är intressanta för projektet. Sedan tar vi upp och förklarar de olika delarna i den utvecklingsmiljö vi har valt. Tills sist har vi ett avsnitt som berör den handterminal vi använt i projektet.

Genomförande

I denna del av rapporten tar vi först upp och förklarar vilket

programmeringsspråk och vilken utvecklingsmiljö vi har valt och varför vi gjorde dessa val. Vidare förklaras hur vi satte upp en fungerande testmiljö. Sedan följer vår utredning av de viktigaste punkterna i projektet. Avsnittet avslutas med en ingående redogörelse för hur applikationen fungerar och de problem vi stött på under projektets gång.

Resultat

I detta avsnitt av rapporten tar vi upp hur slutresultatet blev. Vi redogör även för hur applikationen svarar upp mot de mål som satts upp.

Diskussion

(13)

Teoretisk bakgrund

11

2 Teoretisk bakgrund

2.1 Programmeringsspråk

2.1.1 Objektorienterad programmering

Med objektorientering avses det att man ser till de objekt som programsystemet ska byggas upp av istället för att fokusera på funktionerna. Om man ser till programmeringen så innebär det att bygga upp sitt program av ett antal objekt som är väl avgränsade. Grundstenarna i objektorientering är:

• Klasser • Inkapsling • Arv

• Polymorfism

En klass är en beskrivning av en grupp objekt med likadana egenskaper och operationer. Klassen Bil skulle t.ex. kunna bestå av egenskapen färg och operationen accelerera.

Vanligtvis brukar man gömma ett objekts attribut för omvärlden och endast visa ett ”interface” utåt. Om man använder klassen Bil så kan man se att den har en operation för att accelerera men man kan inte se hur den utför

operationen. Genom att dölja objektets attribut från omvärlden garanteras att alla ändringar i objektet utförs inom klassen, så kallad inkapsling.

Ett sätt att återanvända klasser kan vara genom arv. Om vi ser klassen Bil som en basklass och Terrängbil och Sportbil som subklasser så ärver de två

subklasserna basklassens attribut och operationer. Subklasserna kan även förfoga över egna attribut och operationer.

Polymorfism innebär att en operation som finns i flera klasser kan ha olika utföranden av metoden, t.ex. accelerationen ska utföras annorlunda hos en terrängbil jämfört med en sportbil.

(14)

Teoretisk bakgrund

12

2.1.2 Java

2.1.2.1 Historia

Java är idag en av de stora aktörerna på programmeringsmarknaden. Språket är utvecklat av amerikanen James Gosling. Det som till slut blev

programmeringsspråket Java hette från början OAK och var det språk som fanns i Suns produkt *7 (Star Seven). Detta var en apparat som bestod av en pekskärm med vilken man kunde styra flera olika elektronikapparater i hemmet, t.ex. tv, video och stereo. När inte den fick genomslagskraft las projektet ner. När man sedan insåg att internet var nästa stora grej utvecklade Gosling OAK till ett fullt utvecklat programmeringsspråk. Inför lanseringen i maj 1995 döptes språket om från OAK till Java.[1]

2.1.2.2 Översikt

Det som Sun hade för ögonen när Java utvecklades för framförallt tre punkter • Inbyggt stöd för objektorientering

• Säkert

• Plattformsoberoende

Java är till 100 % objektorienterat till skillnad mot en del andra språk

exempelvis C++ där man kan välja om man vill skriva objektorienterat eller inte.

Att Java är plattformsoberoende möjliggörs genom att den färdigprogrammerade koden översätts till bytekod. Många andra

programmeringsspråk översätts till maskinkod, vilket medför att de ofta är plattformsberoende eftersom olika plattformar tolkar koden olika. Men med detta steg att översätta till bytekod blir det ett steg extra i kompileringsfasen. Man måste ha en så kallad ”Java Virtual Machine” (JVM)installerad som kan översätta denna bytekod till maskinkod. Detta har gjort att Java historiskt sett har ansetts vara ett lite långsammare programmeringsspråk än andra

(15)

Teoretisk bakgrund

13

Nedan visas en skiss över processen från skriven kod till körklar kod.

Figur 1 Kompileringsförlopp, Java

Det finns flera olika plattformar för programutveckling inom Java. Nedan följer en lista på de olika plattformar som finns

• SE, Standard Edition

Den vanligaste plattformen som används inom medelstora datasystem • ME, Micro Edition

Version som är nedbantad, används bl.a. till mobiltelefoner och handdatorer

• EE, Enterprise Edition

Den mest avancerade plattformen, används inom komplexa och stora dator- och server-system

2.1.2.3 Kodexempel

public class Hello {

public static void main(String[] args) {

System.out.println("Hello World!"); }

(16)

Teoretisk bakgrund

14

2.1.3 C#

2.1.3.1 Historia

C# skapades av Anders Hejslberg. Hejslberg hade tidigare jobbat med en kompilerare för programmeringsspråket Pascal. Denna kompilerare, som kallades Turbo Pascal, blev senare integrerad i Borlands IDE. Hejslberg anställdes senare av Borland och blev slutligen chefsarkitekt där. 1999 lämnade han Borland för Microsoft och skapade språket J++, som är Microsofts implementering av Java. År 2000 påbörjade han sitt jobb som huvuddesigner av programmeringsspråket C#, uttalas C-Sharp. [2]

2.1.3.2 Översikt

Målet med C# var att skapa ett språk som var enkelt, modernt och generellt. 2001 släpptes den första versionen av C# på marknaden. Ett C# projekt består av en eller ett antal källkodsfiler. Nedan visas tillvägagångssättet för hur en kompilering av ett C# projekt går till, om än något förenklad.

• Transformering • Översättning • Syntax analys

Vid transformering konverteras koden man skrivit till en ordnad sekvens av Unicodetecken, Unicode är en global standard för teckenkodning.

I nästa steg översätts sekvensen av Unicodetecken till en ström av tokens. Syntaxanalys innebär att strömmen av tokens översätts till exekverbar kod.[3] 2.1.3.3 Kodexempel using System; namespace HelloWorld { class Hello {

public static void Main() {

Console.WriteLine("Hello World!"); }

} }

(17)

Teoretisk bakgrund

15

2.2 Utvecklingsplattform

2.2.1 .NET Framework

.NET Framework är ett ramverk för utveckling av applikationer skapat av Microsoft. Ramverket ger stöd för att använda olika programspråk och

bibliotek, samt förenklar skapandet av windowsapplikationer. Ett exempel på ett färdigt bibliotek som ingår är Windows Forms, som används för att förenkla utvecklandet av grafiska gränssnitt.

Med stöd för ett antal olika programmeringsspråk ger .NET Framework programmeraren en möjlighet att välja det som språk som passar denne bäst.

2.2.2 .NET Compact Framework

.NET Compact Framework är en förenklad version av .NET Framework. Microsoft skapade Compact Framework för användning på handdatorer, varför det krävdes ett mindre ramverk. Genom att hålla nere storleken höjdes

prestandan.

2.2.3 Visual Studio.NET

Visual Studio.NET är en programutvecklingsmiljö eller en IDE (Integrated Development Environment) som kan användas för att skriva program med en rad olika programmeringsspråk.

2.2.4 ASP.NET

Microsoft ASP.NET är benämningen på en samling tekniker som används för att bygga dynamiska webbapplikationer. Man kan även använda det för att skapa dynamiska hemsidor eller XML-webbtjänster.

2.2.5 Windows CE

Operativsystemet som vår handterminal från Gotive använder sig av är Windows CE.NET 5.0.Det är utvecklat av Microsoft för att kunna köras på enheter med väldigt lite primärminne. Windows CE används till inbyggda system, såsom handdatorer och mobiltelefoner.

(18)

Teoretisk bakgrund

16

2.2.6 XML

XML (eXtensible Markup Language) är en standard för strukturering av data. Standarden är utvecklad av W3C (World Wide Web Consortium) som handhar det mesta inom webben. XML har stöd från samtliga viktiga aktörer på

marknaden vilket gör att man kan satsa på XML utan risk för att standarden ska dö ut inom den närmsta tiden.

XML härstammar från SGML (Standard Generalised Markup Language), som är en ISO-standard. SGML används främst för dokumenthantering och de flesta användarna finns inom militärindustrin. Standarden tillhandahåller en syntax för att representera innehållet i ett dokument. SGML är mycket komplext och kräver således hög kompetens, vilket i sin tur gör att kostnaden för att använda det blir väldigt hög. HTML är till viss del framtaget med SGML som grund. Man tog delar från SGML och kallade det nya språket HTML. Den stora skillnaden mellan språken är att HTML blandar innehåll och presentation medan SGML skiljer strikt mellan dessa delar.

När XML skapades gjorde man i princip samma sak. De delar av SGML som användes mest togs och resterande kasserades. En del förändringar gjordes också för att XML skulle anpassas för webben.

2.2.6.1 Struktur

Ett XML-dokument är uppbyggt av ett eller flera element. Varje element kan innehålla ytterligare element eller text. Elementen formar en hierarkisk

uppbyggnad. Dokumentet börjar alltid med ett element, kallat rotelement, som talar om dokumentets typ. Resterande element ligger under rotelementet. Varje element består av en starttagg och en sluttagg. En tagg kan liknas vid en etikett. En starttagg har symbolen ”<” och en sluttagg ”>”. Mellan start- och sluttaggen ligger elementnamnet. Nedan visas ett exempel på hur ett XML-dokument kan vara strukturerat.

<adressbok> <namn>

<fornamn>Kalle</fornamn>

<efternamn>Svensson</efternamn> </namn>

<adress>

<gatuadress>Svenssongatan 12</gatuadress> <postnr>12345</postnr>

<ort>Hedemora</ort> </adress> <telefon> <hemtfn>0122345566</hemtfn> <mobiltfn>07012345678</mobiltfn> </telefon> <emailadress>

<email>kalle@svensson.com</email> </emailadress>

(19)

Teoretisk bakgrund

17

2.2.6.2 Användningsområde

XML utvecklades inte för att användas inom ett speciellt problem- eller applikationsområde. Detta gör att XML har ett väldigt brett

användningsområde. Man kan, i princip, använda XML på två olika sätt. Antingen använder man det strikt för att strukturera data som ska läsas av datorer eller för sådant som ska läsas av både datorer och människor. När XML används för att läsas av datorer brukar det fungera som ett ”middleware”. Ett middleware, eller ett mellanprogram på svenska, är ett program vars uppgift är att underlätta kommunikationen mellan användarens program och dess resurser, t.ex. en databas.[4] Här används alltså XML-dokument för att skicka meddelanden mellan olika applikationer. Dessa dokument är ofta väldigt enkelt uppbyggda.

Använder man istället XML-dokument för att strukturera data som ska läsas av både människor och datorer krävs ofta någon form av stilmall för att presentera data. Dessa dokument brukar vara komplexa. [5]

(20)

Teoretisk bakgrund

18

2.2.7 Pervasive PSQL

Pervasive PSQL är en relationsdatabas utvecklad av Pervasive Software. Databasen är designad för att enkelt kunna distribueras ihop med en applikation. De plattformar som stöds är Linux, Novell Netware samt

Microsoft Windows. Pervasive PSQL finns i två olika versioner, workgroup och server. Workgroup har stöd för upp till fem användare medan

serverversionen stöder sex eller flera användare.

Pervasive tillhandahåller en ”dataprovider” för användning i .NET-miljö. En dataprovider är ett lager mellan en applikation och en databas som underlättar kommunikationen mellan dessa. En typisk funktion som skapar en anslutning till databasen, hämtar data och stänger anslutningen kan se ut som följer. [6] [WebMethod]

public DataSet GetEmployees() {

//Skapar ett objekt av typen PsqlConnection

//med anslutningsdata

PsqlConnection myConnection = new

PsqlConnection("server=localhost; serverDSN=winmps; encoding=437");

//Skapar en anslutning till databasen.

myConnection.Open();

//Skapar ett objekt av typen PsqlDataAdapter

//med en SQL-fråga.

PsqlDataAdapter pDataAdPerson = new PsqlDataAdapter(" SELECT NickName FROM Sasreg03 WHERE Terminal10 = 1 ", myConnection);

//Skapar ett objekt av typen DataSet

DataSet dsPerson = new DataSet();

//Fyller upp dsPerson med den data som SQL-frågan ovan returnerar

//Det är också här själva exekveringen av SQL-frågan sker.

pDataAdPerson.Fill(dsPerson);

//Stänger anslutningen till databasen

myConnection.Close(); //Returnerar ett dsPerson

return dsPerson; }

(21)

Teoretisk bakgrund

19

2.3 Handterminal

2.3.1 Gotive H42

Handterminalen som används inom detta projekt är framtagen av företaget Gotive och har beteckningen H42. H42 är en robust och slagtålig konstruktion som är utvecklad för att klara hårda industri- och verkstadsmiljöer.

Figur 2 Gotive H42

H42 är utrustad med en förhållandevis stor skärm (6,2”, 640x240 pixels) i jämförelse med andra handterminaler. Den är även utrustad med tre

programmeringsbara snabbknappar. Hårdvarumässigt kan H42 utrustas med olika funktioner beroende på kundens behov. Den kan utrustas med följande funktioner: • Bluetooth • GPS • GSM/GPRS • WLAN • BCR – streckkodsläsare • SIM/SD • CF Card, type 2 • SCR – smartcard läsare • Fingeravtrycksläsare [7]

(22)

Teoretisk bakgrund

20

2.3.2 Gotive SDK

För att kunna utnyttja handterminalens alla inbyggda funktioner så finns det en så kallad SDK (Software Development Kit) som man kan ladda ner från

företagets hemsida (http://www.gotive.com). En SDK är i grund och botten ett utvecklingsverktyg, som gör det möjligt för programmerare att utnyttja alla funktioner som finns i ett visst programpaket.

Gotives SDK består av 6st huvudklasser. Dessa klasser är: • LCD class • SysInfo class • ActionKey class • BCR class • GO class • DS class

Nedan kommer en förklaring av de olika klasserna.

2.3.2.1 LCD class

LCD klassen innehåller metoder för att styra pekskärmen. Ett exempel på de olika funktioner man kan styra med denna klass är: ljusstyrka och kontrast. 2.3.2.2 SysInfo class

Innehåller metoder för att få information om statusen på handterminalen. Ett exempel på en metod är GetDeviceID som returnerar information om

handeterminalen.

2.3.2.3 ActionKey class

Handterminalen från Gotive är utrustad med tre snabbknappar som kan konfigureras. Det finns två metoder inom denna klass:

• GetData • SetData

Med GetData så läser man av vilken knapp som tryckts ner, hurdant klick det var (snabbt klick eller ihållande tryckning) och vad som ska hända när knappen trycks ner (exempelvis en tangentbordstryckning). [8]

(23)

Teoretisk bakgrund

21

2.3.2.4 BCR class

För att kunna använda streckkodsläsaren måste man först öppna

kommunikationen med att kalla på metoden ”BCR.open”, därefter kan övriga metodanrop göras. Nedan följer en lista över klassens alla metoder:

• Open

Öppnar BCR-porten • Close

Stänger BCR-porten • GetData

Metoden som läser av streckkoderna • GetRevision

Returnerar mjuk- och hårdvarans versionsnummer • GetParameters

Läser av satta parametrar • SetParameters

Sätter parametrar • ResetParameters

Återställer parametrarna till default

• SetAim

Kontrollerar funktionen för sikte 2.3.2.5 GO class

Denna klass används för att implementera specifika H42 funktioner. Exempel på en sådan här är funktionen ”GO.WakeOn Power” som innebär att

handterminalen endast går ur viloläge om den känner att den har strömförsörjning.

2.3.2.6 DS class

Dockningstationens API (Application Programming Interface) erbjuder programmeraren att utnyttja alla fördelar och funktioner som finns för dockningsstationen (nedan kallad DS). Även i denna klass måste var je

funktion man implementerar börja med att man öppnar kommunikationen med att kalla på metoden ”DS.open”.

DS API:t kapslar också in några publika klasser och i denna text tas ett exempel upp.

PS2 Tangentbord

Detta innebär att ett PS2 tangentbord kan kopplas in till DS och underlätta inmatning när handterminalen sitter i DS. Koderna från

tangentbordstryckningarna översätts och simulerar en vanlig tangenttryckning i Windows.

(24)

Teoretisk bakgrund

22

2.4 Streckkoder

Streckkoder uppfanns år 1934 av en man vid namn John T Kermode som satt och funderade på om det inte fanns något sätt att automatisera sorteringen av utgående fakturor. Det han kom på var att sätta olika breda och olika många svarta streck bredvid varandra. Som läsanordning använde han en magnetisk spole som kunde avläsa strecken. Streckkoder förknippas kanske mest med dagligvaruhandel, men finns i princip inom alla olika branscher. Det finns många olika standarder framtagna, var och en specialiserade efter det område där det ska användas. Streckkoder fungerar så att man placerar olika tjocka svarta streck intill olika tjocka ljusa mellanrum. När man låter en ljusstråle belysa strecken omvandlas ljuset till elektriska signaler varpå en kod kan utläsas. Vissa standarder kan bara läsa de svarta strecken, medans vissa standarder även läser de ljusa mellanrum som finns. [9]

2.4.1 Interleaved 2 of 5

Interleaved 2 of 5 är en är en kontinuerlig kod, som betyder att även ljusa streck används för att lagra information. Koden är strikt numerisk och måste bestå av ett jämnt antal siffror eftersom varje sifferpar ses som ett element. Då kodens start- och stopptecken är kortare än elementen förordas att man lägger en någon form av checksiffra i koden för att öka säkerheten. [9]

Exempel på Interleaved 2 of 5:

(25)

Teoretisk bakgrund

23

2.4.2 Code 39

En kod som är väldigt vanlig inom kommersiellt och industriellt bruk. Det är en alfanumerisk kod av variabel längd. Kan innehålla versala bokstäver A-Z, tecken 0-9 samt följande specialsymboler: - . $ / + %. Code 39 lämpar sig inte väl vid långa teckenserier då koden blir väldigt lång. [9]

Exempel på Code 39:

(26)

Genomförande

24

3 Genomförande

3.1 Inledningsfas

3.1.1 Utvecklingsmiljö

Innan själva applikationsprogrammeringen kunde komma igång var man tvungen att reda ut vilken utvecklingsmiljö som skulle användas. Nedan kommer de avsnitt som förklarar vilken miljö som valts och varför det just är denna miljö som valts.

3.1.1.1 Val av programmeringsspråk

Som programmeringsspråk fanns några alternativ att välja mellan. Bland de som låg närmast till hands fanns C++, C# och Java. Eftersom vår utbildning innehållit programmeringskurser med nästan uteslutande C++ som språk, bestämdes ganska snart att Java inte skulle användas, då detta var ett helt nytt språk att sätta sig in i. Om Java skulle valts så skulle man dessutom behöva tänka på att man måste installera en ”Java Virtual Machine” (JVM) på handterminalen. Då det inte finns någon JVM optimerad för handterminalen från Gotive skulle man då behöva gå in och konfigurera om i en befintlig för att den skulle fungera optimalt efter de önskemål som fanns. Efter att Java tagits bort bland programmeringsspråksvalen så fördes diskussioner med företaget om vilket språk de rekommenderade oss att använda. I dessa beslutades det att C# skulle användas på klientsidan. Eftersom klientapplikationen består av ett grafiskt gränssnitt är C# ett bra val, då detta språk lämpar sig mycket väl för grafisk programmering. Även om det knappt lästs någon C# under utbildningen sågs inte detta som något stort problem. Då C# bygger på C++ är det relativt lätt att lära sig det ena om man kan det andra. Detta sågs istället som ett

ypperligt tillfälle att lära sig ytterligare ett programmeringsspråk som man kan komma att ha nytta av i arbetslivet.

När det kom till webbtjänsten som är byggd på ASP.NET teknik, fanns också ett par alternativ att välja mellan bl.a. C#.NET eller VB.NET. Även här

bestämdes det att programmeringen skulle ske i C#. Detta dels på grund av att under utbildningen inte har funnits någon undervisning i VB.NET. Dels för att en genomgående tråd genom projektet skulle finnas och då att det var enklast att hålla sig till samma programmeringsspråk.

(27)

Genomförande

25

3.1.1.2 Val av programutvecklingsmiljö

När det bestämts vilket programmeringsspråk som skulle användas var det dags att gå vidare och bestämma vilken IDE som skulle användas. Här var det inte lika svårt att komma fram till ett beslut. Under vår utbildning har det

uteslutande jobbats i Microsoft Visual Studio. Även på företaget används detta program inom programutveckling så då var det naturligt att detta verktyg skulle användas. Den version av programmet som använts för att utveckla

applikationen är ”Visual Studio 2005”. 3.1.1.3 Val av databas

System Andersson har länge använt sig av Pervasive PSQL. Eftersom vår handterminal ska vara en del av deras befintliga verkstadssystem var det klart från början att denna databas också kom att användas vid framtagningen av denna applikation.

3.1.2 Testmiljö

För att kunna arbeta med detta projekt krävdes en fungerande testmiljö. Under projektets framtagning förfogades det över två datorer och det bestämdes tidigt att sätta upp en miljö som skulle likna den miljö som applikationen skulle komma att fungera i.

En av datorerna sattes upp som en central server. På servern installerades databasservern Pervasive PSQL v8 och en webbserver. Webbservern behövdes för att köra serverdelen av applikationen som en webbtjänst. En enkel

konfiguration gjordes på webbservern för att kunna köra ASP.NET. Efter kontakt med företaget erhölls en exempeldatabas av deras existerande system. Därefter installerades Visual Studio.NET och det sågs till att det fanns en fungerande koppling mellan webbtjänsten och databasen. Från denna dator sköttes all programmering av serverdelen av applikationen.

Handterminalen kopplades via USB till den andra datorn. För kontakt mellan handterminalen och datorn användes synkroniseringsprogrammet ActiveSync, utvecklat av Microsoft. Sedan installerades Visual Studio.NET och det sågs till att programmet fick kontakt med handterminalen. Därefter gjordes ett enkelt program där det kontrollerades att man kunde ansluta till vår webbtjänst på servern. På denna dator sköttes all programmering av klienten.

Både handterminalen och servern kopplades till ett trådlöst nät. Här stöttes det på en del problem. Det användes en router som ofta kopplade ner de anslutna enheterna men efter en del konfigurering erhöll vi en acceptabel situation utan alltför mycket krångel.

(28)

Genomförande

26

3.2 Prestanda

En viktig punkt från företaget och således för oss, var prestanda. Därför valdes det att tidigt i programmeringsfasen reda ut vilka faktorer som kom att påverka prestandan till störst grad. Efter en del undersökande insågs det att den största flaskhalsen skulle vara dataöverföring från webbtjänsten.

För att testa kapaciteten av dataöverföringen lånades en större testdatabas från företaget och frågor skapades som hämtade så stor datamängd som möjligt. Därefter gjordes en funktion i klienten som körde dessa frågor. Vid

extremfallet tog det 25 sekunder att hämta all data men den datamängd som då hämtades är inte rimlig i praktiken. Efter lite diskussion med företaget kom man överens om att den maximala överföringstiden fick vara 15 sekunder. För att hålla nere svarstiderna görs de flesta större beräkningar i

serverapplikationen. Detta avlastar handterminalen vars beräkningskapacitet är mindre än serverns.

(29)

Genomförande

27

3.3 Driftsäkerhet

Denna punkt är förmodligen den viktigaste. Fungerar inte handterminalen spelar det ingen roll om man har topprestanda eller hög användarvänlighet. Varken kund eller slutanvändar kommer att kunna acceptera en sådan produkt. Enda gången det kan vara godtagbart att handterminalen försätts ur funktion är när hela det trådlösa nätverket slutar att fungera, av en eller annan orsak. När man jobbar med trådlösa nätverk måste man dock vara beredd på det kan uppstå kommunikationsproblem. Om man t.ex. jobbar i ett stort lager med bristfällig täckning är det svårt att undvika att handterminalen tappar signalen. Rent programmeringsmässigt löstes detta med att fånga upp så kallade

”Exceptions” eller undantag. När ett fel uppstår under programkörning ”kastas” ett Exception, i C# sker detta per automatik. Om man fångar upp ett sådant kan man få programmet att ”krascha kontrollerat”. I kodexemplet nedan visas ett exempel på hur man kan lösa det.

int tal = 100; try

{

//Inom try-blocket läggs all kod som kan krascha vid

programkörning

int kvot = tal / 0; }

catch (Exception excep) {

//Inom catch-blocket läggs all kod som ska hantera undantaget

MessageBox.Show(excep.ToString()); }

I exemplet försöker man dividera ett tal med noll varpå programmet kommer att kasta ett undantag. Här behandlas inte undantaget utan det skrivs bara ut i en textruta. När dessa undantag kastas i vårt program ser vi till att behandla dessa för att undvika att programmet låser sig. Vid t.ex. en kommunikationsstörning löste vi det genom att visa en ruta med texten ”försök igen”.

Med driftsäkerhet menas också kontroll av inmatade värden. Då

handterminalen ska agera ihop med det befintliga systemet och således dess databas krävs stor noggrannhet vid inmatning av värden för att förhindra en korrupt databas. Detta har vi, på de flesta ställen, löst med if-satser. Större delen av den data, inmatad av användaren, som ska modifiera databasen består av siffror vilket gör att inmatningskontrollen kan göras på ett enklare sätt i jämförelse med kontroll av text.

(30)

Genomförande

28

3.4 Användarvänlighet

Användarvänlighet är den av företagets viktiga punkter som det lagts ner mest tid på. Anledningen till att det lagts ner så mycket tid på denna del av projektet är att det inte ställs krav på datorvana hos den personal som skall arbeta med handterminalen. För att möta det ökade kravet på designen som detta ger har vi som programmerare försökt tänka igenom allt väldigt noga. Struktureringen av applikationen är gjord så att det skall finnas en genomgående tråd genom alla funktioner i hela projektet. Ett exempel på röd tråd är att oavsett vilken funktion man är inne på, så ska t.ex. knappen för sifferinmatning sitta på samma ställe och se likadan ut. Följande grupperingar av knapparna har gjorts:

• Inmatningsknappar • Datagridknappar • Listningsknapparna • Ok-/Exit- knapp

Inmatningsknapparna är de knappar där man vid knapptryckning kommer till siffertangentbordet eller till det alfanumeriska tangentbordet. Exempel på när det numeriska tangentbordet kommer att användas är om man vill ändra antal i ett lageruttag. Det alfanumeriska tangentbordet kommer bland annat att

användas till sökningar vid materiallistningar. Vi kommer längre ner i detta kapitel att ta upp mer om dessa två tangentbord.

Datagridknapparna sitter i direkt anslutning till datagriden och används när man vill bläddra upp och ner genom datagriden. Vid en tryckning på nedåtpil markeras helt enkelt raden under den aktuella. På samma sätt funkar

uppåtpilen, fast den markerar raden ovanför den aktuella.

Listningsknapparna används för att komma till vyer med olika register. Beroende på inom vilken funktion i applikationen knappen trycks, listas rätt register.

Exit-knappen används för att backa ett steg bakåt i programmet. Ok knappen bekräftar de val man gör i de olika vyerna. Ett exempel på detta är att vid ett lageruttag trycker man OK när man valt rätt antal att plocka ut. Det är vid tryckning på OK-knappen som uttaget registreras i databasen.

Något som är lika viktigt som att knapparna är konsekventa i sin funktion är även dennes placering i displayfönstret. Här har det förts diskussioner med företaget om vart olika knappar ska placeras så att programmet blir så lättförståeligt som möjligt.

(31)

Genomförande

29

3.5 Design och Funktion

Nedan följer en redogörelse för hur klient- och serverapplikationerna är uppbyggda.

3.5.1 Uppbyggnad

Klientapplikationen är uppbyggt av ett antal windows forms. Uppbyggnaden är av hierarkisk struktur.

Programmet är tänkt att köras i helskärmsläge och därför skapades alla forms med en storlek av 640x240 pixlar.

Serverdelen tas upp väldigt grundläggande då denna inkluderas i företagets sekretess.

Serverdelen består av en klass som heter DataExchange. Dess främsta funktion är att tillhandahålla en tjänst för kommunikation med databas. De flesta stora beräkningar görs också på serverdelen.

3.5.2 Knappklass

Som del av vårt jobb mot en hög användarvänlighet var ett krav att kunna designa egna knappar och därför köptes en ny knappklass in från

www.pocketpccontrols.com. Denna klass möjliggjorde att man kan lägga in egna bilder på knapparna och på så sätt skapa den design som önskas. Denna klass används för samtliga knappar i klientapplikationen. Till många av knapparna används två bilder, en för ej intryckt knapp och en för när knappen är intryckt. Nedan visas typisk knappdesign:

Figur 5 Upp- och nerpil

Figur 6 Backspace

(32)

Genomförande

30

3.5.3 Streckkodsläsare

Företaget har idag ett system för märkning av både material, operationer och tillverkningsorders. Operationer och tillverkningsordernummer har streckkoder av typen Interleaved 2 of 5 och materialet har streckkoder av typen Code 39. Dessa båda typer stöds av handterminalen från Gotive. För att underlätta arbetet för personalen som arbetar med terminalen har det implementerats en global funktion i klientapplikationen för läsning av streckkoder.

Streckkodsläsning kan användas inom både uttag och inköp. Exempel på en funktion är att när man listar alla tillverkningsorders och vill hitta en specifik order som man har en streckkod på, ska man kunna scanna av streckkoden och programmet letar automatiskt upp rätt arbetsorder och markerar den aktuella raden i listan. Ett ytterligare exempel är att om man vill göra ett fritt inköp och har hela artikelregistret listat i rutan är det lättare att man läser in streckkoden som det specifika materialet har än att stega neråt i listan.

För att aktivera streckkodsläsaren trycker man på en av de tre snabbknappar som finns på handterminalen. Här dök det första problemet upp. Till en början fick vi inte programmet att reagera på en knapptryckning. Men efter en del efterforskande så lyckades en lösning hittas. Problemet löstes genom att konfigurera handterminalen så att den simulerade en viss knapptryckning vid en tryckning på en av snabbknapparna. När detta var löst skulle en funktionen för själva streckkodsläsningen implementeras. Denna del krävde också noga studerande av dokumentationen. Det som var svårt var att lista ut vilka parametrar man var tvungen att sätta för att det skulle rama in alla tänkbara streckkodslängder som kan förekomma i systemet. Nedan följer koden till funktionen vi implementerade:

(33)

Genomförande

31 public string readBCR()

{

//Öppnar porten för streckkodsläsaren (BCR)

BCR.Open();

//Skapar ett objekt av typen BCR.DATA, kommer innehålla det inscannade värdet

BCR._BCRDATA d = new BCR._BCRDATA();

//Skapar ett parameterobjekt innehållande de parametrar man väljer att sätta

BCR._BCRPARAMETERS par = new BCR._BCRPARAMETERS(); //Möjliggör streckkodsläsning

par.beep_code = 1;

//Denna parameter möjliggör läsning av Interleaved 2 of 5

par.i2of5 = 1;

//Dessa 2 parametrar bestämmer streckkodens tillåtna längder

par.len_i2of5_l1 = 0; par.len_i2of5_l2 = 0;

//Denna parameter möjliggör läsning av Code 39

par.code39 = 1;

//Dessa 2 parametrar bestämmer streckkodens tillåtna längder

par.len_code39_l1 = 2; par.len_code39_l2 = 55;

//Sätter de paramterar man bestämt

BCR.SetParameters(par);

//Om scanning lyckas, skickas resultatet tillbaka. I annat fall returneras -1

if (BCR.GetData(ref d, 5000)) { BCR.Close(); return d.code; } else { BCR.Close(); string n = "-1"; return n; } }

(34)

Genomförande

32

3.5.4 Alfanumeriskt tangentbord

Figur 8 Alfanumeriskt tangentbord

För att underlätta att hitta rätt produkt vid olika materiallistningar och dylikt lade vi in en sökfunktion där man både kan söka på artikelnummer och

benämning. Då det inbyggda tangentbordet i Windows CE ansågs vara alldeles för litet för att användas med fingertryckning såg vi oss tvungna att skapa ett eget. Det byggdes upp som en form med knappar som motsvarar varje tangent. En inmatningsruta lades längst upp i bild där man ser det man matat in. När man trycker på OK-knappen returneras en sträng med det man matat in. Kodexempel för att visa hur A-tangenten är programmerad:

private void btnA_Click(object sender, EventArgs e) { if (txtInput.Text.Length <= 20) { txtInput.Text += "A"; } }

Benämningsfältet visar inte fler än 20 tecken, därför lades en if-sats in som kollar att man inte matat in längre än 20 tecken i strängen.

(35)

Genomförande

33

3.5.5 Numeriskt tangentbord

Figur 9 Numeriskt tangentbord

För att underlätta inmatning av siffror valde vi att skapa en ny form med detta som syfte då det alfanumeriska tangentbordet kändes överflödigt. I denna form gjordes knapparna större för att vara lättare att trycka på med fingrarna.

Detta tangentbord används när endast siffror ska matas in, t.ex. vid sökning av ordernummer eller när ett antal ska matas in vid uttag. Vid tryck på OK returneras ett heltal med det värde som står i textrutan.

(36)

Resultat

34

4 Resultat

Resultatet av detta examensarbete är en väl fungerande applikation.

Applikationen innehåller fungerande funktioner för såväl uttag som inköp. Nedan finns en detaljbeskrivning av uttagsdelen samt en grundläggande förklaring av inköpsdelen.

4.1 Design och layout

4.1.1 Anställningsvy

Figur 10 Anställningsvy

När man startar applikationen visas anställningsvyn. Här listas de användare som har behörighet till handterminalen. De användare som ska ha tillgång till handterminalen har en speciell flagga satt i databasen som talar om att de ska listas. Vid listningen loopar vi igenom dessa användare och skapar dynamiskt nya knappar med deras namn. Här skapas också en händelse för vad som ska hända när man klickar på en knapp. Nedan följer ett kodexempel som visar hur det ser ut i praktiken.

//Hämta behöriga användare från webbtjänsten

DataSet dsPerson = de.GetEmployees();

int count = 0;

//Sätter startpositionen.

int yloc = 61; int xloc = 26;

string[] nicks = new string[50];

//För varje användare som hämtats körs koden nedan.

foreach (DataRow pRow in dsPerson.Tables[0].Rows) {

ColorButton btnanst = new ColorButton(); btnanst.Text = pRow["NickName"].ToString(); btnanst.Location = new Point(xloc, yloc); btnanst.Height = 60;

btnanst.Width = 160;

btnanst.Click += new System.EventHandler(this.btn_Click); this.Controls.Add(btnanst);

(37)

Resultat

35 xloc += 185;

count++;

//När 3 nya knappar skapats byter man rad

if (count % 3 == 0) { count = 0; yloc += 86; xloc = 26; } }

private void btn_Click(object sender, EventArgs e) {

ChooseFunc cf = new ChooseFunc(); //Visar funktionsvy

cf.Show(); }

När användaren sedan klickar på knappen med sitt namn visas funktionsmenyn.

4.1.2 Funktionsmeny

Figur 11 Funktionsmeny

I funktionsmenyn listas de funktioner som ska ingå i handterminalen: uttag, inköp, inleverans samt inventering. Dessa funktionsval visas i form av knappar med olika färger. Färgerna motsvarar en viss funktion, knappen för uttag är t.ex. röd. Trycker man på det vita krysset kommer man tillbaks till

anställningsvyn. Alla funktioner listas även om detta examensarbete endast omfattar design och implementering av uttag och inköp.

(38)

Resultat

36

4.1.3 Uttagsmeny

Figur 12 Uttagsmeny

I denna meny listas de olika alternativ av uttag som användaren kan göra. Med tanke på företagets sekretess kommer vi inte gå in på databasens uppbyggnad utan förklarar bara applikationens funktion.

4.1.3.1 Uttag TO

Figur 13 Uttag TO

I denna vy listas alla aktiva tillverkningsorders (TO). Här skapades en knapp (T) för sökning av TO som visade det numeriska tangentbordet. Dessutom kan man genom att använda streckkodsläsaren hitta rätt TO direkt. Övriga knappar är upp- och nerpil för att underlätta bläddrande när man använder fingrarna för att navigera. När man valt sin TO trycker man OK för att gå vidare till vyn för planerade artiklar på aktuell tillverkningsorder.

(39)

Resultat

37

4.1.3.2 UtgPlanTO

Figur 14 UtgPlanTO

Här listas planerade artiklar på aktuell TO. Artikelnummerfältet skall här kunna växla mellan nummer och benämning och sorteras i nummerordning respektive bokstavsordning. Vill man ändra antal markerar man önskad artikel, sedan trycker man på ändra antal och kommer då till den numeriska knappsatsen. Vill man lägga till en ej planerad artikel trycker man på ”Art” för att komma till artikelregistret. Vid tryck på OK registreras ett uttag på den artikel man markerat. De artiklar som redan är uttagna kan nås genom att trycka på ”Uttaget” .

4.1.3.3 UtgEjPlanTO

Figur 15 UtgEjPlanTO

I denna vy listas samtliga artiklar som finns i artikelregistret. Här väljer man önskad artikel och trycker ”OK”, då läggs markerad artikel till i föregående form, UtgPlanTO. När man sedan är klar trycker man på ”krysset” för att återgå till UtgPlanTO.

(40)

Resultat

38

4.1.3.4 UtgTOUttaget

Figur 16 UtgTOUttaget

När man i UtgPlanTO trycker på ”uttaget” visas denna vy. Här visas de artiklar som redan är uttagna på aktuell TO. Om man av någon anledning vill hämta ut några fler av en speciell artikel använder man denna vy. Markera önskad artikel, tryck ”Antal” för att ändra antal och tryck slutligen på ”OK” för att genomföra uttaget.

4.1.3.5 Fritt Uttag

Figur 17 Fritt Uttag

Denna vy används för att hämta ut artiklar utan koppling till någon

tillverkningsorder. Om man t.ex. saknar en skiftnyckel kan denna hämtas ut via ”Fritt Uttag”. Från början är artikellistan helt tom. För att lägga till artiklar trycker man på ”A” för att nå artikelregistret och kan där välja de artiklar man önskar. När man valt sina artiklar och tryckt OK i artikelregistret listas de sedan i Fritt Uttag. För att bekräfta ett uttag väljer man ett antal och trycker på ”OK” varpå artikeln försvinner.

(41)

Resultat

39

4.1.4 Inköpsmeny

Figur 18 Inköpsmeny

I projektet ingår även att implementera funktionen för inköp. Men på grund av företagets sekretess väljer vi att inte gå in på lika djup nivå i inköp som vi gör i uttag. Utan vi väljer att här bara ta upp de generella funktioner som finns inom inköpsfunktionen.

Generellt kan man säga att huvudfunktionen för inköp är att boka olika material och verktyg för inköp. När man från funktionsmenyn valt inköp får man två alternativ att välja på. Om man vill göra inköp beroende på tillverkningsorder eller om man vill göra ett inköp som inte beror på en tillverkningsorder. Väljer man att göra ett inköp beroende på tillverkningsorder kommer man till en ny vy som i stort liknar funktionen för tillverkningsorderbundet uttag (utgTO). Väljer man att göra ett oberoende inköp så kommer man till en vy med liknande funktioner som finns i Fritt uttag.

(42)

Resultat

40

4.2 Frågeställningar och mål

Vår första frågeställning handlade om prestanda och hur låga svarstider skulle kunna uppnås. Till stor del löstes detta genom att utföra stora beräkningar på serverdelen. En annan del av lösningen ligger i att man vid överföring av stora datamängder hämtar data i flera omgångar.

Vår andra frågeställning berörde hur man behandlar kommunikationsproblem mellan server och klient. Detta löstes genom att fånga upp ett så kallat

undantag när klienten tappar kontakten med servern. Om klienten vid till exempel hämtning av data till en tabell tappar kontakten med servern visas en knapp med texten ”Försök igen”. Vid tryckning på denna knapp försöker kontakt återetableras och frågan skickas om. Om kontakt återfås döljs knappen och hämtad data visas.

Den sista frågeställningen handlade om användarvänlighet. För att åstadkomma en god användarvänlighet har vi försökt hålla en röd tråd genom hela projektet. Den röda tråden fås genom att vi har varit konsekventa med att ha samma design och placering på knapparna projektet igenom.

(43)

Slutsats och diskussion

41

5 Slutsats och diskussion

I avseende på de mål som sattes upp i början av projektet anser vi att vår applikation svarar upp väldigt bra gentemot dessa. Vi har implementerat de funktioner som vi avgränsade oss till. Vi är glada för att vi avgränsade oss till att inte implementera funktionerna för inleverans och inventering. Till en början verkade inte projektet bli så stort men vi insåg snart att de delar vi valt tog längre tid än vi först trott.

Anledningen till att det tog så lång tid berodde främst på den tid det tog för oss att sätta oss in i företagets befintliga databasstruktur. För att lösa detta hölls med jämna mellanrum möten med företaget där vi fick genomgångar av delar i systemet. En annan sak till tidsåtgången var att vi programmerade i ett, för oss, relativt nytt programmeringsspråk. Efter hand försvann detta problem. Ju mer vi programmerade desto mer lärde vi oss att lösa problemen på ett smidigt och strukturerat sätt.

Då vi hade att göra med handterminaler som har en begränsad skärmyta låg mycket av utmaningen i att skapa lättförståeliga program som ska innehålla mycket information men som samtidigt inte får vara röriga. Med hjälp av företaget tycker vi att vi kommit fram till ett bra användargränssnitt.

Angående fortsatt utveckling för den här produkten ser vi stor potential för att den ska bli framgångsrik på marknaden. Produkten är i det här läget en början till en konkurrenskraftig produkt inom verkstadsindustrin. Vi hoppas att företaget kommer att ha nytta av den grund som vi har lagt.

Vi tycker att det har varit ett jätteintressant och spännande projekt att jobba med. Vi har fått en bra inblick i hur ett systemutvecklingsprojekt sköts utanför skolans väggar. Det har varit intressant att se hur den teori vi läst i skolan, om ingenjörsmässigt arbete fungerar i praktiken. Vi kommer att ha stor nytta av de erfarenheter vi lärt oss under projektet.

(44)

Referenser

42

6 Referenser

[1] Formation of the secret Green Team

http://webcast-east.sun.com/ramgen/archives/GSN-2100/GSN-2100_01_225.rm (acc. 2007-04-17)

[2] Life and Times of Anders Hejlsberg

http://download.microsoft.com/download/7/d/3/7d3de91e-0a61-4c31-bcc4-628bc81c635a/Behind_The_Code_2_512k.wmv (acc. 2007-04-17) [3] C# Language Specifikation http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf (acc 2007-04-18)

[4] Free On-Line Dictionary of Computing ,

http://foldoc.org/index.cgi?query=middleware (acc. 2007-05-17) [5] En skonsam introduktion – XML , Lars Celander

http://www.azelia.se/xml.pdf (acc. 2007-05-17) [6] Data Provider for .NET Guide

http://www.pervasive.com/library/docs/psql/950/adonet/index.html

(acc. 2007-05-17) [7] Gotive H42 – Datasheet

http://www.gotive.com/products/H42-datasheet-large.htm (acc. 2007-05-16)

[8] H41/H42 Software Development Kit for .NET

http://www.gotive.com/support/Software/3_Sdk/h4x_sdk_dotnet_2 _0_8.zip (acc. 2007-03-28)

[9] Streckkod System AB

(45)

Sökord 43

7 Sökord

.NET Compact Framework ... 15  .NET Framework ... 15  Användarvänlighet ... 7, 9, 28  ASP.NET ... 15  C# 14  Driftsäkerhet ... 7, 9, 27  Handterminal ... 19  Java ... 12  Objektorienterad programmering ... 11  Pervasive PSQL ... 18  Prestanda ... 7, 9, 26  SDK ... 20  Streckkoder ... 22  V,W  Windows CE ... 15  Visual Studio.NET ... 15  XML ... 16 

Figure

Figur 1 Kompileringsförlopp, Java
Figur 2 Gotive H42
Figur 8 Alfanumeriskt tangentbord
Figur 9 Numeriskt tangentbord
+7

References

Related documents

Under rubrik 5.1 diskuteras hur eleverna använder uppgiftsinstruktionerna och källtexterna när de skriver sina egna texter och under rubrik 5.2 diskuteras hur

Gisela menar att personalen måste börja bli mer stolta med arbetet i äldreomsorgen, hon säger att det inte är många som säger min dotter ska läsa till undersköterska för det

Detta problem kan styckas upp i två delar, nämligen dels att kunna bestämma kostnaderna för kärnkraftens restprodukter och den avgift som behöver tas ut för att täcka

Projekt Mälarbanan kommer att bygga ut järnvägen mellan Tomteboda och Kallhäll från två till fyra spår.. Projektet har delats in

Rosario Ali Taikon, från tidningen É Romani Glinda, påpekade att språk kan vara ett problem, att romer lär sig romanes men inte majoritetsspråket.. – Vi kommer

Subject D, for example, spends most of the time (54%) reading with both index fingers in parallel, 24% reading with the left index finger only, and 11% with the right

Förekomsten av mycket hygroskopiska föreningar i aerosoler kan påskynda processen för bildandet molndroppar, medan närvaron av mindre hygroskopiska ämnen kan förlänga den tid som

Användaren har möjlighet att sätta ihop en favoritsökning genom att plocka bort visa träffar från en sökning och sedan kombinera dessa med några träffar från andra