Transcript
Automatiseren van werkfiche
1
___________________________________________________________________________
Mededeling ___________________________________________________________________________
“Deze eindverhandeling was een examen; de tijdens de verdediging vastgestelde fouten werden niet gecorrigeerd. Gebruik als referentie in publicaties is toegelaten na gunstig advies van de KHBO- promotor, vermeld op het titelblad.”
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
2
___________________________________________________________________________
Woord vooraf ________________________________________________________ Voor het behalen van het diploma Professionele Bachelor Elektromechanica optie Automatisering moet er in het derde jaar een eindwerk gemaakt worden. De opdracht van het eindwerk werd gegeven door Elektro Decat, te Diksmuide. Bij deze zouden we graag de personen danken die ons hebben bijgestaan in deze opdracht. Eerst en vooral willen we onze binnenpromotor Ing. Coudeville bedanken, die ons geholpen heeft bij het vinden van een stageplaats maar ook voor de steun en kennis waarmee hij ons voorzien heeft. We danken ook Ing. Decat die ons het eindwerk heeft aangeboden. Voor de toffe sfeer willen we ook alle werknemers bij Elektro Decat bedanken. Ten slotte willen we ook onze ouders bedanken die het mogelijk maakten om deze opleiding te volgen. Ook vrienden en kennissen die ons gesteund hebben tijdens de moeilijkere tijden.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
3
___________________________________________________________________________
Abstract ________________________________________________________ Bij Elektro Decat wordt door de werknemers van het onderhoud een werkfiche ingevuld per dag. Dit vergt veel tijd omdat daar bovenop de secretaresse hiervan een digitale versie maakt voor verdere verwerking van de kostprijs naar de klant en het loon van de werknemer. De opdracht is een studie om deze invoer zoveel mogelijk direct te digitaliseren op basis van vooraf gekozen hardware. De oplossing moet tegemoetkomen aan een laag verbruik, gemakkelijk modulair werken, vervangbaar zijn door een ander systeem en een zo laag mogelijke kostprijs. Bijkomende eisen waren namelijk op het ontwikkelde systeem de planning te kunnen raadplegen en ter plaatse aanpassingen op de gegevens te kunnen aanbrengen. Alle bewerkingen gebeuren aan de hand van een 'touch screen'. Er werd gekozen voor een '‘embedded controller’' gebaseerd op een afgeleide versie van de debian-linux. Deze hardware integreert alle communicatie kanalen, ftp- mogelijkheden, webgericht werken, een ingebouwde database 'sqlite' en geheugenopslag. (Fox- board van Acme- systems). Het 'touch screen' is een 320*240 pixel- scherm van iLCD (DPP-3224). Alle software wordt in C geprogrammeerd.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
4
___________________________________________________________________________
Inhoudsopgave ________________________________________________________ Mededeling ............................................................................................................................1 Woord vooraf .........................................................................................................................2 Abstract..................................................................................................................................3 Inhoudsopgave .......................................................................................................................4 Lijst met figuren .....................................................................................................................5 Inleiding.................................................................................................................................7 1 Oplossingsmogelijkheden ..................................................................................................10 1.1 Tiris-systeem ..............................................................................................................10 1.2 PLC- systeem..............................................................................................................12 1.3 ‘Embedded systeem’...................................................................................................13 1.4 Cameraherkenningssysteem ........................................................................................14 2 Uitwerking ........................................................................................................................15 2.1 Keuzes........................................................................................................................15 2.2 FOX Board .................................................................................................................15 2.3 Touch screen...............................................................................................................18 2.3.1 Elo’s touch screen ................................................................................................18 2.3.2 Demmel ‘touch screen’ ........................................................................................19 2.4 Badge systeem ............................................................................................................20 3 Programma’s en programmeertalen ...................................................................................21 3.1 C.................................................................................................................................21 3.1.1 Datatype...............................................................................................................21 3.1.2 Programmastructuur.............................................................................................21 3.1.3 Pointers................................................................................................................21 3.1.4 Voor- en nadelen van C........................................................................................22 3.3 Dev-C++ voor windows..............................................................................................23 3.3 Databases en SQL.......................................................................................................24 3.3.1 Enkele Begrippen.................................................................................................24 3.3.2 SQLite .................................................................................................................26 3.3.3 MySQL................................................................................................................27 3.3.4 SQLite in C..........................................................................................................28 3.3.4.1 Een database openen......................................................................................28 3.3.4.2 Een database sluiten ......................................................................................28 3.3.4.4 Gebruik van pointers .....................................................................................28 3.4 SQLite Administrator..................................................................................................30 4 Datacommunicatie.............................................................................................................31 4.1 Communicatie via RS232 ...........................................................................................32 4.2 Netwerkcommunicatie ................................................................................................38 4.2.1 Web acces en CGI................................................................................................39 4.2.2 TELNET acces.....................................................................................................40 4.2.3 Toegang via hyperterminal...................................................................................42 5 Programmatie ....................................................................................................................43 5.1 Programmatie scherm .................................................................................................43 5.2 Programmatie databases..............................................................................................64 Besluit ..................................................................................................................................65 Bijlagen................................................................................................................................66 Literatuurlijst........................................................................................................................77 ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
5
___________________________________________________________________________
Lijst met figuren ___________________________________________________________________________ Figuur 1 Bedrijfsorganigram...................................................................................................8 Figuur 2 RFID-tag ................................................................................................................10 Figuur 3 Cameraherkenning .................................................................................................14 Figuur 4 Fox board ...............................................................................................................16 Figuur 5 connectors fox board ..............................................................................................17 Figuur 6 Carrier board ..........................................................................................................17 Figuur 7 Voorbeeld EloTouch ..............................................................................................18 Figuur 8 320x240 pixel, 5.7" ‘touch screen’ .........................................................................19 Figuur 9 badgesysteem .........................................................................................................20 Figuur 10 Dev-C...................................................................................................................23 Figuur 11 Sqlite....................................................................................................................26 Figuur 12 Dataverkeer tussen gebruiker en database via MySQL..........................................27 Figuur 13 SQLite Administrator ...........................................................................................30 Figuur 14 datacommunicatiesysteem ....................................................................................31 Figuur 15 RS232 ..................................................................................................................32 Figuur 16 Spanningen RS232 ...............................................................................................33 Figuur 18 Invloed van storing...............................................................................................34 Figuur 19 Vervormd signaal .................................................................................................34 Figuur 20 Storingsmarge digitaal signaal ..............................................................................34 Figuur 21 Pin connector RS232 ............................................................................................36 Figuur 22 De standaard home page van het FOX Board........................................................39 Figuur 23 inloggen in het FOX Board...................................................................................40 Figuur 24 commando 'top' ....................................................................................................41 Figuur 25 hyperterminalconfiguratie.....................................................................................42
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
6
___________________________________________________________________________
Alfabetische lijst van gebruikte symbolen en afkortingen ___________________________________________________________________________ RFID: Radio Frequency Identification PLC: Programmable Logic Controller PROFI-bus: Process Field Bus HMI: Human Machine Interface SQL: Structured Query Language DBMS: Database Management System TFT: Thin Film Transistor LCD: Liquid Crystal Display API: Application Programming Interface IDE: Integrated Development Environment DCE: Data Communication Equipment DTE: Data Terminal Equipment
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
7
___________________________________________________________________________
Inleiding ___________________________________________________________________________
Beschrijving van het bedrijf
Het bedrijf Electro Decat is gelegen te Pervijze. De zaakvoerder Ing. Lieven Decat, die tevens ook gestudeerd heeft aan het KHBO, runt dit bedrijf. Er zijn 5 projectleiders aanwezig (3 ingenieurs en 2 graduaten) die een groep of een aantal arbeiders geleid door een werfverantwoordelijke opdracht geeft en laat uitvoeren. Het totaal aantal arbeiders is op heden ongeveer 30, het aantal bedienden 9. Electro Decat houdt zich bezig met alle takken van de elektriciteit, hoogspanning, verlichting, telefonie, automatisering,… maar ook koeling, verwarming en energiewinning is één van hun activiteiten. Het bedrijf heeft zich in de loop der jaren gespecialiseerd in het uitvoeren van totaalprojecten gebruik makend van hun kennis en techniek.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
8
___________________________________________________________________________ Zaakvoerder
Technisch Verantwoordelijke
Administratief verantwoordelijke
Voorcalculatie
Boekhouder
Aankoop
Personeel
Verkoop
Administratie
Nacalculatie Magazijnbeheer
VGM zaken
Projectleider/ Werfopvolging
Projectleider/ Werfopvolging
Projectleider/ Werfopvolging
Werfverantwoordelijke
Werfverantwoordelijke
Werfverantwoordelijke
Uitvoerders
Uitvoerders
Uitvoerders
Tekenbureau
Figuur 1 Bedrijfsorganigram
Het bedrijf is aangesloten bij een adviesbureau dat advies levert over de efficiëntie van het plaatsen van installaties, energiebesparing, rendement en kostprijs. Het bedrijf is actief bij openbare diensten, grote en kleine industrie alsook privaat en dienstencentra. Er wordt voortdurend geïnvesteerd in nieuwe technieken, kwaliteit, opleidingen en materiaal. De arbeiders worden aangezet tot het volgen van opleidingen zodat ze de nieuwste technieken beheersen. Tevens wordt van de arbeiders verwacht een flexibele houding bij de klantenbediening nl. ‘7 op 7’ – service.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
9
___________________________________________________________________________
Probleemstelling Momenteel gebeurt de planning en het invullen van de werkfiches op deze wijze: De Firma maakt op voorhand een planning in Excel, deze planning toont een lijst met de verschillende wagens die het bedrijf bezit. Per wagen wordt er een aantal werknemers en een aantal werven toegekend. Deze planning wordt dan doorgegeven aan de werknemers zodat ze weten naar welke werf ze moeten gaan volgens de planning. Die planning moet dus bijna wekelijks bijgewerkt worden en door onvoorzienbare obstakels kunnen projecten langer uitlopen dan voorzien zodat de planning niet meer klopt. De werknemers komen toe op de firma en vertrekken. Onderweg of op de terugweg vullen ze een werkfiche in, die is persoonlijk voor elke werknemer. De werkfiche omvat de naam van de werf, beschrijving van het werk, aantal uren op de baan, aantal uren pauze en aantal kilometers. Later wordt dit document dan aan de secretaresse gegeven en die vult dit in op de computer en stuurt het door naar het sociaal kantoor. Het sociaal kantoor berekent dan hoeveel de werknemers moeten betaald worden voor de gewerkte uren en voor hun afgelegde kilometers, zo kan de firma ook het aantal kilometers doorrekenen naar de klanten.
Doelstelling Ontwerpen en realiseren van een automatische werkfiche. Data, zoals uur van vertrek en aankomst worden opgemeten, de rijdtijd, afstand, effectieve werkuren en pauzes worden via de computer in een database geplaatst. De gegevens worden dan doorgestuurd naar het sociaal kantoor waar de lonen van de werknemers worden uitgerekend. Bij het ontwerpen moet rekening gehouden worden met het verbruik en de efficiëntie van het systeem.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
10
___________________________________________________________________________
1 Oplossingsmogelijkheden 1.1 Tiris-systeem TIRIS is gebaseerd op RFID-technologie, RFID is een methode om op afstand informatie te lezen en op te slaan, de informatie bevindt zich in de zogenaamde RFID-tags die zich op de wagens of andere objecten bevinden. De tags kunnen actief of passief zijn, De actieve tags worden gevoed door een batterij en kunnen worden gelezen en geschreven met een tranciever die radiogolven zendt en ontvangt. De passieve RFIDtags zenden een antwoord door het omzetten van energie van de radiogolven. Deze kunnen alleen gelezen worden en hebben een kleiner geheugen. Dit geheugen wordt gebruikt om een uniek identificatienummer in op te slaan. De RFID-tag van TIRIS is een 120mm lange cilinder die werkt bij een resonantiefrequentie van 134,2kHz.
Figuur 2 RFID-tag
Een lus in de grond detecteert de tags en stuurt de informatie via een seriële poort door naar de computer. Elke wagen is voorzien van een tag, wanneer er een wagen over de lus rijdt wordt deze gedetecteerd en wordt de informatie van de tag doorgestuurd naar de computer. De gegevens kunnen de kentekenplaat en de gegevens van de bestuurder zijn. Deze gegevens komen in een database terecht samen met het uur waarop de lus de tag gedetecteerd heeft.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
11
___________________________________________________________________________ Voordeel: - een gemakkelijk systeem om te koppelen naar een database - geen of weinig programmering nodig, software is reeds beschikbaar - geen contact nodig ( zoals magnetische kaart) - geen zichtlijn (zoals streepjescode) - vervalsen van RFID- tags is zeer complex Nadeel:
Optie:
- Duur - De database opbouw is niet gekend zodat directe toegang onmogelijk is. - Steeds PC gebonden die 24h op 24 actief moet zijn. - het systeem kan later toegevoegd als voertuigherkenning.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
12
___________________________________________________________________________
1.2 PLC- systeem Bij dit systeem zouden we gebruik maken van een PLC, de PLC zou gekoppeld worden aan een PROFIbus (doorverbinden van sensoren) en een HMI- terminal. Aan de PC wordt een OPC- server gekoppeld die zorgt voor het beheer van de database Bij PLC hebben we keuze tussen verschillende merken zoals Siemens, Omron, Mitsubishi, Hitachi, Saia etc. PROFIbus is een 2-draads industriële datacommunicatiestandaard (veldbus) waarmee componenten zoals sensoren, actuatoren en controllers informatie uitwisselen om een complete besturing te automatiseren. PROFIbus is uitermate geschikt voor toepassingen in de productieautomatisering, gebouwautomatisering en procesindustrie. Een HMI systeem is aangesloten op de besturingseenheid (bijvoorbeeld een PLC) via een bussysteem. Het lezen en schrijven van data kan gebruik maken van vele soorten communicatie- kanalen zoals ethernet, PROFIbus, MPI, RS232, RS485, … Voordeel:
-
Opstellen van een systeem op basis van modules.
Nadeel:
-
Duur systeem (minstens € 10.000 hard- en software) Hoog energieverbruik (systeem moet 24 op 24 uur actief zijn)
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
13
___________________________________________________________________________
1.3 ‘Embedded systeem’ Hier maken we gebruik van een ‘embedded controller’,waaraan we aan een ‘touch screen’ koppelen waarmee we gegevens kunnen invoeren. De hardware laat op een directe wijze toe te communiceren serieel, USB of via natwerk. Er wordt gebruik gemaakt van 4 databases: een database met de voorspelling, een database met de wagens, 1 met de werven en 1 met werknemers. Dan is er het ‘touch screen’ waarin de werknemers moeten inloggen. Als ze ingelogd zijn komt op het scherm de planning die voor hen bestemd is, Bij wijziging van organisatie ten opzichte van wat de planning had toegewezen dan is wijziging mogelijk door invoer via het ‘touch screen’.
Voordeel:
Nadeel:
-
Gemakkelijke invoer van gegevens (ter plaatse en/of op afstand dmv. een PC) goedkoop (€1000 + kostprijs van sensoren) Zeer laag verbruik (minder dan 1Watt)
-
De wagens worden niet gedetecteerd. Zelf software schrijven.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
14
___________________________________________________________________________
1.4 Cameraherkenningssysteem Dit is een systeem waarbij men een camera plaatst die continu de wagens die voorbijrijden kan herkennen aan de hand hun kenteken. De kostprijs bepaalt hoe snel voorbijrijdende voertuigen kunnen herkend worden. Bij binnen of buiten rijden uit de firma zou de wagen telkens gedetecteerd worden. Dan kan het kenteken vergeleken worden met dat in de database. Het tijdstip waarop het voertuig geregistreerd wordt, wordt dan weggeschreven in een lijst. Dit is echter een te duur systeem ( 7000€ + 1200€ voor de camera). De software vereist een PC, die tevens een mildere verbruiker is. Onze toepassing zal daarenboven extra software vereisen.
Figuur 3 Cameraherkenning
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
15
___________________________________________________________________________
2 Uitwerking 2.1 Keuzes Tijdens het eindwerk hebben we enkele keuzes moeten maken. De belangrijkste beslissing was het totale systeem. Om het probleem uit te werken maken we gebruik van een ‘embedded controller’ en een ‘touch screen’. In samenspraak met onze binnenpromotor (Ing. Johan Coudeville) en buitenpromotor (Ing. Lieven Decat) is de keuze van ‘embedded controller’ gevallen bij het FOX Board, het board is relatief goedkoop, verbruikt zeer weinig (1 W) en heeft zeer veel mogelijkheden en is uitbreidbaar. Bij het kiezen van het scherm moeten we rekening houden dat het mogelijk moet zijn om het scherm te kunnen koppelen met het board, dit gebeurt serieel. Omdat we ook rekening moeten houden met prijs en verbruik hebben we gekozen voor het 5.7” ‘touch screen’ van Demmel.
2.2 FOX Board Het FOX board wordt geproduceerd door ACME systems. Het ‘Development board’ is reed voorzien van het standaard Linux OS samen met de meeste belangrijke applicaties en netwerktoepassingen. Het board in veel gebieden toepasbaar zoals netwerkapparatuur, webserver, gateways en embedded toepassingen. De prijs van het FOX Board is 135,00 € excl. BTW, de prijs van het carrier board is 69,00 € excl. BTW Het FOX Board werkt op een gestabiliseerde voeding van 5V maar wij maken ook gebruik van een carrier board zodat de spanning tussen 7 à 10 V mag zijn. Dit carrier board dient om het FOX Board op te plaatsen, het biedt een spanningsregelaar, toetsen, LED’s, RS232 omzetter, klok met batterij en connectors voor alle in- en uitgangen van het FOX Board. De voeding sluiten we aan op het carrier board die op zijn beurt voeding geeft aan het FOX Board. Het FOX Board heeft slechts een verbruik van 1W. Het FOX Board beschikt over 2 USB 1.1 poorten en een 100MBit ethernetaansluiting, er zijn ook 2 “40 pins sockets” aanwezig om het FOX Board op het carrier board aan te sluiten. Er zijn twee versies van het FOX Board verkrijgbaar, de ene versie heeft 4 MB flashgeheugen en 16MB ramgeheugen, de andere versie heeft 8 en 32MB. Wij hebben geopteerd voor 4MB flash en 16MB ram. Op het carrier board is er een seriële aansluiting voorzien, de RS232, met deze poort zullen we het ‘touch screen’ besturen.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
16
___________________________________________________________________________ Er is al software geïnstalleerd op het board zoals een webserver, telnet, FTP- server, SQLite, ... Op de website van ACME systems is er zeer veel informatie te vinden over het FOX Board, ook kun je er tutorials en programmavoorbeelden vinden. In het FOX Board zijn verschillende programmeertalen mogelijk zoals C, C++, PHP, Java, Phyton en TCL. Wij zullen hoofdzakelijk programmeren in C of in C++ omdat we in de les met die programmeertalen hebben leren werken.
Figuur 4 Fox board
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
17
___________________________________________________________________________
Figuur 5 connectors fox board
Figuur 6 Carrier board
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
18
___________________________________________________________________________
2.3 Touch screen 2.3.1 Elo’s touch screen Elektro Decat is reeds in het bezit van een ‘touch screen’, het gaat om een 19" LCD Rear-Mount Touchmonitor. Dit touchscreen verbruikt relatief weinig, slechts 50W. Dit ‘touch screen’ kan enkel op een windows systeem aangesloten worden omdat uitsluitend hiervoor voor windows xp stuurprogramma’s beschikbaar zijn.
Figuur 7 Voorbeeld EloTouch
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
19
___________________________________________________________________________ 2.3.2 Demmel ‘touch screen’ Onze keuze is gevallen op een Demmel product. Namelijk de 320x240 Pixel iLCD met ‘touch screen’ 5.7”. We hebben dit scherm gekozen omdat dit een klein verbruik heeft. En dus niet veel kost in het dagelijkse gebruik. We hebben een complete kit gekocht inclusief windowssoftware (die we wel niet kunnen gebruiken omdat het in Windows is maar het heeft een indicatie) en ook de kabels werden bijgeleverd. Men kan met dit scherm gebruik maken van seriële poort, USB en I²C. Er werd ook een document bijgeleverd met alle commando’s om het scherm aan te sturen, bijvoorbeeld een commando om het scherm te wissen (D E = Display Erase) of om het scherm te inverteren (D I = Display Invert).
De prijs van dit ‘Touch screen’ bedraagt 239€ ( exclusief BTW). Voordeel: Nadeel:
- matig verbruik - te programmeren via seriële poort en USB! - compact
Figuur 8 320x240 pixel, 5.7" ‘touch screen’
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
20
___________________________________________________________________________
2.4 Badge systeem Bij het binnenkomen in de firma moet elke werknemer inloggen voordat ze hun gegevens kunnen bewerken. Daarvoor zijn verschillende mogelijkheden. Ten eerste kunnen we een badge. Hierbij zouden we een ROSSLARE AY-X12
Figuur 9 badgesysteem
Het probleem hierbij is dat dit een prijs (200€) heeft en dit vraagt ook vermogen, terwijl we evengoed kunnen op het scherm de werknemer een code laten ingeven. In plaats van een badge moet elke werknemer dus een persoonlijke code hebben om zich in te loggen.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
21
___________________________________________________________________________
3 Programma’s en programmeertalen 3.1 C 3.1.1 Datatype Bij de C-taal gebruiken we elementaire datatypes waartussen conversie mogelijk is. Conversie kan door middel van zogenaamde casts, de datatypes hoeven niet van dezelfde grootte te zijn, hoewel dit wel aan te raden is. De datarepresentatie van een type op de machine wordt niet door de taal voorgeschreven; een variabele van het type int (een verkorting van het Engelse integer, wat "geheel getal" betekent) kan dus tussen verschillende machines verschillen en bijvoorbeeld 16 of 32 bits lang zijn. 3.1.2 Programmastructuur De taal C is procedureel. Alle code is onderdeel van een functie. Het hoofdprogramma dat 'main' heet, is zelf ook een functie. De lusconstructies zijn de for- , while- en do- while statements. Een GOTO- statement is ook beschikbaar, maar gebruik hiervan wordt in de informatica ontraden, voor doeleinden anders dan fout- exit constructies. Ook werkt C met logische operatoren als and (&&), or (||) en not (!) en het if- statement, waarvan de if-else versie verkort als condition?statement:statement; geschreven kan worden. Er zijn een aantal increment- en decrementoperatoren die bij veel processors als machinetaalinstructies aan arraybewerkingen kunnen worden gekoppeld (bv. a = b[x++]; betekent: a krijgt de waarde in b[x] en x wordt daarna 1 opgehoogd). Voor veel processoren (80x86, 68xxx) is dit een enkele machinetaalinstructie. Statements worden door een puntkomma afgesloten. Indices van arrays beginnen bij nul. 3.1.3 Pointers C geeft directe toegang tot het geheugen met behulp van pointers, dit is een variabele die naar een geheugenadres wijst waar een andere variabele is opgeslagen. Dit kan weer een pointer zijn. Het gebruik hiervan heeft vele voordelen, men kan bijvoorbeeld een pointer doorgeven aan een functie, zodat deze de variabele waarnaar de pointer wijst, direct kan wijzigen. Dit is voordelig qua geheugengebruik, want er hoeft geen kopie van de variabele gemaakt te worden en er hoeven geen globale variabelen gedefinieerd te worden door de programmeur. Er zijn echter ook valkuilen: als men een pointer voortijdig wijzigt, d.w.z. voordat de geheugenplaats is vrijgegeven, kan het programma niet langer de geheugenplaats waarnaar de pointer wees, aanspreken. Staat zo een constructie in een lus, bijvoorbeeld een while- loop, dan kan dat een zogenaamd geheugenlek opleveren. ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
22
___________________________________________________________________________ 3.1.4 Voor- en nadelen van C Zoals gezegd is C een taal die tamelijk dicht aansluit bij de hardware. Dat heeft zowel voor- als nadelen. Voordelen zijn dat C voor van alles gebruikt kan worden en erg snel is. Nadelen zijn dat de taal niet erg vergevingsgezind is m.b.t. fouten en dat de C- compiler weinig controles uitvoert (hoewel die controles met diverse tools alsnog uitgevoerd kunnen worden). Een C- programma dat door de C- compiler correct wordt bevonden, hoeft niet per definitie goed te functioneren. Een oorzaak van vele problemen hier situeert zich ter hoogte van het gebruik van pointers, dit is dan ook de reden waarom deze in afgeleide talen zoals Java en C# achterwege gelaten zijn. Een bekend spreekwoord over C is "C provides all the rope you need to hang yourself" ("C levert al het touw dat je nodig hebt om jezelf op te hangen"). Er kan veel met C, maar alleen als je echt weet wat je doet. Daarom vind je deze taal veel in de technische wereld. Besturingssystemen als Unix en Windows worden grotendeels in C geschreven. Vaak wordt er een combinatie gebruikt van C en C++, zoals bij Windows, waarbij C wordt gebruikt voor de kernel en C++ voor de overige componenten. Een ander veelgebruikt alternatief is een combinatie van C en (ingebedde) assembler, dit komt dan terug voor bij de Linux kernel, deze is quasi volledig in C geschreven met enkele low level zaken in assembler. Voor vrijwel iedere processor (processor zowel in de context als processor als microcontroller) is een Ccompiler beschikbaar. Dientengevolge kent de taal C een hoog percentage professionele programmeurs.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
23
___________________________________________________________________________
3.3 Dev-C++ voor windows We gebruiken als IDE (Integrated Development Environment) “DevC++”. Deze IDE maakt gebruik van een GCC- compiler, die parallel loopt met GCC onder Linux. Dev-C++ is een gratis en Open Source C en C++ compiler, ontwikkeld door BloodShed Software. Hiermee kan je programma’s in C en C++ schrijven en compileren. Een ander programma dat we konden gebruiken is Visual C van Microsoft, dit programma is echter niet gratis en is niet bruikbaar in de linuxomgeving.
Figuur 10 Dev-C
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
24
___________________________________________________________________________
3.3 Databases en SQL Om de voorspelling naar voor te brengen en alle gegevens van de wagens, personen etc. op te slaan, maken we gebruik van databases. Om databases te kunnen gebruiken bestaan er verschillende programma’s, de meeste gekende is MS Acces, andere zijn MySql en SQLite, Oracle en Sybase. Een database kan je zien als een digitaal archief, gemaakt om gemakkelijk data op te vragen en te gebruiken. Databases spelen een belangrijke rol voor het archiveren en bijhouden van gegevens bij bedrijven, in de wetenschap en soms ook voor privé gebruikt. SQL maakt voor de communicatie met het DBMS gebruik van zogenaamde query's. Een query is een reeks van ASCII-tekens en bevat telkens een opdracht die naar het DBMS wordt verzonden. Het DBMS zal op zijn beurt die opdracht interpreteren en uitvoeren en stuurt, indien nodig, een aantal gegevens terug naar de opdrachtgever. Met SQL kan je tabellen aanmaken, wijzigen, invullen en verwijderen. Daarbij is het niet belangrijk of de tabel een gedeelte van een andere tabel is. De tabel kan enkel in het geheugen voorkomen maar ook werkelijk in de database opgeslagen worden. 3.3.1 Enkele Begrippen API: Application Programming Interface (API) is een verzameling definities op basis waarvan een computerprogramma kan communiceren met een ander programma of onderdeel (meestal in de vorm van bibliotheken). Vaak vormen API's de scheiding tussen verschillende lagen van abstractie, zodat applicaties op een hoog niveau van abstractie kunnen werken en het minder abstracte werk uitbesteden aan andere API's. Soms wordt als synoniem voor API de benaming bibliotheek gebruikt, maar dit is niet helemaal juist: een API vormt de toegang tot de bibliotheek. De API is daarbij de definitie van functies en andere objecten die in de bibliotheek beschikbaar zijn voor de applicatie. Concreet vb. C language interface naar de SQLite library Relationele databases Een relationele database is een database die werkt volgens een relationeel model. De gegevens worden opgeslagen in tabellen waarin de rijen de soortgelijke groepen informatie, de records vormen, en de kolommen de informatie die voor elk record moet worden opgeslagen. ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
25
___________________________________________________________________________ Verschillende tabellen kunnen met elkaar worden verbonden door een kolom toe te voegen waarin een verwijzing naar een record in een andere tabel wordt opgenomen. Klanten: KlantID Naam 1 David 2 Hans | |___________ Facturen: FactuurID 1 2 3 4 5
Achternaam Copperfield Kazan
| | KlantID 2 1 2 2 1
bedrag 10 20 20 30 40
Query Met een query (vraagstelling) wordt in de informatica een opdracht bedoeld die aan een database wordt gegeven om een bepaalde actie uit te voeren, die ook potentieel gegevens kan teruggeven. Hoewel een query dus een vraag is en er altijd een antwoord van de database terugkomt, zijn er naast de hierboven genoemde voorbeelden (alleen "lees"-vragen), nog drie andere opdrachten die aan de database gegeven kunnen worden. Deze vier vragen worden ook wel CRUDoperaties genoemd. Deze letters staan voor: • • • •
Create (of insert): Toevoegen van nieuwe rijen aan de database Read (of select): Opvragen van gegevens Update: Wijzigen van gegevens Delete: Verwijderen van gegevens
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
26
___________________________________________________________________________ 3.3.2 SQLite SQLite is snel, compact, gratis en in C geschreven, SQLite is beschikbaar voor zowel Linux als Windows. SQLite zelf werkt alleen in commandline- mode, maar er zijn verschillende programma’s gemaakt die het de gebruiker gemakkelijker maken, voorbeelden hiervan zijn SQLite Administrator, SQLite Manager. Dit laatste programma doet méér dan de naam suggereert en levert een gebruikersinterface waarmee database gecreëerd en bevraagd kunnen worden Het verschil tussen SQLite en andere RDBMS is dat het hoofddoel van het programma simpel zijn is: - gemakkelijk uitvoeren - gemakkelijk functioneren - gemakkelijk in een groter programma uit te voeren - gemakkelijk te onderhouden en te wijzigen Volgens peilingen vinden de gebruikers SQLite zeer betrouwbaar, deze betrouwbaarheid is een gevolg van de simpliciteit. Hoe eenvoudiger het programma, hoe minder er verkeerd kan lopen. De simpliciteit kan een voordeel en een nadeel zijn, dit hangt af van wat de reden is van het gebruik van databases. Om die simpliciteit de bereiken zijn er veel functies opgeofferd geweest. Sommige van deze functies waren voor sommige mensen noodzakelijk. Als je als gebruiker deze functies zou nodig hebben, moet je overstappen naar een andere Database verwerker. Het komt er op neer als je snel en zeer gemakkelijk wil werken met databases dat je SQLite kan gebruiken, indien je met complexere databases bezig bent gebruik je beter een ander programma.
Figuur 11 Sqlite
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
27
___________________________________________________________________________ 3.3.3 MySQL MySQL is ook een open source RDBMS, dat gebruik maakt van SQL. MySQL werd vroeger vaak toegepast in combinatie met PHP bij gastenboeken en fora. Tegenwoordig wordt het ook vaker gebruikt bij verschillende internettoepassingen maar ook bij stand-alone software. Het MySQL-softwarepakket bevat onder meer een serverprogramma, mysqld genoemd. De ‘d’ in mysqld staat voor daemon, de Linux-term voor een proces dat netwerkconnecties aanneemt. MySQL draait op alle soorten besturingssystemen, Windows, Linux, Solaris, … MySQL is een werkelijke multi-user, multi-threaded SQL database server. MySQL was oorspronkelijk ontwikkeld voor TcX, omdat ze een SQL server nodig hadden die met zeer grote databases overweg kon. TcX gebruikt het nu sinds 1996 met databases met ongeveer 100 Gigabytes aan kritieke informatie
Figuur 12 Dataverkeer tussen gebruiker en database via MySQL
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
28
___________________________________________________________________________ 3.3.4 SQLite in C SQLite is gemaakt om zeer gemakkelijk vanuit een C- of C++ programma te kunnen werken. 3.3.4.1 Een database openen Door het commando sqlite_open te gebruiken open je een bestaande SQLite database of maak je een nieuwe database aan. Het eerste argument is de naam van de database, de bedoeling van het tweede argument is om aan te geven of de database gebruik zal worden om te lezen en te bewerken, of alleen om te lezen. Het derde argument is een pointen naar een string pointer. Als het derde argument niet NULL is en er komt een error voor tijdens het openen van een database, dan zal er een error opgeslaan worden van malloc(), *errmsg zal verwijzen naar die foutmelding. De calling- functie zorgt ervoor dat het geheugen terug vrij komt na de foutmelding. De naam van een SQLite database is de naam van het bestand waarin de database zich bevind. Als het bestand niet bestaat zal SQLite het bestand aanmaken en initialiseren. Als het bestand ‘alleen lezen ‘gemarkeerd is zal de database geopend worden maar zullen er geen wijzigingen aan kunnen gebracht worden. De hele database is opgeslagen in 1 enkel bestand maar bijkomende tijdelijke bestanden kunnen aangemaakt worden tijdens het uitvoeren van een SQLcommando. 3.3.4.2 Een database sluiten Om een database te sluiten in SQLite gebruik je de functie sqlite_close. Wanneer je bezig bent met wijzigingen aan te brengen tijdens de sqlite_close functie, dan zullen die wijzigingen ongedaan gemaakt worden. 3.3.4.4 Gebruik van pointers Voor verschillende redenen wordt er in de C taal erg veel met pointers gewerkt. Een van de belangrijkste daarvan is het efficiënt met geheugen omgaan. Wanneer b.v. een heel blok tekst moet worden verplaatst omdat dit naar het scherm moet worden afgedrukt, dan staat deze tekst twee maal in het geheugen. Niet alleen is dat verspilling van geheugenruimte, maar ook het kopiëren kost tijd. Veel slimmer is het om de printf functie enkel te vertellen waar de tekst staat. Het aanwijzen van een variabele doen we met pointers. Deze declareren we door bij de declaratie een asterisk voor de naam te zetten. Bijvoorbeeld op de volgende manier: ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
29
___________________________________________________________________________ Sqlite3 *dbpointer; Char *zErrMsgpointer =0; In deze variabele, zetten wij dus niet de waarde die wij willen onthouden, maar het geheugenadres ervan. Wanneer wij naast de bovenstaande declaraties nog eens de volgende twee hebben: sqlite db[10]; char zErrMsg; Dan kunnen wij de pointer van een waarde voorzien op de volgende manier: dbpointer = &db; zErrMsgpointer = &zErrMsg; Met &db wordt dus het adres van de variabele db bedoeld. Met *dbpointer bedoelen we de inhoud van de variabele waar de pointer naar verwijst. Werken met pointers is een belangrijke reden waarom in C snelle en efficiënte code mogelijk is. We hoeven n.l. niet steeds een geheugenblok naar een functie te sturen. Enkel het adres ervan is voldoende. Ook kan een functie in C niet meer dan een waarde terug leveren. Maar door nu middels een pointer het adres van een geheugenblok terug te geven, kan dus ook de inhoud van b.v. een database doorgegeven worden.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
30
___________________________________________________________________________
3.4 SQLite Administrator Om de databases die we gebruiken visueel voor te stellen maken we gebruik van SQLite Administrator. Met dit freeware programma kan je gemakkelijk een database die je in SQLite gemaakt hebt aanpassen.
Figuur 13 SQLite Administrator
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
31
___________________________________________________________________________
4 Datacommunicatie Datacommunicatie of teleprocessing is de combinatie van twee technieken, nl. van DATAprocessing d.i. het verwerken van informatie d.m.v. een computersysteem en teleCOMMUNICATIE (datatransmissie) d.i. de overdracht van gecodeerde informatie.
Figuur 14 datacommunicatiesysteem
Datacommunicatie is de verzamelnaam voor allerlei vormen van informatie uitwisseling tussen computers. Computers in een kantoornetwerk wisselen informatie uit. Maar ook computers op verschillende locaties kunnen met elkaar in verbinding staan, via speciale datalijnen of gewone telefoonlijnen. De computers kunnen permanent met elkaar in verbinding staan, maar ze kunnen elkaar ook 'opbellen' op het moment dat het nodig is informatie uit te wisselen. Dat laatste is voor de meeste mensen de meest interessante vorm van datacommunicatie. Je belt dan met je eigen computer een andere computer op, wanneer je bepaalde informatie wilt inzien, een bericht wilt versturen, een programma wilt ophalen, e.d. Het apparaat wat dit mogelijk maakt, heet 'modem' (een samenvoeging van MOdulator/DEModulator). De modem zet computertaal om in geluidssignalen, die via een telefoonlijn getransporteerd kunnen worden. De modem aan de andere kant zet het signaal weer om in computertaal. Dataoverdracht Simplex Data kunnen maar in 1 richting reizen. Half Duplex Data kunnen in beide richtingen reizen, maar niet tegelijk Full Duplex Data kunnen in beide richtingen tegelijkertijd reizen. (Hiervoor heb je dus 2 lijnparen nodig) ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
32
___________________________________________________________________________
4.1 Communicatie via RS232
Figuur 15 RS232
Communicatie zoals die gedefinieerd is in de RS-232C standaard is een asynchrone seriële communicatie methode. Het woord serieel betekent dat de informatie bit voor bit wordt verzonden. Asynchroon leert ons, dat de informatie niet op vooraf afgesproken momenten wordt verzonden. Het verzenden van data kan op elk willekeurig moment starten en het is daarbij de taak van de ontvanger om te detecteren wanneer een boodschap start en eindigt. Asynchrone communicatie heeft zowel voordelen als nadelen. Geschiedenis
In de begin jaren 60, een standaard comité, vandaag bekend als de Electronic Industries Association, ontwierp een gewone standaard interface voor data communicatie apparatuur. In die tijd, werd er bij data communicatie gedacht dat het digitale data uitwisseling tussen een centrale mainframe computer en een terminal computer of misschien tussen twee terminals zonder een computer betekende. Deze apparaten waren met telefoon lijnen verbonden en hadden dus constant een modem nodig voor de signaal vertaling. Daardoor waren er dus veel mogelijkheden voor errors wanneer je data verplaatste door een analoog kanaal. Toen werd er bedacht dat er een standaard nodig was om voor een betrouwbare communicatie te zorgen en ten tweede dat er connectie kon plaats vinden tussen apparatuur van verschillende bedrijven. Deze ideeën zorgden ervoor dat de RS232 ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
33
___________________________________________________________________________ standaard geboren was. Het specificeerde signaal spanningen, signaal timing, signaal functies, een protocol voor informatie uitwisseling en mechanische connectoren. De RS in RS232 staat voor recommended standard Voor meer dan 30 jaar is deze standaard door ontwikkeld, de Electronic Industries Association publiseerde drie modificaties, de meest recent is de EIA232 standaard geintroduceerd in 1991. Volgens de originele seriële poort standaard is de snelheid gelimiteerd tot 20 kbps, maar in de praktijk blijken veel hogere bandbreedtes mogelijk. Om de limieten te overwinnen staat de nieuwe standaard RS232-E veel hogere communicatiesnelheden toe dan zijn voorgangers. Spanningen Het signaalniveau van de RS232 pinnen kan zich in twee toestanden bevinden. Een hoog bit, ofwel een marking status, wordt aangegeven met een negatieve spanning, terwijl een laag bit of space status herkenbaar is aan een positieve spanning. Dit kan verwarrend overkomen, omdat normaal hoge logische waardes worden gerepresenteerd door hoge spanningen. De spanningslimieten worden in de volgende tabel getoond.
RS232 spanningen Niveau
Zender grenswaarden (V)
Ontvanger grenswaarden (V)
Space status (0)
+5 ... +15
+3 ... +25
Mark status (1)
-5 ... -15
-3 ... -25
Ongedefiniëerd
-
-3 ... +3
Figuur 16 Spanningen RS232
De RS-232 standaard beschrijft een communicatie methode waarmee het mogelijk is om te communiceren onder verschillende omstandigheden. Dit heeft invloed op de maximaal toelaatbare spanningen op de pinnen. In de originele definitie zijn de technische mogelijkheden van die tijd meegenomen. De maximale baud rate die gedefiniëerd is bijvoorbeeld 20 kbps. Met tegenwoordige elektronica als de 16550A UART zijn maximale snelheden van 1,5 Mbps mogelijk.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
34
___________________________________________________________________________ Een storing beïnvloedt de signaalvorm waardoor de betekenis verdwijnt.
Figuur 17 Invloed van storing
De bedrading (capacitief en inductief gedrag van de kring) kan het signaal vervormen met alle gevolgen qua leesbaarheid.
Figuur 18 Vervormd signaal
De uitgang produceert steeds een waarde verschillend aan datgene wat vereist is. De afstand tussen het geproduceerde en het vereiste noemt men de storingsmarge of ‘noisemargin’. Hieronder is dit weergegeven voor een digitaal signaal.
Figuur 19 Storingsmarge digitaal signaal
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
35
___________________________________________________________________________ RS-232 connector pin-toewijzingen De rs232-c standaard beschrijft de interface tussen een Data communication Equipment of kortweg DCE, en Data Terminal Equipment of kortweg DTE. Om de aansluitingen van deze standaard goed te begrijpen is het noodzakelijk het verschil aan te duiden tussen DTE en DCE. DCE : Is dat toestel dat een verbinding tot stand kan brengen, onderhouden en afbreken. Dikwijls kan het ook niveauspanningen verwezenlijken, bv. TTL naar RS-232-C of omgekeerd. Dit is het Fox board bij ons. DTE : Is dat toestel dat data voor een DCE kan leveren of data van een DCE kan opnemen. Bij ons is dit dus het schermpje. De RS-232 connector is oorspronkelijk ontworpen om 25 pinnen te benutten. Bij deze indeling was onder meer ruimte gemaakt voor een secundair communicatiekanaal. In de praktijk wordt slechts één communicatiekanaal met bijbehorende handshake lijnen gebruikt. De 16 pinnen die in tegenstelling tot de 25 pins connector niet gebruikt worden, voeren signalen uit met betrekking tot een secundair kanaal. Om die redenen is de kleinere 9 pins versie nu populairder. Een voorbeeld van de RS-232 is het verbinden van een computer met een modem. In de computer kan je de male pluggen en in de modem de female.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
36
___________________________________________________________________________ 9 pin connector 9 Pin Connector on a DTE device (PC connection) Male RS232 DB9 Pin Number
Direction of signal:
1
Carrier Detect (CD) (from DCE) Incoming signal from a modem
2
Received Data (RD) Incoming Data from a DCE
3
Transmitted Data (TD) Outgoing Data to a DCE
4
Data Terminal Ready (DTR) Outgoing handshaking signal
5
Signal Ground Common reference voltage
6
Data Set Ready (DSR) Incoming handshaking signal
7
Request To Send (RTS) Outgoing flow control signal
8
Clear To Send (CTS) Incoming flow control signal
9
Ring Indicator (RI) (from DCE) Incoming signal from a modem Figuur 20 Pin connector RS232
- Transmitted Data Naam: BA Richting: DTE -> DCE CCITT: 103 Deze lijn wordt gebruikt voor data verzenden can de DTE naar de DCE. Hij wordt onderhouden op een logische 1 status wanneer niets wordt verzonden. De terminal zal beginnen met verzenden als de logische 1 present is op de volgende pinnen - Received Data Naam: BB Richting: DTE <- DCE CCITT: 104 Dit circuit wordt gebruikt om data te ontvangen van de DCE naar de DTE. De terminal zal met verzenden beginnen wanneer een logische 1 present is op de volgende pinnen - Request to Send Naam: CA Richting: DTE -> DCE CCITT: 105 Op deze pin zal de DTE een signaal zenden wanneer het data wil ontvangen van de DCE - Clear to Send Naam: CB Richting: DTE <- DCE CCITT: 106 Op deze pin zal de DCE een signaal zenden wanneer het data wil ontvangen van de DTE. ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
37
___________________________________________________________________________ - Data Set Ready Naam: CC Richting: DTE <- DCE CCITT: 107 Bij een logische level van 1, geeft deze lijn een seintje naar de DTE dat de DCE klaar is om data te zenden. - Received Line Signal Detector Naam: CF Richting: DTE <- DCE CCITT: 109 De DCE gebruikt deze lijn om een signaal naar de DTE te sturen dat een goed signaal is ontvangen. Voor een modem over een geschakeld telefoon netwerk moeten we nog twee signalen toevoegen: - Data Terminal Ready Naam: CD Richting: DTE -> DCE CCITT: 108.2 Wanneer een logische 1 is verzonden van de DTE dan kan de DCE starten om data te zenden en ontvangen. Wanneer deze lijn de logische 0 krijgt de DCE zal alle communicaties stoppen - Ring Indicator Naam: CE Richting: DTE <- DCE CCITT: 125 Deze lijn wordt meestal gebruikt bij communicatie software wanneer de modem is niet in de auto answer mode en zal aan de software melden dat een ander apparaat connectie probeert te maken
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
38
___________________________________________________________________________
4.2 Netwerkcommunicatie De standaard netwerk configuratie van het FOX Board. IP address: 192.168.0.90 Netmask: 255.255.255.0 Default gateway: 192.168.0.1
Om het FOX Board te verbinden met je PC via TCP/IP moet je het FOX Board met hetzelfde LAN- adres bereik configureren met een keuze van IP- adressen tussen 192.168.0.2 tot 192.168.0.89 en van 192.168.0.91 tot 192.168.0.254. ( dit is een netwerk klasse C) Enkele geldige IP- adressen voor uw PC kunnen zijn: 192.168.0.2 192.168.0.10 192.168.0.92 192.168.0.192
... Als de LAN- instellingen juist geconfigureerd zijn kan je pingen naar het FOX Board met : ping 192.168.0.90 wanneer dit gebeurd is zou je het gele LED moeten zien oplichten en kun je op de PC de reactietijd van het commando waarnemen. Vanaf nu kan je je aanmelden op het FOX Board via : •
•
•
Web acces en CGI Het FOX Board heeft reeds een webserver geïnstalleerd staan die actief is op poort 80. TELNET acces Op het FOX Board is er constant een TELNET- server actief op poort 23. FTP acces Op het FOX Board is er ook constant een FTP- server actief die werkt op poort 21.
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
39
___________________________________________________________________________ 4.2.1 Web acces en CGI Als de PC verbonden is met het FOX Board moet je gewoon deze link volgen: • http://192.168.0.90 Dan krijg je dit als webpagina:
Figuur 21 De standaard home page van het FOX Board
De standaard home page van het FOX Board komt rechtstreeks uit het bestand index.html die opgeslagen is in /usr/html/. Deze directory bevindt zich in het flash geheugen van het FOX Board en is een ‘alleen lezen’ bestand, zodat je de inhoud niet kan wijzigen. Om de inhoud van de standaard home page te wijzigen of pagina’s toe te voegen moet dit in de folder /usr/html/local. Deze bevindt zich altijd in het flash geheugen maar in de lees/schrijf zone.
Veranderen van de webserver configuratie Het webserverprogramma dat gebruikt wordt bij het FOX Board noemt BOA. Op de officiële BOA website ( http://www.boa.org ) vind je veel informatie en documentatie terug over deze kleine en snelle webserver. De configuratie van deze webserver kan je terug vinden op de locatie /etc/httpd/conf/boa.conf. deze configuratie kan je wijzigen via deze link : •
http://192.168.0.90/admin-bin/editcgi.cgi?file=/usr/html/index.html
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
40
___________________________________________________________________________ Hier kan je bijvoorbeeld de standaard home page ( /usr/html/index.html ) wijzigen door een nieuwe pagina ( /usr/local/index.html ) door deze lijnen te wijzigen:
DocumentatRoot /usr/html door DocumentRoot /usr/html/local Daarna sla jet nieuwe boa.conf bestand op. Om de wijzegingen effectief te maken moet je de boa-service heropstarten door dit commando in te voeren : /etc/init.d/httpd restart Als je nu opnieuw de standaard webpagina opvraagt krijg je de zelf gekozen pagina. •
http://192.168.0.90
4.2.2 TELNET acces Het FOX Board heeft standaard een TELNET server geïnstalleerd die een verbinding maakt naar de FOX Board Shell van het netwerk.
Telnet acces vanuit Windows Windows heeft een standaard telnet client die toegankelijk is vanuit Commando prompt door het aanhalen van : C:\> telnet 192.168.0.90 Als het FOX Board zichtbaar is in het netwerk zal gevraagd worden naar een gebruikersnaam door het volgende bericht: axis login: root Daarna wordt het paswoord gevraagd: Password: pass Het paswoord is standaard pass.
Figuur 22 inloggen in het FOX Board
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
41
___________________________________________________________________________ Wanneer je ingelogd bent in het FOX Board kan je rechtstreeks commando’s invoeren. Bijvoorbeeld het commando : [root@axis /root]99# top
dit commando heeft alle processen en programma’s weer die op dit moment uitgevoerd worden op het systeem.
Figuur 23 commando 'top'
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
42
___________________________________________________________________________ 4.2.3 Toegang via hyperterminal Een alternatief voor telnet is HyperTerminal. HyperTerminal kan je opstarten via: Start -> Alle programma’s -> Bureau-accessories -> Communicatie -> Hyper Terminal
Bij het menu eigenschappen kan je de verbindingseigenschappen instellen naar de modus Winsock, gespecificeerd met het IP- adres van het FOX Board ( 192.168.0.90 ) en het poortnummer 23 zoals in de volgende figuur:
Figuur 24 hyperterminalconfiguratie
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
43
___________________________________________________________________________
5 Programmatie 5.1 Programmatie scherm 1) openingsscherm
• Clear screen : • Rechthoek links : •
•
•
Linksboven: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn: linksonder: 1. tekst: 2. lijn: centraal: logo decat 1. laden logo: 2. positie logo: 3. starten logo:
DE D R mode width_hb width_lb heigth_hb height_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb T D field_LOG IN D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null (invoegen tijd??) D L end_x_hb end_x_lb end_y_hb end_y_lb
g L anim_loc index_hb index_lb g L anim_loc pos_x_hb pos_x_lb pos_y_hb pos_y_lb g S anim_loc
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
44
___________________________________________________________________________ 2) Werknemer kiezen
• Clear screen : • Rechthoek links :
DE D R mode width_hb width_lb heigth_hb heigth_lb
Linksboven: 1. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb 2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb • linksonder: 1. tekst: D T char1 char2 … null 2. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb • scroll up screen: D S U scroll_y_hb scroll_y_lb • scroll down screen: D S D scroll_y_hb scroll_y_lb • werknemer: 1. tekst: D T char1 char2 … null 2. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb 4. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic •
Automatiseren van werkfiche
45
___________________________________________________________________________ •
bevestigingsknop: 1. touch field: • hoogte: •
breedte:
T A field_idx key T H height_hb height_lb T W width_hb width_lb
2. tekst:
D T char1 char2 … null
3. lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
46
___________________________________________________________________________ 3) code werknemer ingeven
• •
Clear screen : Rechthoek links :
•
Linksboven: 1. touch field: • hoogte: • breedte: 2. tekst:
•
•
•
3. lijn: code: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn: linksonder: 1. tekst: 2. lijn: 9 touch fields: 1. lijnen(4):
DE D R mode width_hb width_lb heigth_hb heigth_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
47
___________________________________________________________________________
2. touch field(9):
•
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key
•
hoogte:
T H height_hb height_lb
•
breedte:
T W width_hb width_lb
bevestigingsknop: 1. touch field: • • 2. tekst: 3. lijn:
hoogte: breedte:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
48
___________________________________________________________________________ 4) Meldingen
• •
Clear screen : Rechthoek links :
•
Linksboven: 1. touch field:
•
DE D R mode width_hb width_lb heigth_hb heigth_lb T A field_idx key
• hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb 2. tekst: D T char1 char2 … null • lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb Dag 1. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb 2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb 4. werk: • touch field: T A field_idx key hoogte: T H height_hb height_lb breedte: T W width_hb width_lb • tekst: D T char1 char2 … null • lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb 5. Vervoer: • touch field: T A field_idx key
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
49
___________________________________________________________________________ hoogte: breedte: • tekst: • •
Pauzes: 1. touch field: • • 2. tekst: 3. lijn:
•
• • •
lijn:
hoogte: breedte:
T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
4. Log uit: • touch field: T A field_idx key hoogte: T H height_hb height_lb breedte: T W width_hb width_lb • tekst: D T char1 char2 … null • lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb linksonder: 1. tekst: D T char1 char2 … null 2. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb tekst: D T char1 char2 … null rechthoek: D R mode width_hb width_lb heigth_hb heigth_lb tekst: D T char1 char2 … null
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
50
___________________________________________________________________________ 5) Kiezen voor welke dag je invult
• •
Clear screen : Rechthoek links :
•
Linksboven: 1. touch field: hoogte: breedte: 2. tekst: 3. lijn: Dag: 1. touch field: hoogte: breedte: 1. tekst: 2. lijn: werk: 1. touch field: hoogte: breedte:
•
•
2. tekst: 3. lijn:
DE D R mode width_hb width_lb heigth_hb heigth_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
51
___________________________________________________________________________ 4. Vervoer:
•
touch field: hoogte: breedte: tekst:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null
•
lijn:
D
•
L
end_x_hb
end_x_lb
end_y_hb
end_y_lb 5. Pauzes:
•
•
touch field: T A field_idx key hoogte: T H height_hb height_lb breedte: T W width_hb width_lb
• •
tekst: lijn: end_y_lb
Log uit: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn: 4. linksonder: tekst: lijn:
tekst: lijn:
5. week: rechthoek: •
tekst:
Dag: 1. rechthoek:
2. tekst: • rechthoek:
D T char1 char2 … null D L end_x_hb end_x_lb
end_y_hb
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D R mode width_hb width_lb heigth_hb heigth_lb D T char1 char2 … null D R mode width_hb width_lb heigth_hb heigth_lb D T char1 char2 … null D R mode width_hb width_lb heigth_hb heigth_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
52
___________________________________________________________________________ • driehoek up: 1. driehoek: lijn: lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb
• lijn: 2. touch field:
D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key
• •
•
hoogte:
T H height_hb height_lb
•
breedte:
T W width_hb width_lb
• driehoek down: 1. driehoek: • lijn: • lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb
• lijn: 2. touch field: hoogte: breedte:
D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
• lijn: • OK: 1. touch field: • hoogte: • breedte: 2. tekst:
D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
53
___________________________________________________________________________ 6) kiezen wat voor werk je doet en waar en hoeveel uur
• •
Clear screen : Rechthoek links :
•
Linksboven: 1.touch field: • hoogte: • breedte: 2. tekst: 3. lijn: Dag: 1.touch field: • hoogte: • breedte: 2.tekst: 3.lijn: werk: 1.touch field: • hoogte: • breedte: 2.tekst: 3.lijn:
•
•
DE D R mode width_hb width_lb heigth_hb heigth_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
54
___________________________________________________________________________ •
Vervoer: 1. touchfield: • •
hoogte: breedte:
2. tekst: •
3. lijn: Pauzes: 1.touch field: •
hoogte:
• breedte: 2.tekst: 3.lijn: •
Log uit: 1.
touch field: • hoogte: • breedte: 2. tekst: 3. lijn:
•
•
linksonder: 1. tekst: 2. lijn: tekst: werk werf/km uren
•
rechthoek:
•
lijn(4)
•
tekst:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D T char1 char2 … null D T char1 char2 … null D R mode width_hb width_lb heigth_hb heigth_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb
OFF: DORD: WN:
D T char1 char2 … null D T char1 char2 … null D T char1 char2 … null
•
touch field(6): hoogte: breedte:
T A field_idx key T H height_hb height_lb T W width_hb width_lb
•
rechthoek:
D R mode width_hb width_lb heigth_hb heigth_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
55
___________________________________________________________________________ • driehoek up: 1. driehoek: lijn: lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb
• lijn: 2. touch field:
D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key
• •
•
hoogte:
T H height_hb height_lb
•
breedte:
T W width_hb width_lb D L end_x_hb end_x_lb end_y_hb end_y_lb
• lijn: • driehoek down:
•
1. driehoek: • lijn: • lijn: • lijn: 2. touch field: • hoogte: • breedte: Terug: 1. rechthoek: 2. tekst: 3. touch field: • •
hoogte: breedte:
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D R mode width_hb width_lb heigth_hb heigth_lb D T char1 char2 … null T A field_idx key T H height_hb height_lb T W width_hb width_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
56
___________________________________________________________________________ 7) Keuze mobiliteit
• •
Clear screen : Rechthoek links :
•
Linksboven: 1. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb 2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb Dag: 1. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb 2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb
•
•
werk: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn:
DE D R mode width_hb width_lb heigth_hb heigth_lb
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
57
___________________________________________________________________________ •
•
•
Vervoer: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb
Pauzes: 1. touch field: • hoogte: • breedte: 2. tekst:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null
3. lijn: Log uit: 1. touch field: • hoogte: • breedte:
D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb • linksonder: • tekst: D T char1 char2 … null • lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb • tekst: mob A D T char1 char2 … null mob B D T char1 char2 … null mob C D T char1 char2 … null • Ja/Nee(3) mob A: 1. rechthoek: 2. lijn 3. tekst(2) 4. touch field: • hoogte: • breedte: mob B: 1. rechthoek:
D R mode width_hb width_lb heigth_hb heigth_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D T char1 char2 … null T A field_idx key T H height_hb height_lb T W width_hb width_lb
D R mode width_hb width_lb heigth_hb heigth_lb 2. lijn D L end_x_hb end_x_lb end_y_hb end_y_lb 3. tekst(2) D T char1 char2 … null D T char1 char2 … null 4. touch field: T A field_idx key ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
58
___________________________________________________________________________ • •
hoogte: breedte:
mob C: 1. rechthoek: 2. lijn 3. tekst(2) 1. touch field: • hoogte: • breedte: •
T H height_hb height_lb T W width_hb width_lb D R mode width_hb width_lb heigth_hb heigth_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D T char1 char2 … null T A field_idx key T H height_hb height_lb T W width_hb width_lb
Ok: 1. rechthoek: heigth_lb 2. tekst: 3. touch field: • hoogte: • breedte:
D
R
mode
width_hb
width_lb
heigth_hb
D T char1 char2 … null T A field_idx key T H height_hb height_lb T W width_hb width_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
59
___________________________________________________________________________ 8) Pauze
• •
Clear screen : Rechthoek links :
•
Linksboven: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn: Dag: 1. touch field: • hoogte: • breedte:
•
DE D R mode width_hb width_lb heigth_hb heigth_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb • werk: 1. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb 2. tekst: D T char1 char2 … null 3. lijn: D L end_x_hb end_x_lb end_y_hb end_y_lb • Vervoer: 1. touch field: T A field_idx key • hoogte: T H height_hb height_lb • breedte: T W width_hb width_lb ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
60
___________________________________________________________________________ 2. tekst: 3. lijn: •
•
Pauzes: 1. touch field: • hoogte: • breedte:
D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
2. tekst:
D T char1 char2 … null
3. lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb
Log uit: 1. touch field: • hoogte: • breedte:
2. tekst: 3. lijn: • linksonder: • tekst: • lijn: • tekst: ochtend middag • rechthoek(2):
• tekst(2): • rechthoek:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D T char1 char2 … null D R mode width_hb width_lb heigth_hb heigth_lb D R mode width_hb width_lb heigth_hb heigth_lb D T char1 char2 … null D T char1 char2 … null D R mode width_hb width_lb heigth_hb heigth_lb
• driehoek up: 1. driehoek: • lijn: • lijn: • lijn: 2. touch field: • hoogte: • breedte:
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
• driehoek down: 1. driehoek: • lijn: • lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb D L end_x_hb end_x_lb end_y_hb end_y_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
61
___________________________________________________________________________ • lijn: 2. touch field: • hoogte: • breedte: • bevestigen: 1. rechthoek:
D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D R mode width_hb width_lb heigth_hb heigth_lb
2. tekst: 3. touch field: • hoogte: • breedte:
D T char1 char2 … null T A field_idx key T H height_hb height_lb T W width_hb width_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
62
___________________________________________________________________________ 9) Bevestigen
• •
Clear screen : Rechthoek links :
•
Linksboven: 1. touch field: • hoogte: • breedte:
•
•
2. tekst: 3. lijn: Dag: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn: werk: 1. touch field: • hoogte: • breedte:
DE D R mode width_hb width_lb heigth_hb heigth_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
63
___________________________________________________________________________ 2. tekst: 3. lijn: •
•
Vervoer: 1. touch field: • hoogte: • breedte:
D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb
2. tekst:
D T char1 char2 … null
3. lijn:
D L end_x_hb end_x_lb end_y_hb end_y_lb
Pauzes: 1. touch field: • hoogte: • breedte:
2. tekst: 3. lijn: • Log uit: 1. touch field: • hoogte: • breedte: 2. tekst: 3. lijn: • linksonder: 1. tekst: 2. lijn: • bevestigen: 1. rechthoek: 2. tekst: 3. touch field: • hoogte: • breedte:
T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb T A field_idx key T H height_hb height_lb T W width_hb width_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D T char1 char2 … null D L end_x_hb end_x_lb end_y_hb end_y_lb D R mode width_hb width_lb heigth_hb heigth_lb D T char1 char2 … null T A field_idx key T H height_hb height_lb T W width_hb width_lb
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
64
___________________________________________________________________________
5.2 Programmatie databases #include #include #include #include
using namespace std; static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i
using namespace std; static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i #include #include #include #define MAXLEN 32 grote #define MAXQRY 200
// constanten vastleggen met
using namespace std; static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i
using namespace std; // callback functie static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i
using namespace std; static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i waar sql commando's moeten komen in arrayvorm rc = sqlite3_exec(db, // met "DROP" kan je een tabel uit een database verwijderen "DROP TABLE test ", callback, 0, &zErrMsg); if ( rc!=SQLITE_OK ) // dit wordt uitgevoer als de database reeds bestaat { // %s : defineerd ruimte voor een string bij fprintf fprintf(stderr, "De database bestaat al: %s\n", zErrMsg); } //database sqlite3_close(db); sluiten system("PAUSE"); return EXIT_SUCCESS; }
Bijlage 5: Tabel updaten via queries met C ___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
71
___________________________________________________________________________ #include #include #include #include
using namespace std; static int callback(void *NotUsed, int argc, char **argv, char **azColName){ int i; for(i=0; i
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
72
___________________________________________________________________________ #include #include #include #include #include #include
#define
P_16
0xA001
#define FALSE1 0 maken... #define TRUE -1 #define TRUE2 1 #define FALSE 0
//define = constanten van
volatile int STOP=FALSE; #define SERIALPORT "/dev/ttyS3" #define BAUDRATE B115200 baudrate
//Instellen van de
unsigned short
update_crc_16(unsigned short crc , char c);
static int static unsigned short static void
crc_tab16_init = FALSE1; crc_tab16[256]; init_crc16_tab( void );
unsigned short update_crc_16( unsigned short crc, char c ) { unsigned short tmp, short_c; short_c = 0x00ff & (unsigned short) c; if ( ! crc_tab16_init ) init_crc16_tab(); tmp = crc ^ short_c; crc = (crc >> 8) ^ crc_tab16[ tmp & 0xff ]; return crc; } static void init_crc16_tab( void ) { int i, j; unsigned short crc, c; for (i=0; i<256; i++) { crc = 0; c = (unsigned short) i; for (j=0; j<8; j++) { if ( (crc ^ c) & 0x0001 ) crc = ( crc >> 1 ) ^ P_16; else crc = crc >> 1; c = c >> 1; }
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
73
___________________________________________________________________________ crc_tab16[i] = crc; } crc_tab16_init = TRUE2; }
// Hoofd programma int main(int argc, char *argv[]) { opnieuw: int serial; //serial is hier de file discriptor char in[50],controle[50]; char low_byte_controle_2, high_byte_controle_2; int write_controle; struct termios instellingen; //struct = class char invoer_string[50]; //array voor hex telegram char TELEGRAM[50]; int c,d,e,k,hulp; //int voor de for lussen... int teller; //om bij te houden hoeveel tekens er zijn ingetoets char *ptr, *dest,hex_val; unsigned short crc_16, low_byte, high_byte; unsigned short crc_16_controle, low_byte_controle, high_byte_controle; int aantal_in_input_buffer; FILE *fp; char eenwoord[50]; char q; int i; fp = fopen("test.txt", "r"); if (fp == NULL) { printf("Het bestand kon niet geopend worden\n"); exit (EXIT_FAILURE); } q = fgets(eenwoord, 50, fp); /* neemt een volledige lijn uit het bestand */ if (q != NULL){ printf("%s", eenwoord); } fclose(fp); printf("\n"); ptr = eenwoord; dest = eenwoord; while( *ptr && *ptr != '\r' && *ptr != '\n' ) { if ( *ptr >= '0' && *ptr <= '9' ) *dest++ = (char) ( (*ptr) '0' ); if ( *ptr >= 'A' && *ptr <= 'F' ) *dest++ = (char) ( (*ptr) - 'A' + 10 ); if ( *ptr >= 'a' && *ptr <= 'f' ) *dest++ = (char) ( (*ptr) - 'a' + 10 ); ptr++; }
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
74
___________________________________________________________________________ * dest = '\x80'; *(dest+1) = '\x80'; crc_16 = 0xffff; ptr = eenwoord; teller = 0; while ( *ptr != '\x80' ) { hex_val = (char) ( ( * ptr & '\x0f' ) << 4 ); hex_val |= (char) ( ( *(ptr+1) & '\x0f' ) ); crc_16 = update_crc_16(crc_16,hex_val ); TELEGRAM[teller]= hex_val; ptr += 2; teller += 1; } low_byte = crc_16/256; high_byte = crc_16%256; TELEGRAM[teller]=high_byte; TELEGRAM[teller+1]=low_byte; eenwoord[0] = 0; serial = open(SERIALPORT, O_RDWR | O_NOCTTY); //serial is de file discriptor if (serial < 0) //wanneer serial = -1 => ERROR ! { printf("Error, kon niet openen", SERIALPORT); return TRUE; } else { bzero(&instellingen, sizeof(struct termios)); //negeer instellingen van het OS // Setup instellingen voor de seriele poort // Baudrate, enable reading, local mode, 8 bits, 1 stopbit en geen parity instellingen.c_cflag = BAUDRATE | CREAD | CLOCAL | CS8; // No parity control or generation instellingen.c_iflag = IGNPAR; instellingen.c_oflag = 0; instellingen.c_lflag = 0; instellingen.c_cc[VMIN] = 1; // Block terminates with reception of 1 character instellingen.c_cc[VTIME] = 0; // nooit een time out tcsetattr(serial, TCSANOW, &instellingen); //bevestig instellingen voor de poort // Flush serial buffers tcflush(serial, TCIFLUSH); tcflush(serial, TCOFLUSH); write_controle = write(serial,TELEGRAM,(teller+2)); if (write_controle < 0) een error { printf("Fout bij versturen character"); } else
//je krijgt -1 bij
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
75
___________________________________________________________________________ { aantal_in_input_buffer = read(serial,&in,sizeof(in)); van het antwoord van de slave printf("Aantal in input buffer: "); printf("%d",aantal_in_input_buffer); printf("\n"); printf("Antwoord: \n");
//lezen
for (k = 0;k = 0) { printf("%02X ",in[k]); } else { hulp= 256 + in[k]; printf("%X ",hulp); } } // in[aantal_in_input_buffer] = 0; printf(" \n"); for(d=0;d<(aantal_in_input_buffer - 2) ;d++){ maken van de inkomende string zonder de crc! controle[d]=in[d]; } crc_16_controle = 0xffff;
//kopie
for(e=0;e<(aantal_in_input_buffer - 2) ;e++){ crc_16_controle = update_crc_16(crc_16_controle,controle[e]); } low_byte_controle = crc_16_controle/256; high_byte_controle = crc_16_controle%256; low_byte_controle_2 = low_byte_controle; high_byte_controle_2 = high_byte_controle; printf("Uigerekende crc van het antwoord: \n"); printf("%02X",high_byte_controle); printf(" "); printf("%02X",low_byte_controle); printf("\n"); if((in[aantal_in_input_buffer - 1] == low_byte_controle_2) && (in[aantal_in_input_buffer - 2]==high_byte_controle_2)) { printf("De communicatie is correct verlopen!\n"); in[aantal_in_input_buffer] = 0; }else{ printf("Er is een fout opgetreden tijdens de communicatie!\n"); in[aantal_in_input_buffer] = 0; } } } close(serial);
//sluiten van poort
aantal_in_input_buffer=0; c=0;
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
76
___________________________________________________________________________ k=0; d=0; e=0; hulp=0; teller=0; write_controle=0; goto opnieuw; return FALSE1; }
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic
Automatiseren van werkfiche
77
___________________________________________________________________________
Literatuurlijst Elektronische bronnen: Antratek Electronics Embedded Systems Tools & Modules. http://www.antratek.nl Anytime Anywhere learning http://www.aal.be/hardsoft/laptops/laptoptaal.htm Bloodshed Software – Dev-C++ www.bloodshed.net/devcpp.html Elektro Decat http://www.decat.be FOX Board documentation index http://www.acmesystems.it/?id=14 How Does a Touchscreen Work? http://www.touchscreens.com/intro-anatomy.html Next generation intelligent LCDs from demmel products http://www.demmel.com RFID / EPC Technology Solutions | Texas Instruments http://www.ti.com/rfid/default.htm Rosslare security http://www.rosslaresecurity.com/ Rumeco http://www.rumeco.nl/kentekenregistratie/ SQLite administrator – International Milestone Beta http://sqliteadmin.orbmu2k.de/ TFT schermen uitleg en kooptips http://www.tekstenuitleg.net/artikelen/tft_schermen/1 Touch screen monitors, touchscreens, kiosk touchmonitors, LCD and CRT touch monitors, touch com http://www.elotouch.com Wikipedia informatie over Sql, Sqlite, MySQL, C, profibus, HMI, C++ http://nl.wikipedia.org Gedrukte bronnen: Coudeville, J. (2006). Seriële communicatie. Oostende, KHBO departement IW&T. Coudeville, J. (2006). Netwerken. Oostende, KHBO departement IW&T. Owens. M. (2006). The Definitive Guide to SQLite. Texas, Fort Worth. ISBN 1590596730
___________________________________________________________________________ KHBO dep. IW&T Boone Kristof 2006-2007 Raes Frederic