Inhoudsopgave Inhoudsopgave...2 Inleiding...4 Project 1: Begroeting...4 Starten van Visual Basic...4 Programmeeromgeving...4 De werkbalk...4 Het formuliervenster...4 Het projectvenster...5 Het eigenschappenvenster...5 Het formulierpositievenster...6 De werkset...6 Het codevenster...7 Ontwikkelingsfases...8 Ontwikkelsfase...8 Uitvoeringsfase...8 Compilatie...8 Toepassing: begroeting...8 Doel...8 De lay-out...9 Werkwijze...9 Project 2: Conversie van inch naar cm...11 Doel...11 De lay-out...12 Werkwijze...12 Keypress...14 Project 3: Oscilloscoop...14 Doel...14 De lay-out...15 Werkwijze...15 Project 4: Transistor...18 Doel...18 De lay-out...18 Opgave...18 Programmacode...19 Project 5: Transistor 2...19 Doel...19 De lay-out...20 Programmacode...20 Project 6: Splash screen & Verkleuren van een vak...22 Doel...22 De lay-out...23 Programmacode...23 Splashscreen...23 Kleurknoppen...24 Project 7: Chronometer...24 Doel...24 De lay-out...24 www.ffxs.nl/diy-elektro - 2 - Visual Basic 6.0
Opgave...24 Programmacode...25 Bijlagen...26 Options Explicit...26 ASCII-code tabel...27 www.ffxs.nl/diy-elektro - 3 - Visual Basic 6.0
Inleiding Met behulp van Visual Basic 6.0 kan men gemakkelijk Windows-toepassingen voor de PC aanmaken. Visual Basic biedt een grafische omgeving waarin formulieren en besturingselementen voor toepassingen worden ontworpen. Deze cursus werd oorspronkelijk samen gesteld door ing. Van de Linden V. en later herwerkt door Nick Electronics. Project 1: Begroeting Starten van Visual Basic Via de knop Start, Programma s, Microsoft Visual Basic 6.0, Visual Basic 6.0, dubbelklik op StandardEXE komen we in de programmeeromgeving van Visual Basic. Programmeeromgeving De programmeeromgeving bestaat uit 7 verschillende componenten: De werkbalk; Het formuliervenster; Het projectvenster; Het eigenschappenvenster; Het formulierpositievenster; De werkset; Het codevenster. De werkbalk Is de knoppenbalk niet zichtbaar: View => Toolbars => Standard Het formuliervenster www.ffxs.nl/diy-elektro - 4 - Visual Basic 6.0
Dit is de werkruimte waar de opbouw van de gebruikersinterface wordt gemaakt. Er kan maar één formulier geopend zijn. Het formulier kan vergroot of verkleind worden door de gevulde blokjes (ankers) aan de randen te verslepen. Men kan het formulier minimaliseren en maximaliseren. De eigenschappen (properties) kunnen aangepast worden in het eigenschappenvenster. Het projectvenster Dit geeft een overzicht van de structuur van het gehele project. Een project kan uit verschillende formulieren, klassen en modules bestaan. Je kan dit het best vergelijken met het venster van de Windows Verkenner. Met de knoppen kan je overschakelen van formulierontwerpvenster naar codevenster en omgekeerd. Het eigenschappenvenster Dit venster geeft de eigenschappen of properties van de geselecteerde objecten. In dit geval worden de eigenschappen van het formulier weergegeven. Via deze lijst kan je de grootte, kleur, zichtbaarheid enz. aanpassen. Onderaan dit venster wordt een beknopte verklaring van de geselecteerde eigenschap gegeven. Is de uitleg onvoldoende, klik dan op die eigenschap en druk op F1. www.ffxs.nl/diy-elektro - 5 - Visual Basic 6.0
Het formulierpositievenster Hiermee bepaal je de positie van het formulier tijdens de run-fase. De werkset Hier zijn alle gereedschappen of controls te vinden om het formulier van objecten te voorzien. www.ffxs.nl/diy-elektro - 6 - Visual Basic 6.0
Het codevenster In dit venster wordt de programmacode geschreven, deze code is gekoppeld aan de objecten en de gebeurtenissen van het formulier. www.ffxs.nl/diy-elektro - 7 - Visual Basic 6.0
Ontwikkelingsfases Ontwikkelsfase Stel de gebruikersinterface op met behulp van de werkset; Pas de eigenschappen aan met het eigenschappenvenster; Kies de juiste schermpositie voor de uitvoeringsfase; Schrijf de programmacode; Sla het project en de formulieren op. Uitvoeringsfase Start met de knop Start => Run; Test de goede werking; Beëindig met de knop Einde; Herstel de eventuele fouten. Compilatie Je kan het programma ook laten uitvoeren vanuit Windows door er een uitvoerbaar bestand van te maken; In File-menu vind je de optie Make Project1.exe. In het venster Make Project kun je de map en de naam van het exe-bestand invoeren. Toepassing: begroeting Doel Het formulier heeft drie opdrachtknoppen (CommandButtons), twee labels en een figuur (Picturebox). De knoppen moeten ervoor zorgen dat: De tekst verschijnt op de labels en het logo van Gitok wordt weergegeven; De tekst en het logo verdwijnen; Het programma wordt afgesloten. www.ffxs.nl/diy-elektro - 8 - Visual Basic 6.0
De lay-out Werkwijze 1. Kies File => New Project 2. Selecteer StandardEXE en klik op OK 3. Maak een interface zoals in de figuur 4. Vergroot de afmetingen van het formulier tot 7900x4200. (Door de hoek te verslepen) 5. Plaats de drie opdrachtknoppen op het formulier. Selecteer de knop in de werkset en teken deze op het formulier. De twee andere kan met de Copy en Paste-functie, zo zijn de drie knoppen juist even groot. 6. Zet de knoppen op hun juiste positie: Selecteer de drie knoppen; Kies in het Format-menu de optie Horizontal Spacing en klik in het submenu Make Equal; De middelste knop wordt nu gecentreerd tussen de uiterste knoppen. 7. Plaats de twee labels en de Picturebox op het formulier 8. Je kunt de positie en afmetingen van deze objecten vergrendelen door in het menu Format => Lock Controls te selecteren 9. Klik op de eerste knop en pas de eigenschappen aan in Properties Window Dubbelklik op de eigenschap Name en typ: cmdhallo. De knop heet nu cmdhallo in het programma; Dubbelklik op de eigenschap Caption en typ: &Hallo. Het &-teken zorgt ervoor dat het volgende teken onderstreept wordt, bijvoorbeeld Hallo. Door de onderstreepte toets H samen met Alt in te toetsen, kunt u de Hallo-toets activeren vanaf het toetsenbord. 10. Pas de eigenschappen aan volgens de tabel: www.ffxs.nl/diy-elektro - 9 - Visual Basic 6.0
11. In het formulierpositievenster positioneer je het formulier in het centrum van het scherm. In het snelmenu kies je Startup Position en vervolgens Center Screen. 12.Start het programa en controleer de gebruikersinterface. Het logo verschijnt niet op het scherm. 13. Sla het project op met de bestandsnaam Begroeting.. 14. Nu gaan we naar het codevenster. Via het menu View => Code kom je in het codevenster. 15. Bovenaan links in dit venster selecteer je het object cmdeinde. Wanneer er op de knop Einde wordt geklikt, dan wordt het programma beëindigd. De procedure staat rechts bovenaan, in dit geval Click. 16. Commentaar kan overal aangebracht worden. Dit kan tussen enkele aanhalingstekens ( ). Na de commentaar typen we de Basic-instructie End. www.ffxs.nl/diy-elektro - 10 - Visual Basic 6.0
Private Sub cmdeinde_click() Het beëindigen van het programma End 17. Nu is de eerste procedure gereed. Het programma kan nu gestart worden en de knop Einde kan getest worden. 18. ga terug naar het codevenster en vul de overige procedures aan volgens de listing van Het codevenster 19. Bewaar het programma 20. Test het programma 21. Nu kunnen we het programma compileren naar een EXE-bestand. Menu File => Make Project1.exe. We typen de projectnaam Begroeting in en klikken op OK. Nu kunne we de toepassing rechtstreeks vanuit Windows starten. Project 2: Conversie van inch naar cm Doel De gebruikersinterface telt drie opdrachtknoppen, twee labels, twee tekstvlakken en een figuur. De toepassing berekent de omzetting van de ingevoerde inches naar centimeters. 1. Eerst wordt het aantal inches in het tekstvlak gezet 2. Met de opdrachtknop Bereken wordt de conversie uitgevoerd 3. Het resultaat verschijnt in het tweede tekstvlak 4. Met de opdrachtknop Wissen worden de twee tekstvlakken gewist 5. De opdrachtknop Einde sluit het programma. www.ffxs.nl/diy-elektro - 11 - Visual Basic 6.0
De lay-out Werkwijze 1. Kies File => New Project. Selecteer StandardEXE en klik op OK 2. Maak een interface zoals in de figuur 3. Vergroot de afmetingen van het formulier tot 6600x6300. (Door de hoek te verslepen) 4. Plaats de drie opdrachtknoppen op het formulier. Selecteer de knop in de werkset en teken deze op het formulier. De twee andere kan men met Kopiëren en Plakken tekenen, zo zijn de drie knoppen juist even groot 5. Zet de knoppen op hun juiste positie Selecteer de drie knoppen Kies in het Format-menu de optie Horizontal Spacing en klik in het submenu Make Equal De middelste knop wordt nu gecentreerd tussen de uiterste knoppen 6. Plaats de Picturebox in het midden van het formulier 7. Plaats de twee labels en de twee tekstvlakken 8. Je kunt de positie en afmetingen van deze objecten vergrendelen door in het menu Format => Lock Controls te selecteren 9. Pas de eigenschappen aan volgens de tabel: www.ffxs.nl/diy-elektro - 12 - Visual Basic 6.0
10. De knop Bereken is de standaardknop van het formulier (Default = True). Deze instelling heeft tot gevolg dat de gebruiker deze knop kan activeren door op de Enter-toets te drukken. Deze eigenschap kan slechts éénmaal voorkomen en kan maar op één knop toegepast worden. Deze standaardknop heeft een iets bredere rand. 11. De knop Einde is de sluitknop (Cancel = True). Het formulier sluit door op deze knop te drukken 12. In het formulierpositievenster positioneer je het formulier in het centrum van het scherm. In het snelmenu kies je Startup Position en vervolgens Center Screen 13. Sla het project op met de bestandnaam Inch-cm als bestandsnaam.. 14. Nu gaan we naar het codevenster. Via het menu View => Code kom je er www.ffxs.nl/diy-elektro - 13 - Visual Basic 6.0
15.sla het project op 16. start de toepassing en test de toepassing 17. Beëindig het programma met de Esc-toets, dit kan omdat de knop Einde de sluitknop is Keypress Het programma heeft een aantal tekortkomingen, er kunne alle mogelijke tekens en ook negatieve getallen worden ingevoerd. De invoer via het toetsenbord kan beperkt worden tot cijfers van 0 tot en met 9 door gebruik te maken van de procedure Keypress. Het argument Keypress bezit de ASCII-waarde van het teken dat in het invoervlak werd ingevoerd. Hier wordt door een If..Then-structuur gecontroleerd of de ASCIIwaarde van het ingevoerde teken toegestaan is. If voorwaarde Then instructie1 [Else instructie2] Bij de code kan deze procedure bijgevoegd worden: Project 3: Oscilloscoop Doel Bij dit programma wordt een beeld van een oscilloscoop met een sinusvormig signaal weergegeven. De tijdsbasis is ingesteld op 1ms/verdeling en de verticale tijdbasis op 10V/verdeling. Eveneens wordt de periodeduur T, de frequentie f en de amplitude van het signaal weergegeven. Door op Tekenen te klikken kan een nieuwe waarde afgelezen worden. www.ffxs.nl/diy-elektro - 14 - Visual Basic 6.0
De lay-out Werkwijze 1. Plaats de verschillende objecten op het formulier 2. Pas de eigenschappen aan www.ffxs.nl/diy-elektro - 15 - Visual Basic 6.0
3. Pas de programmacode aan Option Explicit Dim x As Long Dim y As Long Const pi = 3.1415926537 Dim utop As Long Dim u As Double Dim xold As Long Dim uold As Long Dim radx As Double Dim hulp As Double Dim T As Double Dim f As Double Private Sub Form_Activate() Verticale lijnen tekenen For x = 100 To 1000 Step 100 picgrafiek.line (x, 0)-(x, 800) Next x Horizontale asverdelingen tekenen For x = 20 To 1000 Step 20 picgrafiek.line (x, 395)-(x, 410) Next x Horizontale lijnen tekenen www.ffxs.nl/diy-elektro - 16 - Visual Basic 6.0
For y = 100 To 800 Step 100 picgrafiek.line (0, y)-(1000, y) Next y Verticale asverdelingen tekenen For y = 20 To 800 Step 20 picgrafiek.line (495, y)-(510, y) Next y Private Sub CmdTekenen_Click() Randomize picgrafiek.cls Verticale lijnen tekenen For x = 100 To 1000 Step 100 picgrafiek.line (x, 0)-(x, 800) Next x Horizontale asverdelingen tekenen For x = 20 To 1000 Step 20 picgrafiek.line (x, 395)-(x, 410) Next x Horizontale lijnen tekenen For y = 100 To 800 Step 100 picgrafiek.line (0, y)-(1000, y) Next y Verticale asverdelingen tekenen For y = 20 To 800 Step 20 picgrafiek.line (495, y)-(510, y) Next y De amplitude kiezen: utop > 4 40 verschillende warden en in stappen van 1V utop = 0 Do Until utop > 4 utop = Int((Rnd * 40) + 1 ) Loop De periodeduur kiezen, 20 verschillende warden hulp = (Int((Rnd * 20) + 1) / 10) + 0.1 T = 3.6 / hulp Tekenen van de sinus xold = 0 uold = 400 For x = 0 To 1000 radx = hulp * x * pi / 180 u = 400 10 * utop * Sin(radx) picgrafiek.line (xold, uold)-(x, u), RGB(255,255,255) xold = x uold = u Next x De periodeduur T en de frequentie f tonen T = T * 100 T = Int(T) / 100 www.ffxs.nl/diy-elektro - 17 - Visual Basic 6.0
txtperiode.text = T & ms f = 1000 / T f = f * 10 f = Int(f) / 10 txtfrequentie.text = f & Hz txtamplitude.text = utop & V Private Sub cmdeinde_click() End 4. Test het programma en sla het op Project 4: Transistor Doel Een oefening leren opstellen om bij een transistor de basis, emitter en collecter te herkennen. De lay-out Opgave 1. Maak in Microsoft Paint het symbool van een transistor aan 2. Maak met Visual Basic het venster aan 3. Als je op de knop Basis drukt dan verschijnt dit bij basis, als je op Collector drukt dan verschijnt er collector, enz www.ffxs.nl/diy-elektro - 18 - Visual Basic 6.0
Programmacode Project 5: Transistor 2 Doel Een oefening opstellen voor het aanduiden van basis, collector en emitter. www.ffxs.nl/diy-elektro - 19 - Visual Basic 6.0
De lay-out Als het resultaat correct is komt er in de respectievelijke velden de aanduiding van basis, collector en emitter. Is het resultaat niet juist komt de aanduiding FOUT!! in het tekstvlak. Programmacode Private Sub cmdcorrect_click() 'het nazien van de ingevoerde gegevens in het Basis invoervlak If txtbasis.text = "1" Then txtbasis.text = "Goed" If txtbasis.text = "Goed" Then 'geeft "goed" een groene kleur txtbasis.forecolor = &HFF00& Else: txtbasis.text = "Fout" If txtbasis.text = "Fout" Then 'geeft "fout" een rode kleur txtbasis.forecolor = &HFF& 'het nazien van de ingevoerde gegevens in het Collector invoervlak If txtcollector.text = "3" Then txtcollector.text = "Goed" If txtcollector.text = "Goed" Then 'geeft "goed" een groene kleur txtcollector.forecolor = &HFF00& Else: txtcollector.text = "Fout" www.ffxs.nl/diy-elektro - 20 - Visual Basic 6.0
If txtcollector.text = "Fout" Then 'geeft "fout" een rode kleur txtcollector.forecolor = &HFF& 'het nazien van de ingevoerde gegevens in het Emitter invoervlak If txtemitter.text = "2" Then txtemitter.text = "Goed" If txtemitter.text = "Goed" Then 'geeft "goed" een groene kleur txtemitter.forecolor = &HFF00& Else: txtemitter.text = "Fout" If txtemitter.text = "Fout" Then 'geeft "fout" een rode kleur txtemitter.forecolor = &HFF& Private Sub cmdeinde_click() 'het beëindigen van het programma End Private Sub cmdopnieuw_click() 'het wissen van alle data in alle invoervlakken en uitvoervlakken txtbasis.text = "" txtbasis.forecolor = &H0& 'geeft tekst een zwarte kleur txtcollector.text = "" txtcollector.forecolor = &H0& 'geeft tekst een zwarte kleur txtemitter.text = "" txtemitter.forecolor = &H0& 'geeft tekst een zwarte kleur Private Sub cmdverbetering_click() 'het weergeven van de juiste benamingen txtbasis.text = "1" txtbasis.forecolor = &H0& 'geeft tekst een zwarte kleur txtcollector.text = "3" txtcollector.forecolor = &H0& 'geeft tekst een zwarte kleur txtemitter.text = "2" txtemitter.forecolor = &H0& 'geeft tekst een zwarte kleur Private Sub txtbasis_keypress(keyascii As Integer) 'alleen de invoer van 1, 2 en 3 in invoervlak 'Basis' is mogelijk If KeyAscii < 49 Or KeyAscii > 51 Then www.ffxs.nl/diy-elektro - 21 - Visual Basic 6.0
KeyAscii = 0 Beep Private Sub txtcollector_keypress(keyascii As Integer) 'alleen de invoer van 1, 2 en 3 in invoervlak 'Collector' is mogelijk If KeyAscii < 49 Or KeyAscii > 51 Then KeyAscii = 0 Beep Private Sub txtemitter_keypress(keyascii As Integer) 'alleen de invoer van 1, 2 en 3 in invoervlak 'Emitter' is mogelijk If KeyAscii < 49 Or KeyAscii > 51 Then KeyAscii = 0 Beep Private Sub Form_Activate() txtbasis.forecolor = &H0& txtcollector.forecolor = &H0& txtemitter.forecolor = &H0& 'geeft tekst een zwarte kleur 'geeft tekst een zwarte kleur 'geeft tekst een zwarte kleur Project 6: Splash screen & Verkleuren van een vak Doel 1. maak met Visual Basic de vensters aan 2. Laat eerst een splash screen opstarten gevolgd door het uiteindelijke programma 3. Laat een label verkleuren door op een knop te drukken 4. Voeg volgende knoppen toe: Rood Groen Blauw Einde www.ffxs.nl/diy-elektro - 22 - Visual Basic 6.0
De lay-out Programmacode Splashscreen Option Explicit Private Sub Form_KeyPress(KeyAscii As Integer) Unload Me Private Sub Form_Load() lblversion.caption = "Version " & App.Major & "." & App.Minor & "." & App.Revision lblproductname.caption = App.Title Private Sub Frame1_Click() Unload Me Private Sub Timer1_Timer() Unload frmsplash frmkleurknoppen.show www.ffxs.nl/diy-elektro - 23 - Visual Basic 6.0
Kleurknoppen Private Sub cmdblauw_click() lblcolor.backcolor = &HFF0000 Private Sub cmdgroen_click() lblcolor.backcolor = &HFF00& Private Sub cmdrood_click() lblcolor.backcolor = &HFF& Project 7: Chronometer Doel Een chronometer vervaardigen met minuten, seconden en tienden seconden. De lay-out Opgave 1. Maak de gebruikersinterface aan Voor de chrono neem je een interval van 100ms 2. Dimentioneer de veranderlijken: Option Explicit Dim ChronoTenths As Integer Dim ChronoSeconds As Integer Dim ChronoMinutes As Integer www.ffxs.nl/diy-elektro - 24 - Visual Basic 6.0
3. Voor het genereren van de uitleescijfers kan je gebruik maken van de volgende programmacode: Private Sub tmrtim_timer() ChronoTenths = ChronoTenths + 1 If ChronoTenths = 10 Then ChronoTenths = 0 ChronoSeconds = ChronoSeconds + 1 If ChronoSeconds = 60 Then ChronoSeconds = 0 ChronoMinutes = Chronominutes + 1 lbltime.caption = Format(ChronoMinutes, 00 ) + : + Format(ChronoSeconds, 00 ) + : + Format(ChronoTenths * 10, 00 ) 4. Verwerk de acties van de drukknoppen in het programma Programmacode Option Explicit Dim ChronoTenths As Integer Dim ChronoSeconds As Integer Dim ChronoMinutes As Integer Private Sub cmdquit_click() 'het beëindigen van het programma End Private Sub cmdreset_click() 'reset de teller ChronoTenths = 0 ChronoSeconds = 0 ChronoMinutes = 0 lbltime.caption = "00" + ":" + "00" + ":" + "00" Private Sub cmdstart_click() 'start het tellen tmrtime.enabled = True Private Sub cmdstop_click() 'stop het tellen tmrtime.enabled = False Private Sub tmrtime_timer() 'het genereren van de uitleescijfers ChronoTenths = ChronoTenths + 1 If ChronoTenths = 10 Then ChronoTenths = 0 ChronoSeconds = ChronoSeconds + 1 www.ffxs.nl/diy-elektro - 25 - Visual Basic 6.0
If ChronoSeconds = 60 Then ChronoSeconds = 0 ChronoMinutes = ChronoMinutes + 1 lbltime.caption = Format(ChronoMinutes, "00") + ":" + Format(ChronoSeconds, "00") + ":" + Format(ChronoTenths * 10, "00") Bijlagen Options Explicit Het is een goede gewoonte om steeds de variabelen te declareren. Tabblad editor => Tools => Options => require declarations Integer => gehele getallen => 2 bytes (= 16bit) Long => decimale getallen => 4 bytes (= 32bit) Single => decimale getallen => 4 bytes Double => decimale getallen => 8 bytes (= 64bit) String => tekst Byte => gehele getallen => 1 byte (= 8bit) Boolean => logische waarden => true / false Date => datum en tijdsinfo www.ffxs.nl/diy-elektro - 26 - Visual Basic 6.0
ASCII-code tabel www.ffxs.nl/diy-elektro - 27 - Visual Basic 6.0