Parallelle Poort Aansturen Met Visual Basic

Vergelijkbare documenten
Een eerste applicatie

In deze mannual zal ik het voorbeeld van de Led cube gebruiken maar de principes zijn op alles toepasbaar.

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Hoofdstuk 1: Een eerste Visual Basic project

Dieper in Visual Basic.Net

1. WAT STAAT ER OP DE BORD HET LEERBORD TESTEN DE PC-VERBINDING TESTEN... 6

6.2 VBA Syntax. Inleiding Visual Basic

Opdracht Informatica Tutorial Visual Basic

Hoofdstuk 2: Werken met variabelen

6.3 VBA Syntax Instructie. Wij gaan de Visual Basic Editor opnieuw openen, om de instructie die wij zojuist getypt hebben, nader te bekijken.

Installatie Epson TM-T88III/TM-T88IV t.b.v. OnlineKassa.nl

Technische Fiche om een commando met een passend icoontje aan te maken in de Ribbon Interface.

Installatie Epson TM-T88III/TM-T88IV t.b.v. OnlineKassa.nl

Formulieren maken met Dreamweaver CS 4

Voor de database wordt een Access 2000 bestand gebruikt, met voorlopig 1 tabel:

Hoofdstuk 1: Een eerste Visual Basic project

MEDIA NAV. Handleiding voor het online downloaden van content

Versturen van vanuit een Delphi VCL toepassing

Handleiding USB-LocoNet-Interface driver Setup

Cursus Onderwijs en ICT. Programmeren met Visual Basic

Installatiehandleiding KIK-Lokaal

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

Handleiding onderhoud basisschoolwebsite. Erik Zeeuwen - Versie: 1.2 Februari 2006

Handleiding Online Boekhouden

Voor gebruikers met netwerkverbindingen via Windows

MEDIA NAV navigatiesysteem Handleiding voor het downloaden van content via internet

WinCCFlex. WinCC Flex MeRa 1/22

SI-Profinet. Unidrive M200-M400 en Siemens S PLC (TIA portal)

Briefhoofd maken in Word. Handleiding van Helpmij.nl

Installatiehandleiding Windows XP / Vista / Windows 7

Tutorial 1, Delphi: Geldspraak

Macro's in OpenOffice.org

1 Werken met (keuze)lijstjes: de control listbox

VB Magazine Online /08 1 / 6

Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore

Technische nota AbiFire5 Rapporten maken via ODBC

Watcheye AIS op ipad

Hoofdstuk 4: Nieuwe objecten

Nieuw arrangement maken.

Installeren van de Arduino programmeer omgeving

Client configuratie voor Synapse voor huisartsen

Installatie SQL: Server 2008R2

Het koppelen van een FC302 op Profibus met een Siemens PLC

Hoofdstuk 2: Werken met variabelen

OpenVPN voor Windows XP en Windows Vista

Gebruikers Toevoegen. EasySecure International B.V. +31(0) Support.EasySecure.nl. v

Inhoudsopgave Visual Basic 6.0

Handleiding Websitebeheer

mymanualsolarapp - What s Your Solar Power Today?

Onderdeel: Opdracht Uitleg + Opdracht

Globale kennismaking

INSTALLATIE VAN DE BelD KAARTLEZER

Werking van de Office Connector, en het oplossen van fouten.

De WordPress 3.5 Beginners Handleiding

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Doelstellingen: module 3 beeldmateriaal. 3.1 Invoer Scannen Digitale camera Internet en fotocd-roms

Programmeren: Visual Basic

Handleiding voor Zotero versie 2.0

Gebruikershandleiding

RELEASE NOTES. Bij het aanmaken van openingstijden (beschikbaarheid) is een Help file met uitleg toegevoegd.

Formulieren maken met Dreamweaver CS 4/CS 5

Path/file access error 75, een vooral irritant installatieprobleem.

Invoegen... 8 Invulpunt... 9 Nieuwe bouwsteen maken... 9 Bouwsteen opslaan Wijze van werken in Outlook Informatie...

ES1 Project 1: Microcontrollers

Inhoud Wat is mobiel werken?... 2 Installeren VPN Client... 3 Laptop... 3 Windows Windows Mac OS X Linux Tablet...

Een ASP.NET applicatie opzetten. Beginsituatie:

Handleiding GfK Digital Trends voor pc versie 16.1

Workshop 2. Inhoud. 1. Foto s verkleinen 2. Hoe media embedden? 3. Tips en Trics 4. Google Analytics

Les 2 De basis (deel 1)

Configuratie Hieronder zie je hoe het hoofdscherm van NewsLeecher er uitziet als je Newsleecher opstart.

Handleiding invoegen afbeeldingen en downloadlinks t.b.v. het CMS

Handleiding Internet Veiligheidspakket Windows & Mac Versie april 2014

The Nanny Personeel. Lokaal inloggen

Bescherm je tegen onveilige websites

Handleiding GfK Digital Trends voor pc versie

Instellen handtekening Blink - februari 2016

Gebruikers Toevoegen. EasySecure International B.V. +31(0) Support.EasySecure.nl. v

Handleiding CMS Online Identity Webontwikkeling. Handleiding CMS

Installatie Solid Edge ST5

I) Wat? II) Google documenten. Deel 2 documenten

Zero profile Gedocumenteerd door: Chris Twiest Versie: 0.1 Datum:

Handleiding Joomla! Frontend, content en gallery. september 2014 versie 1.0

Gebruikershandleiding

Hoe download en installeer ik de software 15.2? Lees voordat u begint dit document volledig door en sluit alle programma s af.

Portfolio handleiding Opleiding Life Science & Technology

Handleiding CMS VOORKANT

Driver installatie en configuratie.

Quickstart. Browser instellingen

Handleiding adviescommissies gemeente Oegstgeest

INSTALLATIE INSTRUCTIE VOOR ESAM APPLICATIE

Installatie SQL Server 2008R2

Installatie SQL Server 2014

In deze leeropdracht leer je properties (of eigenschappen) van een component te veranderen met behulp van het properties panel.

Handleiding X-keys XK-24 installatie en gebruik

I N H O U D S O P G A V E

TT-organiser GEBRUIKERSHANDLEIDING

Handleiding Document Management Systeem (DMS)

Tabblad documenten

Handleiding Inloggen met SSL VPN

Transcriptie:

Parallelle Poort Aansturen Met Visual Basic 1. Waarom? (Voor Beginners) Er zijn geregeld vragen over hoe je nu eigenlijk een parallelle poort moet aansturen. Op het internet is heel wat te vinden, maar voor mensen die weinig of helemaal geen ervaring hebben met programmeren is dit niet altijd even duidelijk. Daarom dit artikel waarbij ik stap per stap en aan de hand van code en afbeeldingen zal proberen uit te leggen hoe je de parallelle poort van je pc kan aansturen. Hierbij wordt ervan uitgegaan dat je het programma zal gebruiken op een pc die gebruik maakt van een besturingssysteem dat gebaseerd is op Windows NT (2000,XP, Vista ) en dat je programmeert met Visual Basic. 2. Wat is een printerpoort? De printerpoort is dus een parallelle poort. Dit wil zeggen dat bij het sturen van een waarde naar de poort de datalijnen tegelijk (parallel) wijzigen. Nu heeft een parallelle poort acht datalijnen. Er zijn 8 dus 2 mogelijke uitgangen. Hieronder zijn in een schematische figuur alle pinnen van de poort genummerd weergegeven. Voor ons zijn de belangrijkste pinnen die met nummer twee tot en met negen oftewel de acht datalijnen. Figuur: Aansluitingen Parallelle Poort Pin-nummer Uitgang 2 D0 3 D1 4 D2 5 D3 6 D4 7 D5 8 D6 9 D7 18-25 Massa Zoals met de meeste onderdelen in een pc heeft ook de parallelle poort een adres. Dit is een belangrijk element zodat we gericht onze waarde ergens kunnen naar toe sturen. Hieronder zijn enkele adressen weergegeven. In de voorbeeldcode die verder volgt wordt er van uitgegaan dat men LPT1 probeert aan te sturen. Indien u toch een andere poort wenst aan te sturen dient u uiteraard het juiste adres te kiezen. Adressering LPT1 LPT2 LPT3 Data bereik &H378 &H278 &H3BC Status bereik &H379 &H279 Control bereik &H37A &H27A Echter valt op te merken dat we met de recentere versies van Windows (XP, Vista ) de poort niet meer rechtreeks kunnen aanspreken. Deze worden door het OS (Operating System) afgeschermd om te vermijden dat niet het hele besturingssysteem het noorden kwijt raakt bij een fout. Daarom moeten we gebruik maken van een driver (.dll-file) die ons toegang biedt tot de poort. Dries Rollez Pagina 1

3. Programmeren 3.1. Benodigdheden Voor we effectief kunnen beginnen met programmeren hebben we een tweetal dingen nodig. Eerst en vooral hebben we noodt aan een programma dat we gaan gebruiken om in te programmeren. Voor de mensen die nog geen Visual Basic hebben kunnen een gratis versie downloaden op de website van Microsoft. (http://www.microsoft.com/express/) Ten tweede hebben we ook nood aan een driver. Waarom we die nodig hebben kan u hierboven lezen. De benodigde.dll-file kan u downloaden op via de volgende link. (http://www.geekhideout.com/iodll.shtml) Wie graag een open source driver gebruikt die ook nog op Vista werkt kan hier een driver (http://logix4u.net/legacy_ports/parallel_port.html) downloaden. In onderstaande voorbeelden maak ik echter gebruik van de io.dll. Echter zal de code niet zoveel verschillen. Voor meer info verwijs ik naar de site zelf. Download het bestand io.dll en plaats het in de map C:/WINDOWS/system32 (of in C:/WinNT/system32). Plaats het bestand ook best in de debug map van uw project. Dit zal hieronder nogmaals worden aangehaald als het zover is! 3.2. Programmeren 3.2.1. Nieuw Project Zo nu de voorbereidingen getroffen zijn kunnen we effectief beginnen. Hiertoe openen we Visual Basic. Als het programma is opgestart moeten we eerst een nieuw project starten. (File > New Project ) Nu opent zich een scherm waar u kan kiezen welk project u wil starten. We kiezen voor Windows Application en Vullen onderaan bij Name de naam in van het programma. Uiteraard klikken we vervolgens op OK. Dries Rollez Pagina 2

3.2.2. Eerste Form Nu het nieuwe project is aangemaakt, laadt zich het hoofdscherm. Voor u ziet u normaal een lege Windows form. Zorg er verder ook voor dat u volgende toolbars open hebt staan. (View > Toolbars) Dit voor een vlotte manier van volgen. - Toolbox - Properties - Solution Explorer Nu staan kunnen we het codevenster openen. Dit kan op twee manieren. 1) Dubbelklikken op de windows form, 2) In de toolbar Solution Explorer Rechts klikken op Form1.vb en kiezen voor View Code. Als alles goed is ziet u nu de onderstaande code staan in het code venster. Public Class Form1 Private Sub Form1_Load( ) 'Alles wat u hier typt qua code zal uitgevoerd worden bij het laden(openen) van het programma. Om nu de naam van de form aan te passen diennen we de form te selecteren en in het menu Properties de eigenschap Name en Text aan te passen. Indien u dit volgens de hungarian notations doet kan hetvolgende bekomen worden. Name = frmlptprogramma Text = LPT Programma We merken op dat we voor ieder grafisch object we invoegen we telkens tal van eigenschappen kunnen aanpassen in het menu Properties. Het is aan de lezer om wat grafische elementen te plaatsen en zelf wat te experimenteren met deze eigenschappen. 3.2.3. Grafische User Interface (GUI) opbouwen Vervolgens kunnen we de grafische interface opbouwen. Hiertoe gaan we opnieuw naar het Design venster. Om het heel simpel te houden gaan we eerst proberen om één datalijn van de printerpoort aan te passen. Daartoe gaan we gebruik maken van één enkele drukknop. Indien u dit onder de knie hebt kan u naar hartenlust knoppen toevoegen om zo alle datalijnen te besturen. Dries Rollez Pagina 3

We voegen een drukknop in door in het Toolbox menu dubbel te klikken op Button. Er verschijnt een standaard button op de form. U kan nu deze button naar de gewenste positie slepen. Ook hier kunnen we, net als bij de form, de naam en de tekst aanpassen door de knop te selecteren en in het menu Properties de eigenschap Name en de eigenschap Text aan te passen. Bijvoorbeeld: Name = btndata0 Text = Data 0 Het tussenresultaat ziet er als volgt uit: 3.2.4. Module invoegen We kunnen nu beginnen met het schrijven van de zogenaamde module. Dit is een deel van het programma dat de link zal maken met de driver io.dll. Om de module aan te maken gaan we naar de Solution Explorer. Daar klikken we rechts op LPTProgramma en kiezen voor Add Module Dries Rollez Pagina 4

We kiezen uiteraard voor module, geven die een duidelijke naam (bijvoorbeeld io.vb) en kiezen Add. De module opent zich. Nu kunnen we in de module de code schrijven die de dll-file aanspreekt. Dit is onderstaande code. U kan deze voor het gemak kopiëren en plakken. Option Strict Off Option Explicit On Module io Public Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Public Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) Public Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long) Public Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte Public Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer Public Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long Public Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean Public Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean Public Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean Public Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean End Module In bovenstaand kader hebben we nu eigenlijk allemaal functies aangemaakt die we later kunnen oproepen om de status van de poort aan te passen. Een beschrijving van de functies vindt u op: http://www.geekhideout.com/iodll.shtml Nu kan je best ook de driver io.dll in de debug map van je project zetten. Open daartoe de map waarin je je project gezet hebt. Klik door naar bin en vervolgens debug.(mapproject>bin>debug) We kunnen voor de volledigheid de driver ook in voegen in VB. Om de driver toe te voegen gaan we naar de Solution Explorer. Daar klikken we rechts op LPTProgramma en kiezen voor Add Existing Item Dries Rollez Pagina 5

3.2.5. Coderen (Schrijven naar poort) Tenslotte kunnen we beginnen met het schrijven van de effectieve code voor het aansturen van de poort. Hiervoor gaan we eerst terug naar het tabblad Disign. Om nu het event of de gebeurtenis van het klikken op de button aan te duiden, gaan we dubbelklikken op deze button. Dan komen we in het Code venster terecht zoals hieronder te zien is. Public Class frmlptprogramma Private Sub Form1_Load( ) Handles MyBase.Load 'Alles wat u hier typt qua code zal uitgevoerd worden bij het laden(openen) van het programma. Private Sub btndata0_click( ) Handles btndata0.click We gaan nu de code uit de module aanroepen. Aanroepen doen we met Call en sturen van de poort met PortOut(adres,waarde). We schrijven hier nu dus via de functie PortOut een opgegeven waarde naar het opgegeven adres. Voor meer uitleg over het gebruikte adres verwijs ik naar hoger Wat is een printerpoort?. Voor meer over de waarde zie lager. Om nu bijvoorbeeld de eerste datalijn hoog (+5V) te maken sturen we waarde 1 naar de parallelle poort. Want deze decimale waarde omgezet naar een binair woord bekomen we 0000 0001. We krijgen nu onderstaande code in ons code venster. Public Class frmlptprogramma Private Sub Form1_Load( ) Handles MyBase.Load 'Alles wat u hier typt qua code zal uitgevoerd worden bij het laden(openen) van het programma. Private Sub btndata0_click( ) Handles btndata0.click Call PortOut(&H378, 1) Adres Waarde Dries Rollez Pagina 6

Om nu deze datalijn weer laag te maken, kunnen we een tweede drukknop in het leven roepen. Dit doen we op dezelfde manier als we deden bij de vorige drukknop. Echter moeten we hem wel een andere naam geven om fouten in het programma te vermijden. Nu moeten we echter de digitale waarde 0 naar de poort sturen. Dit levert aan de poort een binaire 0000 0000. Zo staan meteen alle datalijnen laag. De code wordt dan: Public Class frmlptprogramma Private Sub Form1_Load( ) Handles MyBase.Load 'Alles wat u hier typt qua code zal uitgevoerd worden bij het laden(openen) van het programma. Private Sub btndata0hoog_click( ) Handles btndata0hoog.click Call PortOut(&H378, 1) Private Sub btndata0laag_click( ) Handles btndata0laag.click Call PortOut(&H378, 0) Dries Rollez Pagina 7

Zo nu kan je al een datalijn hoog en laag maken. Indien u ook andere datalijnen wenst hoog of laag te maken dient u een andere waarde naar de parallelle poort te schrijven. Bijvoorbeeld: Waarde Binair Datalijnen hoog 16 0001 0000 D4 52 0011 0100 D2, D4, D5 100 0110 0100 D2, D5, D6 Het moge duidelijk zijn dat de maximale waarde om weg te schrijven naar de poort 255 is. Er zijn 8 namelijk 2 mogelijkheden en aangezien we vanaf 0 beginnen te tellen, is 255 de hoogste waarde. Zo zet u met waarde 0 alle datalijnen Laag en met 255 alle datalijnen hoog. 3.2.6. Coderen (Waarde aflezen) Zo, nu kunnen we een waarde wegschrijven naar de poort maar het kan ook handig zijn om de actuele waarde van de poort weer te geven aan de gebruiker van het programma. Hiertoe biedt de driver ons uiteraard ook een oplossing. We zullen de functie PortIn(adres) gebruiken. Hierbij zal de driver ons de huidige waarde teruggeven. Maar eerst en vooral gaan we op onze form een element plaatsen waar we de getalwaarde in kunnen plaatsen. Hiervoor biedt Visual Basic ons een aantal mogelijkheden: label, textbox Ik zal hier voor een label kiezen. Het werkt echter net hetzelfde met een textbox of een ander element. Het invoegen van een label gaat net hetzelfde als bij een button. Dubbelklikken op Label in het menu Toolbox. Het label verschijnt op de form en u kan het naar de gewenste positie slepen. Ook hier dienen we in het menu Properties de eigenschap Name en Text aanpassen. We kunnen bijvoorbeeld kiezen voor: Name = lblwaardelpt Text = leeg Public Class frmlptprogramma Private Sub Form1_Load( ) Handles MyBase.Load 'Alles wat u hier typt qua code zal uitgevoerd worden bij het laden(openen) van het programma. Private Sub btndata0_click( ) Handles btndata0hoog.click Call PortOut(&H378, 1) Private Sub btndata0laag_click( ) Handles btndata0laag.click 'Alles wat u hier typt qua co lblwaardelpt.text = PortIn(&H378) de zal uitgevoerd worden bij het klikken op de knop. Call PortOut(&H378, 0) lblwaardelpt.text = PortIn(&H378) Dries Rollez Pagina 8

Misschien wat uitleg over de bijgevoegde code. VB loopt het bij het geschreven coderegels af van boven naar onder. Dus zal de poort eerst hoog (of laag worden afhankelijk van welke knop) en daarna zal de coderegel met betrekking tot het label uitgevoerd worden. Bij het label zorgt de.- operator dat we eigenschap kunnen oproepen. Bij een label kunnen we de tekstwaarde aanpassen. Door deze tekstwaarde van het label gelijk te stellen aan de waarde die momenteel op de poort staat, wordt deze waarde in het label weergegeven. Zo kan de gebruiker via de GUI aflezen welke waarde er momenteel op zijn LPT Poort staat. Dries Rollez Pagina 9