Velleman USB-Board und die
K8055D.DLL
Der LPT-Port wird von Bastlern
immer wieder gerne als Schnittstelle für eigene
Schalt/Steuerprojekte benutzt. Leider verschwindet der LPT-Port
mehr und mehr von der Bildfläche und hinterlässt an der
Stelle erst mal eine Lücke. An der Stelle sei
auch noch mal erwähnt, dass den USB-Parallel-Adaptern aus
Fernost kein weiterer Nutzen zu entlocken ist, als eine
Schnittstelle für ältere Drucker per USB zu bieten. Als
Schnittstelle für selbst gebastelte Steuer- und Regelelektronik
sind diese Teile nicht zu gebrauchen. Ein Adapter könnte dazu
eventuell in der Lage sein, der "UC100 USB zu LPT", aber dieser
kostet um die 100 EUR und das war mir der Versuch noch nicht
wert.
Als PC-Desktop-Besitzer hat man zurzeit noch
die Möglichkeit eine PCI-I/O-Karte mit einem LPT-Port
nachzurüsten, wenn man denn noch einen PCI-Steckplatz zur
Verfügung hat. Als Notebook-Besitzer hat man eventuell die
Chance per PCMCIA-LPT-Karte einen "echten" LPT-Port nachzurüsten
aber die PCMCIA-Steckplätze sind am aussterben.
Eine recht preiswerte und
zudem auch sicherere Alternative zum "echten" LPT-Port bietet hier das "USB
Experiment Interface Board" von der Fa. Velleman.

Neben acht digitalen Aus- und
fünf Eingängen, bietet das Board zusätzlich noch zwei analoge
(8-Bit) Ein - und Ausgänge, sowie zwei analoge Ausgänge mit PWM
(Pulsweitenmodulation). Mittels der mitgelieferten K8055D.DLL
kann man das Board recht einfach aus seinem eigenen
Delphiprogramm heraus ansteuern. Einziger, aber auch sehr
schmerzhafter Nachteil ist die Geschwindigkeit. Die Befehlszeit
beträgt 20ms und die Eingänge werden sogar nur alle 100ms
Sekunden Abgefragt. Da ist selbst unter Windows der LPT-Port
noch um einiges Schneller :-/
Grundlegendes
zu DLL's
Eine DLL Datei (Dynamic Link
Library ) ist eine Library welche Programmroutinen
enthält, die man für sein eigenes Programm nutzen kann. Zum
Einbinden der DLL fügt man die unten aufgeführten Zeilen, direkt
hinter
implementation, im
eigenen Programm ein. Jeder "Befehl" den man aus der DLL nutzen
möchte muss hier zusammen mit der DLL separat angegeben werden.
Die Angabe des DLL-Pfades ist dann nicht nötig, wenn die DLL im
Pfad der Anwendung oder im Windows-Systemverzeichnis liegt. Die
K8055D bietet und folgenden Befehlssatz zur Ansteuerung des
Boards:
Befehler mit Rückgabewert:
OpenDevice, ReadDigitalChannel, ReadAnalogChannel,
ReadAllDigital, ReadCounter
Befehle ohne Rückgabewert:
CloseDevice, SetDigitalChannel, ClearDigitalChannel,
ClearAllDigital, OutputAnalogChannel, OutputAllAnalog,
ClearAnalogChannel, ClearAllAnalog, SetAnalogChannel,
SetAllAnalog, WriteAllDigital, SetAllDigital, ResetCounter,
SetCounterDebounceTime
| |
implementation
{$R *.dfm}
procedure CloseDevice;
stdcall;
external
'K8055d.dll';
procedure
SetDigitalChannel(Channel: Longint);
stdcall;
external
'K8055d.dll' ;
procedure
ClearDigitalChannel(Channel: Longint);
stdcall;
external
'K8055d.dll';
procedure ClearAllDigital;
stdcall;
external
'K8055d.dll';
procedure
OutputAnalogChannel(Channel: Longint; Data: Longint);
stdcall;
external
'K8055d.dll';
procedure
OutputAllAnalog(Data1: Longint; Data2: Longint);
stdcall;
external
'K8055d.dll';
procedure
ClearAnalogChannel(Channel: Longint);
stdcall ;
external
'K8055d.dll';
procedure ClearAllAnalog;
stdcall;
external
'K8055d.dll';
procedure
SetAnalogChannel(Channel: Longint);
stdcall;
external
'K8055d.dll';
procedure SetAllAnalog;
stdcall ;
external
'K8055d.dll';
procedure
WriteAllDigital(Data: Longint);stdcall;
external
'K8055d.dll' ;
procedure SetAllDigital;
stdcall;
external
'K8055d.dll';
procedure
ResetCounter(CounterNr: Longint);
stdcall;
external
'K8055d.dll';
procedure
SetCounterDebounceTime(CounterNr, DebounceTime:Longint);
stdcall;
external
'K8055d.dll';
function
OpenDevice(CardAdress:Longint):Longint;
stdcall;
external
'K8055d.dll';
function
ReadDigitalChannel(Channel: Longint): Boolean;
stdcall ;
external
'K8055d.dll';
function
ReadAnalogChannel(Channel: Longint):Longint;
stdcall;
external
'K8055d.dll';
function ReadAllDigital:
Longint;
stdcall;
external
'K8055d.dll';
function
ReadCounter(CounterNr: Longint): Longint;
stdcall;
external
'K8055d.dll'; |
Die wichtigsten Befehle
An- und Abmelden vom Board:
Bevor man auf das Board zugreifen
kann muss es zunächst angemeldet werden, dies geschieht im
Programm mit:
Es ist möglich bis zu 4 Boards
gleichzeitig an einem PC zu betreiben. Da OpenDevice(x) einen
Rückgabewert liefert und zwar die Nummer (als Integer) des
angemeldeten Boards bzw. ob überhaupt ein Board vorhanden ist
(wenn nicht -> -1) , sollte man dies auch gleich bei der
Anmeldung mit Abfragen:
| |
if OpenDevice(0)
= -1
then
Application.MessageBox ('Es wurde
kein Board gefunden!','Hinweis!',MB_OK
+MB_IconExclamation); |
Das Abmelden vom Board geschieht
mittels:
Digitale Ausgänge schalten:
| Setzen eines Ausgangs: |
Setzen aller
digitalen Ausgänge |
| |
SetDigitalChannel(3);
// Schaltet den 3. Ausgang ein |
|
| |
SetAllDigital;
// Schaltet alle digitalen Ausgänge ein |
|
| Zurücksetzen eines Ausgangs: |
Zurücksetzen aller digitalen
Ausgänge: |
| |
ClearDigitalChannel(3);
// Schaltet den 3. Ausgang
aus |
|
| |
ClearAllDigital;
// Schaltet alle digitalen Ausgänge aus |
|
Digitale Eingänge auslesen:
Zum Auslesen der digitalen
Eingänge dient ReadDigitalChannel(x). Der Befehl liefert ein
Boolean-Rückgabewert true oder false.
| |
if ReadDigitalChannel(5)
= true
then ShowMessage('Eingang
5 ist beanschlagt'); |
Download K8055D.DLL
Für den Fall dass jemand das Board
ohne CD ergattert hat, hier die benötigte DLL zum Herunterladen.
K8055D.DLL
(9 kB)
Und hier die komplette Software auf der Velleman-Kit-CD zum
K8055 mit Beispiele für VB und C++ (VC).
Velleman-Kit K8055D (10.6 MB)
|