• No results found

Utveckling av programvara till USB I/O

N/A
N/A
Protected

Academic year: 2021

Share "Utveckling av programvara till USB I/O"

Copied!
100
0
0

Loading.... (view fulltext now)

Full text

(1)

Akademin för innovation, design och teknik

EXAMENSARBETE I

DATAVETENSKAP

30 HP, AVANCERAD NIVÅ

Utveckling av programvara till

USB I/O

Författare: Christian Selander, Daryan Yassin Företag: Motion Control i Västerås AB Handledare, företag: Johan Karlsson

Handledare, högskola: Christer Gerdtman Examinator: Mats Björkman

Datum: 2010-06-10

(2)

Sammanfattning

I detta examensarbete skapades en programvara till företaget Motion Controls USB I/O-enhet, en datainsamlingsenhet för operativsystemet Mac OS X.

I arbetet gjordes flera undersökningar för att få en uppfattning av de program som fanns tillgängliga. Bra egenskaper hos dessa program lyftes fram och låg till grund för en

kravspecifikation till det egna programmet. Lämpliga programmeringsspråk och bibliotek för användargränssnittet valdes ut och en undersökning gjordes för att ta reda på hur

kommunikation kunde ske med enheten i Mac OS X.

En tidig utformning av programmet togs fram som skulle uppfylla de tidigare ställda kraven. Efter att nödvändig information inhämtats implementerades och testades programmet. Testerna utgick efter de krav som ställdes på programvaran. Det visade sig att endast ett fåtal krav inte var uppfyllda.

Projektet har givit många nya erfarenheter. Den tid som lades på den inledande designen av programmet skulle ha varit längre. Det hade lett till en snabbare och mer problemfri

implementering av programmet och även ett program som var lättare att underhålla. Under den inledande planeringen fanns även idén att använda plattformsoberoende bibliotek, vilket ledde till att programmet nu även fungerar i Linux och Windows.

Abstract

In this thesis a software was created for Motion Control’s USB I/O, a data acquisition device for the Mac OS X operating system.

Several studies were made to get an overview of the software available on the market. Good features of these programs were highlighted, and formed the basis of a set of requirements for this program. Suitable programming languages and libraries for the user interface were selected and a study was done to find out how communication could be done with the device in Mac OS X.

An early design of the program was developed that would meet the previously stipulated requirements. After the necessary information was gathered, the program was implemented and tested. The tests were used to verify that the software met the requirements. It turned out that only a few requirements were not met.

The project has provided many new experiences. The amount of time spent on the initial design of the software should have been longer. It would have led to a faster and more

seamless implementation of the program and also a program that would be easier to maintain. During the initial planning, the idea was to use a cross-platform library, which resulted in a program that now also works in Linux and Windows.

(3)

Förord

Ett stort tack riktas till Christer Gerdtman som gav oss möjligheten att genomföra detta examensarbete på Motion Control.

Vidare riktas ett stort tack till vår handledare Johan Karlsson som har väglett oss genom detta projekt och även Marcus Tönnäng, som har bidragit med information om hårdvaran och givit oss många bra idéer och synpunkter under projektets gång.

(4)

Innehållsförteckning

1. INLEDNING... 1

1.1. BAKGRUND... 1

1.2. SYFTE... 1

1.3. FÖRUTSÄTTNINGAR OCH AVGRÄNSNINGAR... 2

1.4. DEFINITIONER... 3

2. USB I/O – EN DATAINSAMLINGSENHET FÖR DATORN ... 4

2.1. HÅRDVARANS EGENSKAPER... 4

3. METOD... 5

4. UNDERSÖKNINGAR ... 6

4.1. UNDERSÖKNING AV PROGRAMVAROR... 6

4.2. FÖRDJUPAD UNDERSÖKNING AV PROGRAMVAROR... 9

4.3. FÖRDJUPAD UNDERSÖKNING AV PROGRAMVARORNAS FUNKTIONER... 13

4.4. UNDERSÖKNING AV USB-KOMMUNIKATION I MAC OSX ... 17

4.5. UNDERSÖKNING AV MOTION CONTROLS PROGRAMVARA... 22

4.6. UNDERSÖKNING AV BIBLIOTEK FÖR ANVÄNDARGRÄNSSNITT... 26

4.7. UTREDNING AV MJUKVARUFUNKTIONER... 30 5. KRAVSPECIFIKATION ... 36 5.1. FUNKTIONSKRAV... 36 5.2. GRÄNSYTEKRAV... 37 5.3. KAPACITETSKRAV... 37 5.4. KONSTRUKTIONSKRAV... 38 5.5. DRIFTKRAV... 38 5.6. SÄKERHETSKRAV... 38 5.7. DOKUMENTATIONSKRAV... 39 6. DESIGNSPECIFIKATION... 40 6.1. VAL AV UTVECKLINGSMILJÖ... 40

6.2. VAL AV BIBLIOTEK OCH PROGRAMMERINGSSPRÅK... 40

6.3. ÖVERGRIPANDE KODSTRUKTUR... 41 6.4. FILFORMAT... 45 6.5. ANVÄNDARGRÄNSSNITT... 47 6.6. INSTÄLLNINGAR... 51 7. KONSTRUKTIONSBESKRIVNING ... 52 7.1. SYSTEMÖVERSIKT... 52 7.2. PROGRAMKOD... 53 7.3. ANVÄNDARGRÄNSSNITT... 62 8. RESULTAT ... 77 9. SLUTSATSER... 79 10. FRAMTIDA FÖRBÄTTRINGAR ... 80

11. LÄRDOMAR OCH ERFARENHETER... 81

12. ANVÄNDA PROGRAM I PROJEKTET ... 82

13. REFERENSER... 83

14. BILAGOR... 91

BILAGA 1–URSPRUNGLIGT KLASSDIAGRAM... 91

BILAGA 2–SLUTGILTIGT KLASSDIAGRAM... 93

(5)

Figurförteckning

FIGUR 1:OLIKA VARIANTER AV USBI/O. ... 4

FIGUR 2:USBI/OLISTING. ... 23

FIGUR 3:USBI/OTESTPROGRAM. ... 24

FIGUR 4:VAL AV PRIORITET FRÅN TID/PRIORITETSTABELLEN. ... 35

FIGUR 5:ÖVERSIKTLIG VY ÖVER ANVÄNDARGRÄNSSNITTETS KONSTRUKTION. ... 41

FIGUR 6:FLIKEN STATUS. ... 47

FIGUR 7:FLIKEN ANALOG MÄTNING. ... 48

FIGUR 8:FLIKEN DIGITAL MÄTNING... 49

FIGUR 9:FLIKEN ANPASSADE MÄTNINGAR. ... 50

FIGUR 10:ÖVERSIKTLIG BILD AV SYSTEMET. ... 52

FIGUR 11:MODEL VIEW CONTROLLER (MVC). ... 53

FIGUR 12:ENKEL MODELL AV PROGRAMMETS HUVUDFÖNSTER. ... 55

FIGUR 13:BIBLIOTEK FÖR USBI/O... 55

FIGUR 14:MODELL AV ENHETSHANTERAREN. ... 56

FIGUR 15:MODELL AV DATALOGGERN... 57

FIGUR 16:LOGGFILENS HEADER. ... 58

FIGUR 17:LAGRING AV KANALINFORMATION... 58

FIGUR 18:LAGRING AV MÄTDATA. ... 58

FIGUR 19:PROGRAMMETS INSTÄLLNINGAR... 62

FIGUR 20:KLASSER SOM ANVÄNDS AV HUVUDFÖNSTRET. ... 62

FIGUR 21:PROGRAMMETS STATUSVY MED TVÅ ENHETER ANSLUTNA. ... 63

FIGUR 22:OBJEKT SOM ANVÄNDS AV STATUSVYN. ... 64

FIGUR 23:DIALOGRUTOR FÖR ENHETSKONFIGURATION. ... 64

FIGUR 24:LÄSNING AV KONFIGURATION (TILL VÄNSTER) OCH SKRIVNING (TILL HÖGER). ... 65

FIGUR 25:OBJEKT SOM ANVÄNDS I DEN ANALOGA VYN. ... 66

FIGUR 26:VYN FÖR ANALOGA MÄTNINGAR... 66

FIGUR 27:EGENSKAPER FÖR EN KANAL... 67

FIGUR 28:ALTERNATIV INFÖR EN NY MÄTNING... 68

FIGUR 29:VAL AV ANALOG INGÅNG (TILL VÄNSTER) OCH JUSTERING AV KONFIGURATION (TILL HÖGER). ... 68

FIGUR 30:MARKERAT OMRÅDE (TILL VÄNSTER) OCH FÖRSTORAT OMRÅDE (TILL HÖGER)... 70

FIGUR 31:OBJEKT SOM ANVÄNDS I DEN DIGITALA VYN... 71

FIGUR 32:VYN FÖR DIGITALA MÄTNINGAR. ... 72

FIGUR 33:EGENSKAPER FÖR EN KANAL... 72

FIGUR 34:ALTERNATIV INFÖR EN NY MÄTNING... 73

FIGUR 35:ANPASSAD VY. ... 74

(6)

Tabellförteckning

TABELL 1:SAMMANSTÄLLNING AV DE UNDERSÖKTA PROGRAMVARORNA... 8

TABELL 2:RESULTATSAMMANSTÄLLNING – FÖRDJUPAD UNDERSÖKNING AV PROGRAMVAROR. ... 11

TABELL 3:TID/PRIORITETSTABELL. ... 14

TABELL 4:RESULTATSAMMANSTÄLLNING – BIBLIOTEK FÖR ANVÄNDARGRÄNSSNITT. ... 28

(7)

1.

Inledning

Detta examensarbete består i att utveckla en programvara för Motion Controls USB I/O-enhet för operativsystemet Mac OS X via USB-bussen. USB I/O är en datainsamlings- och

kontrollenhet för att kunna mäta och styra externa elektriska enheter med hjälp av en dator. Arbetet utfördes på företaget Motion Control AB i Västerås och omfattar 30 högskolepoäng på avancerad nivå.

1.1. Bakgrund

Redan under mitten av 1990-talet sålde Motion Control produkten ADB I/O för Macintosh- användare. ADB I/O var en styr- och mätenhet som anslöts till ADB-porten på datorn. Då ADB-standarden (Apple Desktop Bus) försvann under slutet av 1990-talet lades tillverkningen av ADB I/O ner och ADB-standarden ersattes av USB (Universal Serial Bus).

År 2003 tog Motion Control ett beslut att utveckla en produkt för USB-bussen och en

prototyp togs fram. Denna produkt gick under namnet USB I/O. Under senare år har USB I/O vidareutvecklats och idag finns flertalet liknande produkter på marknaden från olika

tillverkare både med och utan programvara. Detta kan läsas vidare i undersökningsdelen i detta examensarbete. Majoriteten av dessa I/O-enheter har programvaror och drivrutiner som är riktade till Windows-användare och ett fåtal för Mac-användare. Motions Controls USB I/O-enhet levereras som många andra företags I/O-enheter med drivrutiner för Windows och även Linux. Dock saknas färdig programvara för operativsystemet Mac OS X. Detta

examensarbete har därför som uppgift att utveckla en programvara för Mac OS X.

1.2. Syfte

Detta projekt har till uppgift att ta fram programvara som är speciellt anpassad för Motion Controls USB I/O-enhet. Denna programvara skall fungera i operativsystemet Mac OS X, men stöd för Windows och Linux är också önskvärt. Genom att utveckla programvaran för Mac OS X skapas ett försprång gentemot andra konkurrenter på marknaden eftersom det finns få enheter som har en färdig programvara för detta operativsystem.

Arbetsuppgiften består av följande delar:

1. Undersökning av programvaror till liknande enheter. 2. Framtagning av extern programvara.

Uppgiften går ut på att undersöka vilka funktioner liknande befintliga lösningar har idag, samt vilka funktioner som är efterfrågade. Därefter ska programvaran utvecklas och kompletteras så att den klarar av de saknade funktionerna. Sedan ska framtagning av extern programvara göras, det vill säga framtagning av datorprogram som kan köras på en dator.

Andra målsättningar är att få programvaran användarvänlig på ett sådant sätt att även personer med icke teknik bakgrund skall kunna hantera programvaran utan större svårigheter.

(8)

1.3. Förutsättningar och avgränsningar

För att arbetet inte ska bli för omfattade har följande begränsningar införts:

• Examensarbetet omfattar endast programvarutveckling och innefattar inte utveckling eller förbättring av hårdvaran.

• Programvaran skall utvecklas för Motion Controls USB I/O-enhet för operativsystemet Mac OS X version 10 eller senare.

• Endast utvärderingsversioner av de undersökta programmen har använts i undersökningarna, vilket har lett till att alla programmens funktioner inte har granskats. I de fall en sådan version inte har funnits tillgänglig så har manualen granskats istället.

(9)

1.4. Definitioner

Förkortning Förklarande text

ADB Apple Desktop Bus – Förlegad standard för seriell kommunikation.

AD-omvandling

Omvandling av analog signal till digital. Kan till exempel låta en I/O-enhet läsa av och konvertera en spänningsnivå till ett värde.

API Application Programming Interface – Definierar ett gränssnitt, eller

enkelt en samling funktioner för kommunikation med exempelvis kärnan i operativsystemet eller en I/O-enhet.

Bibliotek Inom mjukvara: En samling av funktioner som används i ett visst syfte, till exempel för att skapa ett användargränssnitt eller kommunicera med ett operativsystem. De är ofta vanligt förekommande funktioner som kan vara av värde att återanvända i flera program.

Bit Binary Digit – Binär siffra som representeras med siffrorna 0 och 1.

BNF Backus-Naur Form – Ett sätt att beskriva en formell grammatik för ett

givet sammanhangsfritt språk.

BSD Berkeley Software Distribution – Licens för programvara som innebär

att det är tillåtet att kopiera och sälja programvaran i ändrad eller oförändrad form. Inga garantier ges för programvarans funktion. CSV Comma Separated Value – Filformat som kan användas vid utbyte av

data mellan olika program.

DA-omvandling

Omvandlar en digital signal till en analog. Kan till exempel låta en I/O-enhet styra en spänning på en utgång efter ett visst värde.

GPL GNU General Public License – Licens för programvara. Ändrade

program får distribueras vidare endast om de inkluderar källkoden och distribueras under samma licens.

HID Human Interface Device – En standard för en typ av enheter som

kommunicerar med användaren via USB.

I/O-enhet Extern hårdvaruenhet som gör mätningar av insignaler, hanterar

kommunikation med värddator och externa enheter, ger vissa utsignaler på kommando från, eller oberoende av värddatorn.

Kärna, kernel Central del i ett operativsystem som hanterar datorns resurser, som till exempel processortid, minne, portar och andra hårdvaruenheter. LED Light Emitting Diode – Engelsk förkortning för lysdiod.

LGPL GNU Lesser General Public License – Licens för programvara. Som

GPL, men program som använder ett LGPL-bibliotek kan distribueras utan källkod.

OS Operativsystem, närmare bestämt det som körs på värddatorn.

Parser Analyserar och delar upp text skriven i ett formellt språk i enheter som kan hanteras av programmet.

PNG Portable Network Graphic – Filformat för att lagring av bilder.

PWM Pulse Width Modulation – Pulsviddsmodulering. Ett sätt att styra en

digital signal genom att ange dess frekvens och arbetscykel (dutycycle). RFC Request For Comments – Ett dokument som beskriver en föreslagen

standard som författaren önskar få kommentarer på.

Script, makro Programkod som används för att automatisera olika uppgifter i ett program.

USB Universal Serial Bus – Seriell buss för kommunikation med enheter.

XML eXtensible Markup Language – Generellt språk för lagring av data i

(10)

2.

USB I/O – En datainsamlingsenhet för datorn

USB I/O är en datainsamlingsenhet som består av analoga och digitala in- och utgångar för USB-bussen. Med hjälp av USB I/O kan man kontrollera externa enheter och även styra dem. Detta sker genom att ansluta USB I/O till USB-bussen på datorn med hjälp av en USB-kabel. USB I/O finns i flera olika varianter:

Figur 1: Olika varianter av USB I/O.

2.1. Hårdvarans egenskaper

Nedan beskrivs de egenskaper för hårdvaran.

Digitala in- och utgångar

Digitala ingångar kan användas till att läsa av sensorer och knappar.

Digitala utgångar kan användas till att generera styrsignaler eller tända lysdioder.

Analoga ingångar

De analoga ingångarna har ett spänningsområde på 0–5V och en upplösning på 10-bitar. Antalet analoga ingångar kan varieras från 0 till 8 stycken.

Analog utgång

De analoga utgångarna kan användas för att generera en variabel utspänning till ett drivsteg eller regulator.

PWM utgång

PWM funktionen kan användas till att styra drivsteg till DC-motorer och lampor.

Pulsräknare och frekvensmätning

Pulsräknaren kan användas till att räkna pulser från en pulsgivare.

Frekevensmätare är en funktion för att mäta frekvensen på en digital insignal.

UART (Universal Asynchronous Receiver Transmitter)

UART är en standardiserad buss för seriell kommunikation som används för kommunikation med enheter som stödjer UART som till exempel radiokretsar.

(11)

3.

Metod

Arbetsgången i examensarbetet har inletts med en marknadsundersökning för att se hur marknaden ser ut vad gäller programvaror till I/O-enheter. Detta för att få underlag för vilka funktioner som används och anpassa programvaran så att de mest använda funktionerna finns med i utvecklingen av programvara till USB I/O. Ytterligare undersökningar på olika

programvarors funktioner har även gjorts för att kunna användas som grund till utvecklingen av programvara till Motion Controls USB I/O.

Därefter undersöktes hur kommunikation med en HID-enhet sker via USB-bussen i Mac OS X och vilket programmeringsbibliotek som ska användas för utveckling av

användargränssnittet.

En kravspecifikation togs sedan fram för att fastställa att de krav som ställs på programvaran uppfylls.

Därefter påbörjades en inledande design, en designspecifikation av programvaran som beskriver hur användargränssnittet och programvarans olika funktioner fungerar. Denna designspecifikation beskriver således hur man i arbetets början tänkt att programvaran ska se ut.

Slutligen togs en konstruktionsbeskrivning fram där en mer detaljerad beskrivning ges för hur programvaran är uppbyggd. Här fastställs den slutgiltiga designen som beskriver resultatet i designen av programvaran och dess funktioner.

En testspecifikation och ett testprotokoll skapades sedan som hjälp för att ta reda på vilka krav från kravspecifikationen som uppnåtts med efterföljande kommentarer. Testspecifikationen innehåller olika teststeg som skall utföras för att verifiera att kraven från kravspecifikationen är uppfyllda. Testprotokollet innehåller resultatet av dessa tester.

(12)

4.

Undersökningar

I denna del beskrivs de undersökningar som gjorts, deras resultat och slutsatser.

4.1. Undersökning av programvaror

Först och främst gäller det att få en överblick av vilka program som finns tillgängliga för I/O-enheter på marknaden idag, samt vilka plattformar som stöds.

4.1.1. Förutsättningar och avgränsningar

Då utbudet av programvara är relativt stort är det nödvändigt att införa vissa kriterier på programvaran som tas upp i den inledande undersökningen:

• Det ska finnas tillräckligt med information om programmet för att man ska få en klar bild över dess funktioner (skärmdumpar för enkla program, annars manual eller demoversion).

• Programmet ska kunna kommunicera direkt med en I/O-enhet.

På grund av tiden som finns avsatt till denna undersökning har det beslutats att endast göra en ytlig undersökning av dessa programvaror för att sedan välja ut några färre för en djupare undersökning av dess funktioner.

4.1.2. Inhämtning av information

Undersökningen gick till på sådant sätt att sökning efter I/O-enheter på gjordes Internet om vilka programvaror som fanns tillgängliga för dessa. Den sökmotor som användes var Google. Sökningarna som gjordes i sökfönstret såg bland annat ut på detta vis:

• ”usb i/o interface” • ”usb i/o”

• ”usb input output” • ”usb i/o software” • “usb i/o units”

Även en tidigare marknadsundersökning av I/O-enheter användes. Denna undersökning utfördes av Johan Frisk och Daniel Magnusson på Motion Control och finns redovisad i dokumentet [OAU1-140]. Med hjälp av informationen från Internet och den tidigare undersökningen gjordes en övergripande granskning av I/O-enheternas programvara.

(13)

4.1.3. Viktiga parametrar

För att få en bild över hur de olika programvarorna ser ut har de jämförts utifrån flera olika parametrar.

Följande är de egenskaper som ansågs vara intressanta att jämföra: • Tillverkare. • Kompatibla I/O. • Tillgängligt på Internet. • Typ av OS. • Pris. Beskrivning av parametrar

Nedan följer en beskrivning av de parametrar som tagits fram.

Tillverkare

Företaget som har tillverkat programvaran. Ibland inte samma som de som tillverkat hårdvaran.

Kompatibla I/O

Vilka I/O-enheter som stöds av programvaran. Vissa programvaror fungerar med flera olika I/O-enheter med hjälp av drivrutiner.

Tillgängligt på Internet

Om programvaran eller dess manual finns tillgänglig på Internet och även om programvaran finns tillgänglig i fullversion eller som demoversion.

Typ av OS

Operativsystem som stöds av programvaran, till exempel Windows, Mac OS eller Linux.

Pris

(14)

4.1.4. Resultatsammanställning – Undersökning av programvaror

Program Tillverkare Kompatibla I/O Tillgängligt på Internet Typ av OS (USD) Pris

USB Digital I/O

Commander Kadtronix USB Digio-U4x1 Endast manual Win 98/2000/XP 39

Testprogram för USB I/O Controller

Ocean Controls KT-5220 Källkod Windows 0

TestPoint SuperLogics Flera Demoversion Windows 1295

DAQFactory AzeoTech Flera Demoversion Pro eller senare Windows 2000 2499

24-DASYLab Instruments National Flera Endast manual 2000/XP/Vista Windows 2499

499-TracerDAQ Measurement Computing Enheter från tillverkare fullversion Gratis 2000/XP/Vista Windows 0 InstaCal Measurement Computing Enheter från tillverkare fullversion Gratis Windows 3.x eller senare 0 Testprogram till

DeVaSys USB

I2C/IO board DeVaSys USB I2C/IO

Gratis fullversion Windows 0 Testprogram till Velleman K8055/VM110 Velleman K8055/VM110 Windows 98 eller senare 0

LabVIEW Instruments National Flera Demoversion Windows, Mac OS X, Linux 1249-4699

Starting Point Systems Testversion

Starting Point

Systems The µChameleon Källkod

Win 2000/XP,

Win Server 2003 0

Phidget 2.1 Phidgets Inc

PhidgetInterfaceKit 8/8/8 PhidgetInterfaceKit 8/8/8 w/6 Port Hub Källkod Win 2000/XP/Vista, Win CE, Linux,

Mac OS X

0

QuickDAQ Data Translation Enheter från tillverkare Demoversion Windows 195

Measure

Foundry Data Translation

Enheter från

tillverkare Demoversion Windows 1995

WinDaq DataQ Instruments Flera Demoversion Windows 2000/XP 0-1995

Tabell 1: Sammanställning av de undersökta programvarorna.

4.1.5. Slutsats

Vad man kan se av sammanställningen är att det finns gratisversioner av programvara, men att många av dessa programvaror är knutna till vissa hårdvaror. Däremot kan vissa av

programmen som kostar pengar kommunicera med andra I/O-enheter med hjälp av speciella drivrutiner.

På det stora hela är de flesta program som är gratis bara enkla testprogram för att testa hårdvaran. De två typer av program som upptäckts är antingen enkla testprogram eller avancerade utvecklingsmiljöer. För övrigt finns det relativt få program till Mac OS X. Närmare information om denna undersökning finns i dokumentet [USD1-2101].

(15)

4.2. Fördjupad undersökning av programvaror

I denna del av undersökningen granskas programvarorna återigen, men denna gång inriktat på programvarornas funktioner, målgrupp och användningsområde.

4.2.1. Förutsättningar och avgränsningar

De avgränsningar som avsatts i denna undersökningsdel har samma kriterier som i den föregående undersökningen.

4.2.2. Viktiga parametrar

De parametrar som ansågs vara intressanta i denna fas av undersökningen är följande: • Stöd för typer av ut- och ingångar.

• Visualisering av data. • Export och import. • Script/makron. • Manual.

• Användningsområde. • Målgrupp.

Beskrivning av parametrar

Nedan följer en beskrivning av de parametrar som tagits fram.

Stöd för typer av ut- och ingångar

Vilka typer av in- och utgångar som stöds. I första hand undersöks digitala och analoga in- och utgångar.

Visualisering av data

På vilket sätt insamlade data och utdata från programmet presenteras.

Export och import

Vilka möjligheter som finns att importera och exportera data till andra program och filer.

Script/makron

Möjligheter att skriva scripts, makron eller annan typ av programkod för att automatisera olika uppgifter.

Manual

Om manual finns till programmet och i så fall hur pass begriplig den är.

Användningsområde

Vad programmet är tänkt att användas till, exempelvis mätning, övervakning och styrning.

Målgrupp

(16)

4.2.3. Uteslutna program

Ett program som inte kommer att tas upp i denna undersökning är programvaran InstaCal från Measurement Computing. InstaCal uppfyller inte kriterierna eftersom det saknas information om hur data visualiseras, om export av data är möjlig och om det har stöd för scripts, makron eller händelser.

(17)

11 4.2 .4 . R es u lta ts am m an st äll n in g T ab ell 2 : R es ult at sa m m an stä lln in g – rd ju pa d u nd er kn in g a v p ro gr am va ro r.

Program Digital in Digital ut Analog in Analog ut Visualisering Export/Import Script/Makron Manual Målgrupp Anv.område Övrigt

DAQFactory Ja Ja Ja Ja Avancerad Stöds Stöds Finns Företag Mätning -DASYLab Ja Ja Ja Ja Avancerad Stöds Stöds Finns Företag

Mätning, övervakning -LabVIEW Ja Ja Ja Ja Avancerad Stöds Stöds Finns Företag

Övervakning, mätning, styrning

PWM, pulsräknare

Measure Foundry Ja Ja Ja Ja Avancerad Stöds Stöds Finns Företag

Mätning, övervakning PWM, pulsräknare, frekvensmätning, periodmätning Phidget 2.1 Ja Ja Ja Nej Enkel Saknas Saknas Saknas Utvecklare Testprogram

-QuickDAQ Nej Nej Ja Nej Avancerad Stöds Stöds Finns Företag Mätning -SPS Testversion Ja Ja Ja Nej Enkel Saknas Saknas Saknas Utvecklare Testprogram -TestPoint Ja Ja Ja Ja Avancerad Stöds Stöds Finns Företag Mätning -Testprogram DeVaSys USB

I2C/IO board Ja Ja Nej Nej Enkel Saknas Saknas Saknas Utvecklare Testprogram -Testprogram USB I/O

Controller Ja Ja Ja Nej Enkel Saknas Saknas Saknas Utvecklare Testprogram PWM Testprogram Velleman

K8055/VM110 I/O-kort Ja Ja Ja Ja Enkel Saknas Saknas Finns Privat Testprogram Pulsräknare TracerDAQ Ja Ja Ja Ja Avancerad Stöds Saknas Saknas Företag Mätning PWM USB Digital I/O Commander Ja Ja Nej Nej Enkel Saknas Stöds Finns Privat Automatisering Seriell ut/in WinDAQ Nej Nej Ja Nej Enkel Stöds Saknas Finns Företag Mätning

(18)

-4.2.5. Sammanfattning

Gemensamt för de avancerade programmen är bra dokumentation och många alternativ för att visualisera data. De enkla programmen saknar eller har bristande dokumentation och har endast grundläggande visualisering. De enkla programmen saknar export av data till andra programvaror till skillnad från de avancerade som stöder export till bland annat Excel, Word och i enstaka fall Matlab.

Programmen skiljer sig mycket åt med avseende på de olika typerna av in- och utgångar som stöds. Ett exempel på ett sådant fall är Vellemans enkla testprogram som har både analoga in- och utgångar, även digitala in- och utgångar och pulsräknare. QuickDAQ har bara stöd för analoga ingångar, men kan presentera data på ett mer avancerat sätt.

Alla större program stöder export och import av data, och även script och/eller makron. Många program är fokuserade på mätning av analoga data. Inga av de undersökta programmen ger mer avancerade alternativ för att representera digitala data.

4.2.6. Slutsats

Programmen som har undersökts kan delas in i två grupper: Avancerade utvecklingsmiljöer som riktas till företag och enkla testprogram som riktas till hemanvändare.

Med hjälp av tabellen kan man dra slutsatsen att de enkla programmen endast har som funktion att fungera som ett slags test för att kortet kan hittas. Konsekvensen är att användaren får skriva ett eget program efter egna behov.

Man kan även dra slutsatsen att företag har ett gemensamt intresse av analoga ingångar. Även digitala in- och utgångar är populärt, men inte analoga utgångar. De program som har

möjlighet att presentera analoga ingångar har även möjligheten att presentera insamlade data som en funktion av tiden, i form av en graf.

(19)

4.3. Fördjupad undersökning av programvarornas funktioner

Följande undersökning inriktas på programvarornas struktur, utvecklingsmiljö, händelser och användarvänlighet.

4.3.1. Förutsättningar och avgränsningar

Då utbudet av programvara är relativt stort är det nödvändigt att införa vissa kriterier på programvaran som tas upp i denna undersökning:

• Det ska finnas tillräckligt med information om programmet för att man ska få en klar bild över dess funktioner till exempel manualer eller demoversioner.

• Programmet ska kunna kommunicera direkt med en USB I/O-enhet. • Enkla testprogram tas inte med i undersökningen på grund av en simpel

programuppbyggnad, då undersökningen är inriktad på större utvecklingsmiljöer. • På grund av begränsad tid finns inte möjlighet till att undersöka alla större

utvecklingsmiljöer. Undersökningen har således begränsats till ett fåtal programvaror som skiljer sig i sin programuppbyggnad.

4.3.2. Viktiga parametrar

De parametrar som ansågs vara intressanta i denna fas av undersökningen är följande: • Installation av programvara. • Programuppbyggnad. • Presentation av data. • Händelser/Scripts. • Användarvänlighet. • Seriell kommunikation. • Export av data.

För att kunna använda programvaran krävs en installation. Denna installation går snabbt att granska för att se om eventuella svårigheter uppstår och om komplicerade val behöver göras. Då undersökningen kommer att stå som underlag för den egna utvecklingen av programvara måste användaren på ett enkelt sätt ta sig runt i programmet utan svårigheter och snabbt kunna vänja sig med den nya utvecklingsmiljön. Av den orsaken är det angeläget att parametrar som programuppbyggnad och användarvänlighet ska vara med i undersökningen.

Presentationen av data är även en viktig del då användaren på ett simpelt sätt ska kunna uppfatta redovisad information med hjälp av enkla bilder, grafer och mätdata.

Då händelser/scripts är en återkommande del i programvaror för USB-IO produkter är det betydelsefullt att se på vilka olika sätt dessa funktioner implementeras.

(20)

Parametrarna prioriterades enligt en tid/prioritetstabell. Tabellen nedan visar prioriteten av parametrarna med avseende på undersökningstiden.

Tid/prio Hög Låg Kort Program- uppbyggnad Presentation av data Installation av programvara

Mellan Användar- vänlighet Export av data

Lång Händelser /Scripts kommunikation Seriell

Tabell 3: Tid/prioritetstabell.

Enligt denna tabell kommer följande parametrar inte tas upp: • Seriell kommunikation.

• Export av data

Anledningen till detta är att prioriteten på dessa parametrar var lägre och ett begränsat tidsintervall gjordes att dessa inte tas upp i undersökningen.

Beskrivning av parametrar

Nedan följer en beskrivning av de parametrar som tagits fram.

Installation av programvara

Hur pass enkelt det är att installera programvaran och lång tid det tar att installera den.

Programuppbyggnad

Hur den grafiska miljön ser ut vid start av programvaran och beskrivning av dess huvudfönster.

Presentation av data

På vilka visuella sätt insamlade data och utdata från programmet presenteras.

Händelser/Scripts

Möjligheter att få speciella händelser att ske, skriva scripts eller annan typ av programkod för att automatisera olika uppgifter.

Användarvänlighet

Hur pass lätt ett program skulle kunna vara att använda för en ”vanlig” användare, det vill säga en person utan teknisk erfarenhet eller programmeringsbakgrund, men ändå en viss erfarenhet av användning av mjukvara.

(21)

4.3.3. Uteslutna program

De program som inte har tagits upp i denna undersökning från den föregående undersökningen är följande:

• USB Digital I/O Commander.

• Testprogram för USB I/O Controller.

• Testprogram för DeVaSys USB I2C/IO Board. • Testprogram för Velleman K8055/VM110 I/O. • SPS Testverion.

• Phidget 2.1. • WinDAQ.

Dessa program uppfyller inte kriterierna då undersökningen är inriktad på större utvecklingsmiljöer.

Även de större utvecklingsmiljöerna QuickDAQ och Measure Foundry behandlas inte i denna undersökning då dessa programvaror har liknande programstruktur som redan undersökta programvaror.

4.3.4. Sammanfattning

Installationen av programvarorna skedde utan några svårigheter. I alla programvaror fanns en installationsguide som med enkla knapptryckningar installerar programmet. Gemensamt för alla undersökta programvaror är att utvecklingsmiljön till en början kan se krånglig ut med många fönster, knappar och funktioner som kan vara svårtydliga.

I själva programmeringen av programmen syns vissa likheter mellan programmen då man anger en grafisk komponents egenskaper genom ett högerklick eller ändrar egenskaperna i ett gemensamt fönster. De två program som skiljer sig från denna typ av programmering är DAQFactory, som använder ren kodning av objekten för att samspel mellan komponenter ska ske. Det andra programmet är TracerDAQ som användaren under analys av värden ändrar dess egenskaper genom fördefinierade knappar.

Presentation av data sker på liknande sätt i alla programvaror med varierande kvalitet. Bland annat har TracerDAQ och Testpoint enkla visuella knappar och grafer tillskillnad från LabVIEW och DASYLab, som har en mer avancerad grafisk formgivning av mätdata, där man kan välja mellan många olika typer av knappar och lampor och diagram.

Att definiera händelser sker på olika sätt. LabVIEW använder grafiska komponenter för att skapa händelser, medan DASYLab, TestPoint och TracerDAQ använder fördefinierade händelser. Den programvara som endast använder sig av ren kodning av scripts är DAQFactory.

(22)

4.3.5. Slutsats

Med bra dokumentation och vägledning genom enkla exempel kan användaren lättare få förståelse för hur programvaran är strukturerad och snabbt komma igång med programvaran. Detta är en väsentlig del i utvecklandet av programvara för att ge en klarare bild över

programvarans funktioner och lätt komma ihåg hur programvaran fungerar vid senare användning. Ett sätt för att underlätta för användaren är användningen av färger. Detta förfaringssätt sker i flera av de undersökta programvarorna för att belysa kritiska områden. Detta gör att man snabbt kan få en bild över problem som uppstår och korrigera detta.

Klart är att många knappar och funktioner på utvecklingsmiljön ger användaren för många val vilket kan försvåra användandet av programvaran. Ett steg är att identifiera vilken målgrupp programvaran ska vända sig till. Vana datoranvändare vill ofta ha en hjälpfunktion i

programmet för att snabbt hitta det som söks, medan ovana användare behöver hjälp genom enkla exempel från manualer som på ett pedagogiskt sätt förenklar användandet av

programvaran. De manualer som finns tillgängligt från respektive programvara har varit omfattande och förklarar på varierat sätt de funktioner som finns. Manualer från DAQFactory och LabVIEW kan vara svårbegripliga för ovana användare. Dessa manualer består av stora avsnitt utan pedagogiska exempel när det gäller händelser och scripts.

Ur undersökningen har det framgått att varje tillverkare av programvara har ett eget unikt sätt att definiera händelser och scripts. Här får man återigen identifiera vad för typ av användare som kan tänkas använda programmet. En erfaren programmerare vill nog hellre använda sig av ren kodning för att inte hindras av ett begränsat urval av fördefinierade funktioner. Således är DAQFactory ett val för vana programmerare. För vanliga datoranvändare är LabVIEW ett val som skulle uppskattas som genom sina grafiska komponenter underlättar

händelsebaserade funktioner.

(23)

4.4. Undersökning av USB-kommunikation i Mac OS X

För att kunna uppnå kommunikation mellan Mac OS X och USB I/O-enheten, är det lämpligt att undersöka hur kommunikation sker mellan dessa två enheter. Undersökningen utgår ifrån kommunikation med HID-standarden över USB-bussen i Mac OS X.

4.4.1. Förutsättningar och avgränsningar

Denna undersökning är en del av ett större projekt, där kommunikation ska ske med en HID-enhet över USB-bussen. Den är därför begränsad till just HID-HID-enheter och mer specifikt funktioner som är användbara i ett sådant projekt.

4.4.2. Undersökning

Informationen som används i denna undersökning har hämtats från Apples hemsida för utvecklare http://developer.apple.com/ och API-referensen som finns inbyggd i

utvecklingsmiljön Xcode. Enkla testprogram har sedan skrivits för att kontrollera att

kommunikationen fungerar mot hårdvaran. Testprogrammen finns dokumenterade i [USD1-2603].

4.4.3. Viktiga parametrar

De funktioner som är betydelsefulla att granska är följande: • Initiering av programbibliotek.

• Avancerad sökning efter enheter.

• Hämta information om anslutna enheter. • Skicka och ta emot data.

• Utveckling av drivrutiner.

Det som är intressant att ta upp i en undersökning av USB-kommunikation är vilka

förberedelser som behöver göras för att bygga programmen. Även hur man hittar en enhet att kommunicera med och sedan hur kommunikationen går till. Det kan även vara av intresse att veta hur egna drivrutiner konstrueras för utveckling av egna protokoll.

I och med att syftet med denna undersökning är att kommunicera med HID-enheter, är det speciellt tre av dessa punkter som är intressanta:

• Initiering av programbibliotek.

• Hämta information om anslutna enheter. • Skicka och ta emot data.

Kunskap om vilka förberedelser som behöver göras är nödvändig, likaså kunskap om hur man skickar och tar emot data. Eftersom tillverkare (VID)- och produkt-ID (PID) är känt för de enheter som är intressanta räcker det med att kunna hämta information om enskilda anslutna enheter.

Det finns inget behov av någon mer avancerad sökning efter enheter. Ett exempel på detta är att en sökning efter möss kan returnera en integrerad enhet, som bara har mus-funktionen som en av flera andra funktioner.

(24)

Undersökningen är som sagt inriktad på just HID-enheter, som redan har stöd i form av färdiga drivrutiner i Mac OS X. Detta medför att nedanstående punkter har lägre prioritet, och kommer därför inte att tas upp i denna undersökning:

• Avancerad sökning efter enheter. • Utveckling av drivrutiner.

Beskrivning av parametrar

Nedan följer en mer utförlig beskrivning av de viktiga funktionerna.

Initiering av programbibliotek.

Vad som måste göras för att börja kommunicera med enheterna. Detta kan vara vilka

headerfiler som måste inkluderas, vilka objekt som måste skapas, möjligheter att filtrera listan över anslutna enheter och övriga saker som måste göras innan biblioteket används.

Hämta information om anslutna enheter.

Hur man tar reda på vilka enheter hittades och även mer specifikt hur man tar reda på vilken enhet som är den sökta.

Skicka och ta emot data.

Hur man skickar och tar emot data från enheten. Genomgång av API

I detta avsnitt beskrivs hur de olika API:erna används. En referens över funktionerna som används i den nya versionen och testprogram som kan kommunicera med Motion Controls USB I/O-enhet för båda versionerna av API:et finns i dokumentet [USD1-2603].

Nytt API från och med 10.5

Från och med Mac OS X version 10.5 (Leopard) kommunicerar man med olika HID-enheter genom operativsystemet med hjälp av HID Manager. Den har skapats för att förenkla dessa uppgifter jämfört med den tidigare implementationen som finns beskriven längre fram under rubriken Tidigare API till och med 10.5.

För att kommunicera med HID-enheter med hjälp av HID Manager utför man följande steg i tur och ordning:

1. Skapa en så kallad Matching Dictionary. En sådan innehåller regler för vilka typer av HID-enheter som man är intresserad av (valfritt).

2. Skapa en HID Manager.

3. Registrera callbackfunktioner som anropas när man lägger till eller tar bort enheter (valfritt).

4. Öppna HID Manager.

5. Registrera callbackfunktioner då data tas emot (valfritt).

6. Lägga till HID Manager i programmets runloop (om man använder callbacks). 7. Hämta en lista över funna enheter (valfritt).

(25)

När man kör igång runloopen kommer HID Manager att börja arbeta. När en callback anropas får man en referens till den aktuella enheten. En annan metod är att hämta en lista över

enheter direkt från HID Manager. När man har en referens till en enhet kan man: 1. Öppna enheten.

2. Skicka och ta emot data. 3. Stänga enheten.

När programmet har körts klart behöver man: 1. Stänga HID Manager.

2. Ta bort HID Manager.

I följande avsnitt beskrivs de olika stegen närmare.

Initiering av programbibliotek

Kommunikation med kärnan hanteras som sagt av en HID Manager. För att använda den behöver man inkludera biblioteken IOKit och CoreFoundation, och inkludera headerfilen ”IOKit/hid/IOHIDLib.h”.

Innan HID Manager används kan man ange en matching dictionary som används när man söker efter anslutna enheter för att filtrera resultatet efter egna önskemål. Om man anger NULL som dictionary kommer alla enheter att hanteras. Det finns några färdiga dictionaries att använda med funktionen IOServiceMatching. För att ange en matching dictionary

använder man funktionen IOHIDManagerSetDeviceMatching.

En USB-enhet kan ha olika egenskaper. Den kan till exempel vara både ett tangentbord och en mus. Vill man söka efter flera olika typer av enheter kan man lägga till en array med dictionaries till sin matching dictionary, annars lägger man in de eftersökta egenskaperna direkt. För att använda flera dictionaries (och på så sätt fler kriterier) används funktionen

IOHIDManagerSetDeviceMatchingMultiple.

För att skapa en HID Manager använder man funktionen IOHIDManagerCreate. Objektet som returneras ska frigöras med CFRelease.

För att öppna HID Manager används funktionen IOHIDManagerOpen. Funktionen kommer att öppna alla matchande HID-enheter. För att stänga HID Manager när den inte behövs längre används IOHIDManagerClose.

Innan man öppnar HID Manager kan man ange callbackfunktioner som anropas när enheter som matchar kriterierna i listan ansluts eller kopplas bort. Funktionerna kommer även att anropas för alla funna enheter när HID Manager öppnas och sedan för varje enhet vid olika händelser så länge HID Manager är öppen. För att registrera callbacks används funktionerna

IOHIDManagerRegisterDeviceMatchingCallback och IOHIDManagerRegisterDeviceRemovalCallback.

Innan HID Manager kan använda callbackfunktioner måste den köras från en runloop. Man kan göra detta med funktionen IOHIDManagerScheduleWithRunLoop. Man kan också ta bort HID Manager från en runloop med funktionen IOHIDManagerUnscheduleFromRunLoop.

(26)

Hämta information om anslutna enheter

Man kan hämta ut en lista över de anslutna enheterna med hjälp av funktionen

IOHIDManagerCopyDevices. Funktionen returnerar en CFSet som man kan hämta ut alla

värden ur med CFSetGetValues eller enstaka med CFSetApplyFunction.

Skicka och ta emot data

För att skicka data till en enhet använder man funktionen IOHIDDeviceSetReport. Man behöver en referens till enheten och en buffert med data att skicka. Den referensen fås då en callback anropas eller från listan över anslutna enheter.

För att ta emot data använder man funktionen IOHIDDeviceGetReport. Där behövs en referens till enheten och en tom buffert att spara data till.

Funktionerna IOHIDDeviceSetReport och IOHIDDeviceGetReport kommer att blockera tills data har skickats eller tagits emot. Om man inte vill vänta på inkommande data kan man istället registrera en callbackfunktion med IOHIDDeviceRegisterInputReportCallback, som kommer att anropas vid inkommande data.

Tidigare API till och med 10.5

Det här avsnittet beskriver den tidigare versionen av API:et som finns tillgänglig från och med Mac OS X version 10.0 till och med version 10.5 (Leopard). Den nya versionen beskrevs i det förra avsnittet.

För att kommunicera med HID-enheter med hjälp av detta API behöver man:

1. Skapa en så kallad matching dictionary. En sådan innehåller regler för vilka typer av HID-enheter som man är intresserad av.

2. Genomföra en sökning efter enheter.

3. Stega igenom listan med funna enheter tills en passande enhet hittas. När en passande enhet har hittats behöver man:

1. Öppna enheten.

2. Sätta upp interrupthantering och runloops.

3. Skriva callbacks för hantering av inkommande data. 4. Skicka och ta emot data.

När programmet har körts klart behöver man: 1. Ta bort oanvända enhetsobjekt.

2. Ta bort listobjektet och matching dictionary. I följande avsnitt beskrivs de olika stegen närmare.

Initiering av programbibliotek

För att kommunicera med kärnan behövs en Master port. I Mac OS X version 10.2 kan man använda konstanten kIOMasterPortDefault. I tidigare versioner måste man till exempel använda funktionsanropet IOMasterPort(MACH_PORT_NULL, &myMasterPort); och avallokera den med mach_port_deallocate när man är klar med den. Men i version 10.2 kan man som sagt använda kIOMasterPortDefault istället, och på så sätt slippa (av)allokeringen. När man ska söka igenom listan med alla anslutna enheter sätter man först upp en matching dictionary som används för att filtrera resultatet efter egna önskemål.

(27)

Ett enkelt sätt att sätta upp denna är att använda någon av de färdiga som finns. För att lista alla HID-enheter kan man till exempel använda IOServiceMatching(kIOHIDDeviceKey).

Hämta information om anslutna enheter

Nästa steg är att genomföra sökningen med funktionen IOServiceGetMatchingServices, vilken skapar en iterator till listan med sökresultatet.

Nästa steg är att lista enheterna. Man stegar igenom och hämtar ett objekt från listan med funktionen IOIteratorNext.

För att hämta information om objektet använder man funktionen

IORegistryEntryCreateCFProperties på objektet.

Objekt som returneras av IORegistryEntryCreateCFProperties ska tas bort med CFRelease, och objekten och iteratorn ska tas bort med IOObjectRelease.

Skicka och ta emot data

För att kunna kommunicera med en enhet måste flera steg utföras. Först måste man skapa ett plugin-interface med IOCreatePlugInInterfaceForService och utifrån det får man en referens till ett ”interface” av typen IOHIDDeviceInterface122.

Innan man kan skicka och ta emot data måste man bland annat öppna enheten, registrera en callbackrutin som kommer att anropas vid inkommande data och skapa en runloop.

När detta är gjort kan man använda funktionerna setReport och getReport för att skicka och ta emot data.

Sammanfattning

Apple utvecklade ett nytt API för kommunikation med HID-enheter med Mac OS X version 10.5 (Leopard) och de rekommenderar att den nya versionen används för nya program. Stöd för den gamla metoden kommer att upphöra i nästa version av operativsystemet.

Gemensamt för det nya och gamla API:et är att de båda stöder callbackfunktioner som anropas då data tas emot. Det äldre API:et är mer generellt, det behöver inte användas med just HID-enheter. Den nya versionen är speciellt gjord för just HID-enheter. Apples nya API kräver dock mycket mindre kod för att användas och det är mycket förenklat jämfört med den gamla versionen.

Slutsats

Eftersom stöd för den gamla metoden kommer att upphöra i nästa version av operativsystemet skulle det vara lämpligt att använda den nya metoden för nya program. Den nya metoden är enklare och speciellt anpassad för HID-enheter, vilket gör att den är speciellt lämplig för nya program som kommunicerar med sådana enheter.

(28)

4.5. Undersökning av Motion Controls programvara

USB I/O har två programvaror för operativsystemet Windows. Dessa program är väldigt enkla och används bara för en överblick av anslutna enheters egenskaper och för att testa enkla funktioner på enheterna. Då en ny programvara ska utvecklas för Mac-miljö är det av intresse om det finns några möjligheter att använda kod från gamla programvaran till den nya. I denna undersökningsdel ingår det att utreda om möjlighet finns till att återanvända dessa två

programvaror med tillhörande drivrutiner i utvecklingen av ny programvara för operativsystemet Mac OS X.

4.5.1. Undersökning

Undersökningen utgick ifrån koden till drivrutinerna som fanns tillgänglig för Windows och Linux. Det grafiska gränssnittet som fanns tillgängligt undersöktes även för att se om

eventuella grafiska delar kunde återanvändas.

4.5.2. Viktiga parametrar

De punkter som innan undersökningen ansågs vara intressanta var följande: • Återanvändning av programkod.

• Granskning av användargränssnittet. • Drivrutiner för .NET.

För att se hur mycket kod som behöver skrivas är det lämpligt att se över drivrutinerna för de andra operativsystemen, för att se hur mycket kod som kan återanvändas.

Det är även intressant att se hur mycket kod som kan integreras mellan de olika drivrutinerna för att förenkla framtida underhåll av koden.

Då det redan finns en framtagen programvara kan det vara intressant att se om det går att återanvända delar av det grafiska gränssnittet.

Drivrutiner för .NET går även att undersöka men då denna undersökning riktar sig till programvara i Mac-miljö utesluts därför denna parameter.

Beskrivning av parametrar

Nedan följer en beskrivning av de parametrar som tagits fram.

Återanvändning av programkod

Vilka delar av drivrutinernas kod som går att återanvända i Mac OS X och vilka möjligheter som finns att integrera gemensam kod från de olika drivrutinerna.

Granskning av användargränssnittet

Undersökning av befintlig programvara för att se om det är möjligt att återanvända delar av den grafiska miljön.

(29)

4.5.3. Återanvändning av programkod

De befintliga drivrutinerna för Windows och Linux har undersökts.

Funktionerna som drivrutinen tillhandahåller finns specificerade i dess manual. Dessa funktioner kommunicerar sedan med hårdvaran på olika sätt med hjälp av funktioner som finns internt i drivrutinen.

De funktioner som är publika och används av de program som kommunicerar med drivrutinen använder bara dessa funktioner, som i stort sett är likadana för de olika operativsystemen. De funktioner som är mest beroende av operativsystemet är de som öppnar och stänger

anslutningar till en enhet och funktioner för att läsa och skicka data. Dessa funktioner beskrivs närmare i avsnitt 4.4.

4.5.4. Undersökning av användargränssnittet

Den nuvarande programvaran till USB I/O-enheten består av två program, USB I/O Listing och USB I/O Testprogram.

4.5.5. USB I/O Listing

Detta program används för att få en översikt över de enheter som är anslutna. Här kan användaren också ändra det så kallade ID-numret på enheten. Med detta

identifikationsnummer, ID-nummer, kan användaren på ett enkelt sätt skilja enheter från varandra. Det går även att lägga till en beskrivning av enheten.

(30)

4.5.6. USB I/O Testprogram

Detta program testar digitala in- och utgångar på USB I/O-enheten samt styr en grön lysdiod på enheten.

Figur 3: USB I/O Testprogram.

Under kombinationsrutan Select unit visas de anslutna enheterna. Här väljer användaren den enhet som ska användas.

Konfigurering av portarna sker genom enkla knapptryckningar och ingångarnas

uppdateringintervall går att ändra på genom att fylla i antalet millisekunder och sedan klicka på knappen Change.

Genom att klicka på den gröna rutan bredvid texten LED kan användaren tända och släcka lysdioden på enheten. När rutan är grön lyser dioden och när rutan är svart är dioden släckt.

4.5.7. Sammanfattning

I dagsläget är programvaran för Motion Controls USB-I/O-enhet lik de enklare testprogrammen som togs upp i de tidigare undersökningarna.

Koden som finns för de befintliga drivrutinerna för Windows och Linux kan återanvändas till stor del i en drivrutin för Mac OS X. Informationen i undersökningen av

(31)

4.5.8. Slutsats

Det grafiska gränssnittet i den nuvarande programvaran är inte lämplig eftersom det har en enkel struktur med knappar för att testa enheten. Däremot kan funktionen USB I/O Listing vara en bra lösning att använda sig av vid programstart i den nya programvaran. Detta för att se vilka enheter som är anslutna för att lättare skilja dem åt i den nya programvaran.

Det har visat sig att de funktioner som är publika för drivrutinerna i Windows och Linux i princip är uppbyggda på samma sätt. Det som behöver göras för att bygga om drivrutinen för Mac OS X är att skriva om de funktioner som är specifika för operativsystemet, exempelvis funktionerna för att kontrollera tillverkare och produkt-ID och göra mindre ändringar hos de övriga funktionerna.

(32)

4.6. Undersökning av bibliotek för användargränssnitt

För att skriva grafiska program till Mac OS X krävs att man använder ett bibliotek som används för att skapa det grafiska gränssnittet. Det finns fler sådana bibliotek, var och ett är skrivet för ett visst programmeringsspråk och har stöd för olika operativsystem. Därför krävs en undersökning över vilka av dessa bibliotek som är lämpliga för operativssytemet Mac OS X och möjligen andra operativsystem.

4.6.1. Inhämtning av information

Information om vilka bibliotek som finns tillgängliga har hämtats från sökmotorn Google (http://www.google.se), och Apple Developer Connection (http://developer.apple.com). Sökningar som genomfördes var:

• ”gui library mac os x” • ”gui library macosx” • ”gui libraries for macosx”

Information om respektive bibliotek har hämtats från dess hemsidor och tillhörande dokumentation.

4.6.2. Viktiga parametrar

De parametrar som innan undersökningen ansågs vara intressanta att undersöka var följande: • Stöd för operativsystem

• Programmeringsspråk

• Integration med operativsystem • Licens

• Popularitet

• Enkelhet att använda • Prestanda

Det som är intressant att ta upp i en undersökning av bibliotek för skapandet av grafiska användargränssnitt är först och främst vilka operativsystem de har stöd för, vilka

programmeringsspråk de kan användas med och hur pass väl de är integrerade i

operativsystemet. En indikation på bibliotekens kvalitet kan även vara hur populära det är, vilket gör denna punkt intressant.

Eftersom mjukvaran som ska utvecklas är av kommersiell natur är även licensen som biblioteken distribueras under intressant. Övriga saker som är önskvärda att ta upp är hur enkla de är, från programmerarens perspektiv, att använda. Även prestandan kan vara intressant, eftersom den direkt påverkar hur användaren upplever programmet.

För att undersöka bibliotekens prestanda och hur pass enkla de är att skriva kod mot, måste varje enskilt bibliotek installeras för varje operativsystem och testprogram skrivas. Dessa punkter måste uteslutas eftersom det inte finns tid att ta med dem i denna undersökning:

• Enkelhet att använda • Prestanda

(33)

Beskrivning av parametrar

Nedan följer en beskrivning av de parametrar som tas upp i denna undersökning.

Stöd för operativsystem

De operativsystem som biblioteket har stöd för. De operativsystem som är intressanta i denna undersökning är Windows, Linux och Mac OS X.

Programmeringsspråk

Vilka programmeringsspråk biblioteket kan användas med.

Integration med operativsystem

Hur väl programmen som skrivs med biblioteket integreras med operativsystemets standardgränssnitt. Den gradering som används är:

Bra: Program skrivna med biblioteket ser ut och fungerar som andra program i det aktuella operativsystemet.

Medel: Programmen ser ut och fungerar som andra program i det aktuella operativsystemet, med vissa undantag.

Dålig: Programmen har stora brister i utseende och funktion, vilket gör det tydligt för användaren att programmet inte är anpassat för operativsystemet.

Licens

Vilken licens biblioteket distribueras under. Fokus ligger på pris för kommersiell användning och eventuella krav på distribution av källkod.

Popularitet

Hur pass populärt biblioteket är att använda i olika program. Den gradering som används är: Hög: Biblioteket används i många program enligt tillverkaren, och många sådana program

kan hittas på Internet.

Medel: Biblioteket används i färre program, eller information om detta saknas från tillverkaren.

Låg: Biblioteket används i få program. Information om detta från tillverkaren saknas och det är svårt att hitta program som använder biblioteket i någon sökmotor på Internet.

(34)

4.6.3. Resultatsammanställning

Nedan följer en sammanställning av de parametrar som presenterats i undersökningen.

Bibliotek OS Språk Integration Licens Popularitet

Cocoa Mac OS X Objective-C, Java

Bra Begränsad, Gratis Hög

FLTK Windows, Linux, Mac OS X C++ Dålig LGPL+undantag, Gratis Låg Qt Windows, Linux, Mac OS X

C++, Java Bra GPL/Kommersiell, Kostar

Hög

Tk Windows,

Linux, Mac OS X

Tcl, C, Perl Medel BSD, Gratis Medel

wxWidgets Windows, Linux, Mac OS X C++, Python, Perl, C#/.net Bra LGPL+undantag, Gratis Hög

Tabell 4: Resultatsammanställning – bibliotek för användargränssnitt.

4.6.4. Sammanfattning

Av de bibliotek som har tagits upp i denna undersökning har alla utom Cocoa haft fördelen att de stödjer flera operativsystem. Det ger att ett program kan kompileras på dessa

operativsystem utan större förändringar i programkoden.

Gemensamt för alla bibliotek är att de har stöd för flera språk, vilket ger större valfrihet för de som skriver programmen.

Integrationen med operativsystemets grafiska miljö, vilket var en viktig punkt i denna undersökning, är i överlag bra. Cocoa är biblioteket som används som standard i Mac OS X. Ett samband som syns tydligt i resultatsammanställningen är att integrationen med den grafiska miljön påverkar bibliotekets popularitet.

Licenserna för biblioteken tillåter alla att de används i kommersiella program. Alla förutom Qt är gratis att använda till detta.

4.6.5. Slutsats

Alla bibliotek som har tagits upp i denna undersökning har både positiva och negativa egenskaper. FLTK och Tk är inte bra integrerade i den grafiska miljön, vilket var en viktig punkt. Cocoa fungerar bara med Mac OS X, vilket kommer att innebära mycket arbete om programmet behöver skrivas om för ett nytt operativsystem. Qt kostar pengar om det ska användas till kommersiell programvaruutveckling.

Biblioteket som utmärker sig i denna undersökning är wxWidgets. Det är fritt att använda, stödjer flera operativsystem och har bra integration med den grafiska miljön.

Det programmeringsspråk som används för att kommunicera med hårdvaran i Mac OS X är C, enligt den tidigare undersökningen i avsnitt 4.4, USB-kommunikation i MAC OS X.

(35)

Lämpliga programmeringsspråk är de som är kompatibla med det språket. Av de språk som används av biblioteken i denna undersökning är C, C++ och Objective-C lämpliga att använda.

(36)

4.7. Utredning av mjukvarufunktioner

I denna slutgiltiga undersökning skall det undersökas i vilka mjukvarufunktioner som ska prioriteras i utvecklingen av programvara för USB I/O-enheten i Mac OS X miljö. Dessutom tas det reda på vilka olika sätt dessa funktioner kan presenteras på.

Denna utredning baserar sig på de tidigare undersökningarna i detta projekt och manual för Motion Controls USB I/O-enhet, för att ta reda på vilka funktioner som kan tas med och på vilka sätt de kan presenteras.

4.7.1. Undersökta funktioner

För att få en bild över de olika funktionerna i de undersökta programvarorna har utredningen gjorts utifrån flera olika parametrar.

De områden som innan denna utredning ansågs vara intressanta att ta upp var följande: • Installation

• Användargränssnitt

• Listning av anslutna enheter • Konfigurering av portar • Presentation av indata • Kontroll av utdata • Scripts/Händelser • Export av data • Seriell kommunikation • Hjälpmeny

Två viktiga punkter som inte har tagits upp i tidigare undersökningar är listning av anslutna enheter och konfigurering av portar. Då hårdvaran för dessa programvaror inte funnits tillgängliga har det inte varit möjligt att undersöka dessa punkter. En annan viktig faktor är även att de programvaror som undersökts, har varit demoversioner med begränsad

tillgänglighet. Detta har gjort det svårt att närmare granska detta i de tidigare

undersökningarna. Dessa punkter anses fortfarande viktiga att implementera i framtagning av ny programvara, därför tas de upp i denna utredning.

De områden som vi har valt att undersöka kan delas in i tre kategorier. Den första kategorin handlar om hur enkelt programmet är att använda, där fokus ligger på installation av

programvaran, och hur användargränssnittet är utformat. Eftersom detta projekt går ut på att ta fram ett användarvänligt program, är dessa parametrar extra viktiga.

Nästa kategori handlar om de funktioner som programvarorna har. Parametrarna handlar om listning av anslutna enheter, konfigurering av portar, presentation av insignaler, styrning av utsignaler, scripts och händelser, export av data och seriell kommunikation. Dessa parametrar har valts eftersom det är viktigt att ta reda på vilka funktioner som är efterfrågade på dessa typer av programvaror idag.

Den sista kategorin handlar om programvarornas hjälpavsnitt. Denna parameter är också viktig att ta upp, eftersom användaren kan behöva vägledning i vissa situationer. Bra vägledning bidrar till ett mer lättanvänt program, vilket som sagt är målet i detta projekt.

(37)

I de fall programvarorna har implementerat en funktion på olika sätt kommer den metod som är lämplig för ”vanliga” användare att väljas då programmet formges. Den nya programvaran ska vara ett användarvänligt program som riktar sig till personer utan teknisk erfarenhet eller programmeringsbakgrund. Det är därför viktigt att de funktioner som väljs är lätta att

använda.

Beskrivning av funktioner

Nedan följer en beskrivning av de funktioner som utretts.

Installation

För att kunna använda programvaran krävs en installation. Vid installation av programvara är det lämpligt att användaren utan hinder ska kunna installera programmet. I alla programvaror finns en installationsguide som med några knapptryckningar vägleder användaren genom installationsprocessen.

Listning av anslutna enheter

För att få en överblick av vilka enheter som är anslutna och vilken status de har, är det viktigt att ta fram en funktion som visar denna information. Denna funktion har blivit intressant i efterhand och finns därför inte med från de tidigare undersökningarna.

Konfigurering av portar

Om vissa portar kan ha flera olika funktioner är det viktigt att låta användaren välja vilka funktioner som ska användas. Detta måste även ske på ett användarvänligt sätt. Även denna funktion har blivit intressant i efterhand och finns därför inte med från de tidigare

undersökningarna.

Användargränssnitt

Programvarorna skiljer sig på två olika sätt vid uppstart, antingen visas ett fönster med valmöjligheter eller så öppnas utvecklingsmiljön med ett tomt arbetsområde.

Strukturen på programvarorna är i princip densamma med verktygsfält, många grafiska moduler och arbetsområden, med undantag från ett program som har ett användargränssnitt som liknar (imiterar) elektriska mätinstrument. Det som skiljer dem åt är kvaliteten på den grafiska miljön som exempelvis knappar som kan vara svåra att förstå utan att läst igenom manual eller hjälpavsnitt.

Flertalet av de undersökta programmen använder grafisk programmering där grafiska

komponenter kan länkas samman till en analys. Det fanns i undersökningen två programvaror som skiljer sig från detta sätt. Den ena programvaran använder sig av ren kodning av grafiska objekt för interagering mellan komponenter och i den andra programvaran sker ändringar av mätvärden och egenskaper under bearbetning av mätdata.

Det har i tidigare undersökning slagits fast att många knappar och funktioner kan försvåra användandet av programvaran. Ett undantag från denna framställning är programvaran TracerDAQ, där programmet är uppdelat i fyra applikationer. Här bestämmer användaren vilken av de fyra applikationerna som ska användas. På detta sätt döljs de funktioner som inte är intressanta under körningen.

(38)

Presentation av indata

De undersökta programmen har fler alternativ för att presentera data. Dessa alternativ inkluderar grafer, numeriskt, tabeller, och andra typer av diagram och mätare. Ett av programmen utmärker sig på så sätt att det imiterar det gränssnitt som återfinns hos många digitala oscilloskop.

Kontroll av utdata

På denna punkt är det endast ett program som skiljer sig från mängden. Programmet imiterar ett vanligt instrument. Användaren styr hur vågformen ska se ut genom att ställa in ett antal parametrar, och programmet kommer att generera denna utsignal på en port på I/O-enheten. De andra programmen låter användaren styra vilka beräkningar som ska utföras, antingen genom att koppla ihop komponenter grafiskt, eller genom att skriva programkod. Källor till data som används i beräkningarna kan vara insignaler från en I/O-enhet eller signaler som genereras av programmet. Resultatet av beräkningarna kan presenteras på skärmen och/eller styra en utsignal på en I/O-enhet.

Händelser/Scripts

De undersökta programmen skiljer sig mycket på denna punkt, med både enkla och avancerade lösningar.

De enklare programmen låter användaren ange vad som ska göras då en insignal går utanför angivna gränsvärden.

De mer avancerade programmen låter användaren skapa hela program. Tre olika varianter hittades. Den enklaste låter användaren para ihop fördefinierade händelser och kommandon att utföra i olika dialogrutor och bygga upp listor med dessa. Nästa variant är att låta

användaren skriva programmet i ett textbaserat scriptspråk. Den mest avancerade varianten använder grafisk programmering. Där skapas program genom att användaren kopplar ihop olika grafiska komponenter. Dessa komponenter motsvarar de olika konstruktioner man normalt hittar i ett textbaserat programmeringsspråk.

Export/Import av data

De undersökta programmen har gemensamt att de kan exportera data till textfiler som sedan kan importeras i ibland annat Excel. Många program kan även exportera data från den

grafiska vyn i olika slags bildformat. Några program kan även importera data från olika typer av filer och ta med detta i beräkningarna. Ett av programmen exporterar och importerar data genom en databas istället för att använda textfiler.

Seriell kommunikation

Av de undersökta programmen är det bara två som stöder seriella I/O-portar (ej att förväxla med kommunikationen mellan enheten och datorn). Ett av dessa program har även stöd för enheter med ethernet-portar. Man väljer en port och ett protokoll att använda, sedan kan man skicka och ta emot data som används i programmet.

Hjälpmeny

Med programmen följer det antingen med separata omfattande manualer eller hjälp inbyggt i programmet. Många program har även exempel eller guider som visar hur programmet kan användas.

Figure

Figur 1: Olika varianter av USB I/O.
Tabell 1: Sammanställning av de undersökta programvarorna.
Tabell 3: Tid/prioritetstabell.
Figur 2: USB I/O Listing.
+7

References

Related documents

Vilken metod som används för att ansluta kameran till datorn och ställa in kameran i läget för anslutning beror på kameramodellen. Se Användarhandbok för kameran..

Du kan också överföra bilder till datorn genom att dra bilderna från kamerabläddrarfönstret och släppa dem i bläddrarområdet eller mappområdet i ZoomBrowser EX.. Andra

I del två installeras SCBs program PC-AXIS, som används för att bearbeta data från rAps internetdatabas1. Slutligen installeras SCBs diagramverktyg, som bland annat används till

Med stöd för USB PD 3.0 (upp till 60 W), ger USB Type-C-multiportadaptern dig möjligheten att strömförse och ladda din bärbara dator, samt strömförse din kringutrustning, när du

Denna 4-portars USB 3.0-hubb förvandlar din bärbara eller stationära dators USB-A-port till två vanliga USB-A-portar - en USB-A snabbladdnings port och en USB-C™-port.. Hubb

Tiden och kostnaderna som går åt för att förnya appar när verksamheten växer eller för att förvärva nya appar för nya anställda, kan vara enorma. Med ett flertal olika

• If you use an audio source/ hifi system which lacks a connection for a record player (RIAA), set the [ PHONO EQ / THRU ON ] switch (15) to PHONO EQ. The record player connection

Jakob: Då kanske det är svårt att svara även på nästa fråga men jag skall ställa den i alla fall… Ifall du har någon uppfattning om dom resurser som krävs för att köra