|
. .
|
.
TREIBER UNTER WINDOWSTreiber für ISA PC-KartenTreiber für USB Interfaces Treiber für PCMCIA Interfaces
|
WINDOWS 3.1 |
Für Windows 3.1/3.11 (16-Bit Windows) ist die SLHDMX2.DLL vorgesehen. Der Standard für DLL-Aufrufe ist die PASCAL-Aufrufkonvention; für spätere Windows-Versionen läßt sich diese jedoch nicht mehr nutzen. Dennoch sind unter Win3.1 erstellte Applikationen auch unter Win95/98 lauffähig, nur kann man sie dort nicht erzeugen. |
| SLHDMX2.DLL | Diese DLL enthält Funktionen zum automatischen Auffinden der Karte, zum Schreiben in und Lesen aus der Karte sowie zum Starten und Stoppen des Datentransfers. Für die jeweils verwendete Karte muß zuvor das zugehörige Hardware-Betrrebssystem SLHDMXnn.BIN erfolgreich in die Karte geladen worden sein (siehe unter Hardware).
|
| Kartenadresse ermitteln |
Declare Function vbCardadr% Lib "SLHDMX2.DLL" (ByVal CardAdr%)findet die Adresse der Karte im Rechner. Bei Aufruf der Funktion mit CardAdr=0 wird die erste belegte Kartenadresse gefunden und ausgegeben. Bei Aufruf mit CardAdr=&H100 [&H120, &H140, &H160] wird nur diese Adresse geprüft. Wird keine Karte gefunden, ist der Rückgabewert Null. |
| Betriebssystem übertragen |
Declare Sub vbWOS Lib "SLHDMX2.DLL" (ByVal CardAdr%, ByVal Type%)Betriebsprogramm in die Karte laden. Übergabeparameter: CardAdr: Kartenadresse Type: Kartentype: 1512A=12, 1512B-LC=12, 1512B=16, 1512C=17 |
| In Karte schreiben |
Declare Sub vbWByte Lib "SLHDMX2.DLL" (ByVal CardAdr%, ByVal RAM%, ByVal Data%)Ein Byte in das Karten-RAM schreiben. Übergabeparameter: CardAdr: Kartenadresse RAM: RAM-Adresse auf der Karte (&H0000 ... &H1FFF) Data: Datenbyte (&H00...&HFF) |
| Aus Karte lesen |
Declare Function vbRByte% Lib "SLHDMX2.DLL" (ByVal CardAdr%, ByVal RAM%)Liest ein Byte aus dem Karten-RAM. Übergabeparameter siehe unter vbWByte. Rückgabewert: gelesenes Byte. |
| DMX starten 1512A, 1512B, 1512B-LC |
Declare Function vbDMXStart% Lib "SLHDMX2.DLL" (ByVal CardAdr%)Startet die Übertragung der DMX-Karte. Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| DMX starten 1512C |
Declare Function vbDMXResOff% Lib "SLHDMX2.DLL" (ByVal CardAdr%)Startet die Übertragung der DMX-Karte. Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| DMX stoppen 1512A, 1512B, 1512B-LC |
Declare Function vbDMXStop% Lib "SLHDMX2.DLL" (ByVal CardAdr%)Beendet die Übertragung der DMX-Karte. Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| DMX stoppen 1512C |
Declare Function vbDMXReset% Lib "SLHDMX2.DLL" (ByVal CardAdr%)Beendet die Übertragung der DMX-Karte, Reset der Karten-CPU Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| PC-Memory auslesen |
Declare Function vbMemRead% Lib "SLHDMX2.DLL" (ByVal Segment%, ByVal Adresse%)Liest ein Byte aus dem PC-Speicher. |
WINDOWS 95 |
Für Windows 95 bzw. Windows 98 (32-Bit Windows) ist die SLHDMX33.DLL vorgesehen. Da diese Windows-Versionen für DLL-Aufrufe die C-Aufrufkonvention erfordern, ist ausschleißlich diese DLL verwendbar. Dabei erfolgt der Zugriff auf die Kartenhardware ohne weitere Windows-Interaktion. Für mehrere konkurrierende Programme, die auf dieselbe Karte zugreifen wollen, muß also der Programmierer Sorge tragen, hier greift der Windows Schutzmechanismus nicht ein. |
| SLHDMX33.DLL | Diese DLL enthält Funktionen zum automatischen Auffinden der Karte, zum Schreiben in und Lesen aus der Karte sowie zum Starten und Stoppen des Datentransfers. Für die jeweils verwendete Karte muß zuvor das zugehörige Hardware-Betrrebssystem SLHDMXnn.BIN erfolgreich in die Karte geladen worden sein (siehe unter Hardware).
|
| Kartenadresse ermitteln |
Declare Function vbCardadr Lib "SLHDMX33.DLL" Alias "vbCardAdr" (ByVal CardAdr%) As Integerfindet die Adresse der Karte im Rechner. Bei Aufruf der Funktion mit CardAdr=0 wird die erste belegte Kartenadresse gefunden und ausgegeben. Bei Aufruf mit CardAdr=&H100 [&H120, &H140, &H160] wird nur diese Adresse geprüft. Wird keine Karte gefunden, ist der Rückgabewert Null. |
| In Karte schreiben |
Declare Sub vbWByte Lib "SLHDMX33.DLL" (ByVal CardAdr%, ByVal RAMAdr%, ByVal Kanal%))Ein Byte in das Karten-AM schreiben. Übergabeparameter: CardAdr: Kartenadresse RAM: RAM-Adresse auf der Karte (&H0000 ... &H1FFF) Data: Datenbyte (&H00...&HFF) |
| Aus Karte Lesen |
Declare Function vbRByte Lib "SLHDMX33.DLL" (ByVal CardAdr%, ByVal RAMAdr%) As IntegerLiest ein Byte aus dem Karten-RAM. Übergabeparameter siehe unter vbWByte. Rückgabewert: gelesenes Byte. |
| DMX starten 1512A, 1512B, 1512B-LC |
Declare Function vbDMXStart% Lib "SLHDMX33.DLL" (ByVal CardAdr%)Startet die Übertragung der DMX-Karte. Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| DMX starten 1512C |
Declare Function vbDMXResOff% Lib "SLHDMX33.DLL" (ByVal CardAdr%)Startet die Übertragung der DMX-Karte. Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| DMX stoppen 1512A, 1512B, 1512B-LC |
Declare Function vbDMXStop% Lib "SLHDMX33.DLL" (ByVal CardAdr%)Beendet die Übertragung der DMX-Karte. Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| DMX stoppen 1512C |
Declare Function vbDMXReset% Lib "SLHDMX33.DLL" (ByVal CardAdr%)Beendet die Übertragung der DMX-Karte, Reset der Karten-CPU Aufruf mit der Kartenadresse, Rückgabewert ist ein Dummy. |
| PC-Memory auslesen |
Declare Function vbMemRead Lib "SLHDMX33.DLL" (ByVal Segment%, ByVal Adresse%) As LongLiest ein Byte aus dem PC-Speicher. |
WINDOWS 95 |
Für den Zugriff auf I/O-Ports sorgt unter Windows 95 bzw. Windows 98 auch die WIN95IO.DLL. Sie bietet 8-Bit (Byte) und 16-Bit (Word) Schreib- und Lesezugriffe. Die Funktionen stehen royalty-frei zur Verfügung: eine Beschreibung ist in den Download-Files enthalten. |
| WIN95IO.DLL | Diese DLL enthält Funktionen für Schreib- und Lesezugriffe auf Portadressen und ist damit zum Betrieb aller Interfaces - Karten 1512A, 1512B, 1512B-LC und 1512C, sowie Printerport-Interface DMXPCP - geeignet. Bitte beachten Sie, daß zum Schreiben in das Karten-RAM auf diese Weise gegebenenfalls drei Zugriffe notwendig sind: RAM-Adresse HighByte setzen, RAM-Adresse LowByte setzen, Daten schreiben. Siehe Zugriffsvorschriften auf die Interfacekarten, die unter Hardware dokumentiert sind.
|
| In Port schreiben |
Declare Sub vbOut Lib "WIN95IO.DLL" (ByVal nPort As Integer, ByVal nData As Integer)Ein Byte in die ortadresse schreiben. Übergabeparameter: nPort: Portadresse nData: Datenbyte (&H00...&HFF) |
| Aus Port lesen |
Declare Function vbInp Lib "WIN95IO.DLL" (ByVal nPort As Integer) As IntegerLiest ein Byte aus der Portadresse. Übergabeparameter siehe unter vbOut. Rückgabewert: gelesenes Byte. |
WINDOWS 95 |
Alternativ ist für Windows 95 bzw. Windows 98 der Zugriff über ein OCX-Control möglich. Solche Controls lassen sich einfach in die entsprechenden Programmierumgebungen (Visual Basic, C++, Delphi) einbinden und stellen dann ihre Funktionen zur Verfügung. Zur Installation der OCX erhalten Sie ein vollständiges Installationsprogramm. |
| SLHDMX.OCX | Diese OCX enthält Funktionen zum automatischen Auffinden der Karte, zum Schreiben in und Lesen aus der Karte sowie zum Starten und Stoppen des Datentransfers. Es werden die Kartentypen 1512A, 1512B, 1512B-LC und 1512C, auch im gemischten Betrieb, unterstützt.
(wird fortgesetzt) |
WINDOWS 95 |
Unter Windows NT wird die Hardware vollständig vom Betriebssystem gekapselt, ein Zugriff über DLL-Bibliotheken ist hier nicht möglich. Windows würde in diesem Fall mit einem Exception Error reagieren. Für die Ansprache unter NT muß ein entsprechender Device Driver zum Einsatz kommen.
Ein solcher virtueller Device Driver (VxD) kapselt die Hardware von der Software ab und macht dem Betriebssystem die Existenz der Hardware bekannt. Ein einfacher Ansatz, der umständliche Programmierarbeit vermeidet, ist die Einbindung eines Universaltreibers zur Anspache von I/O Adressen. Da die DMX PC-Karten lediglich´auf I/O Adressen zugreifen müssen und keine Interrupt- oder DMX Ressourcen benötigen, ist diese Lösung sehr schnell erarbeitet. |
| TVICPORT.ZIP |
Einen universellen Treiber names tvicport von Victor Ishikeev können Sie als Shareware von
http://www.entechtaiwan.com/tools.htm oder dieser Seite downloaden. Das Archiv enthält Beispiele für die Ansprache des Treibers unter VISUAL BASIC 6, DELPHI2, DELPHI3, DELPHI4, BORLAND C BUILDER 3.0, BORLAND C++ 5.x, MS VISUAL C++ 6.0. Um auf die DMX PC-Karte zugreifen zu können, genügt es, die unter Hardware für die jeweilige Karte aufgeführten Zugriffe einfach umzusetzen. Zur Installation des TVICPORT Treibers lesen Sie bitte die dem Archiv beigefügten Textdateien. |
Beispiel |
Die nachfolgend angegebenen Beispiele gelten für die Karte 1512B-LC. Für andere Karten ist die Routine entsprechend anzupassen. Die angegebenen Funktionen entsprechen den Aufrufen, wie sie unter WIN 9x von der SLHDMXnn.DLL bereitgestellt werden. Obwohl die nachfolgenden Beispiele im BASIC-Dialekt dargestellt wurden, sollte es wohl für keinen Programmierer ein Problem darstellen, dies auf die von ihm benutzte Sprache zu adaptieren. |
| Karte erkennen | DECLARE SUB dmxinit ()
Sucht die Karte im Rechner und gibt die Kartenadresse aus. Falls keine Karte gefunden wird, Programmende. Sonst Kartenbetriebssystem laden, Voreinstellungen (aus einem Datenarray) laden und Kartenspeicher löschen. cardadr = 0
TVicPort1.OpenDriver
FOR i = 0 TO 3
TVicPort1.Port ( &H100 + &H20 * i) = 0
TVicPort1.Port ( &H101 + &H20 * i) = 0
TVicPort1.Port ( &H102 + &H20 * i) = &HAA
NEXT i
FOR i = 0 TO 3
TVicPort1.Port ( &H100 + &H20 * i) = 0
TVicPort1.Port ( &H101 + &H20 * i) = 0
porttest = TVicPort1.Port(&H102 + &H20 * i)
IF porttest = &HAA THEN cardadr = (&H100 + &H20 * i)
NEXT i
IF cardadr = 0 THEN PRINT " keine Karte gefunden!": END
PRINT "---------------------------"
PRINT "Kartenadresse: "; cardadr
PRINT "---------------------------"
' *******************************************
' überträgt die Betriebssystem-Software für
' die Karte, die aus einer Datei namens
' SLHDMX12.BIN gelesen wird.
' *******************************************
OPEN "SLHDMX12.BIN" FOR INPUT AS #1
i = 0
WHILE NOT EOF(1) ' liest/überträgt
x$ = INPUT$(1, #1) ' Betriebssystem
TVicPort1.Port(cardadr) = i AND 255 ' Adresse lowbyte
TVicPort1.Port(cardadr + 1) = INT(i / 256) ' Adresse highbyte
TVicPort1.Port(cardadr + 2) = ASC(x$)
i = i + 1
WEND
PRINT "--------------------------------------------"
PRINT "Betriebssystem "; i; " Bytes geladen "
PRINT "--------------------------------------------"
FOR i = 0 TO 8 ' überträgt Parameter
TVicPort1.Port(cardadr) = (i + &H7F0) AND 255 ' Adresse lowbyte
TVicPort1.Port(cardadr + 1) = INT((i + &H7F0) / 256) ' Adresse highbyte
TVicPort1.Port(cardadr + 2) = dmxdef(i) ' Datenwert
NEXT i
FOR i = &H0 TO &HFF ' Setze alle Kanäle = 0
TVicPort1.Port(cardadr) = (i + &H400) AND 255 ' Adresse lowbyte
TVicPort1.Port(cardadr + 1) = INT((i + &H400) / 256) ' Adresse highbyte
TVicPort1.Port(cardadr + 2) = 0 ' Datenwert
TVicPort1.Port(cardadr) = (i + &H500) AND 255 ' Adresse lowbyte
TVicPort1.Port(cardadr + 1) = INT((i + &H500) / 256) ' Adresse highbyte
TVicPort1.Port(cardadr + 2) = 0 ' Datenwert
NEXT i
END SUB
|
| Karte starten | DECLARE SUB dmxstart ()
Das angegebene Beispiel gilt für die Karte 1512B-LC. Für andere Karten ist die Routine entsprechend anzupassen. dummy = TVicPort1.Port(cardadr + 3) END SUB |
| Karte stoppen | DECLARE SUB dmxstop ()
Das angegebene Beispiel gilt für die Karte 1512B-LC. Für andere Karten ist die Routine entsprechend anzupassen. TVicPort1.Port(cardadr) = 0 END SUB |
| In Karte schreiben | DECLARE SUB dmxtrans (kanal, value)
Das angegebene Beispiel gilt für die Karte 1512B-LC. Für andere Karten ist die Routine entsprechend anzupassen. IF kanal < 1 OR kanal > 512 THEN EXIT SUB ' Fehler! IF value > 255 THEN EXIT SUB ' Fehler! TVicPort1.Port(cardadr) = (&H400 + kanal - 1) AND 255 ' Adresse lowbyte TVicPort1.Port(cardadr + 1) = INT((&H400 + kanal - 1) / 256) ' Adresse highbyte TVicPort1.Port(cardadr + 2) = value ' Datenwert END SUB |
| PORT95NT.EXE |
Ein weiterer Universal-Treiber names DLPortIO kann von Scientific Software Tools, Inc. geladen werden. Der Treiber wird kostenlos, jedoch ohne Support zur Verfügung gestellt, und unterstützt Windows 95, 98 und NT. Der Download ist über die Website von Scientific Software Tools, Inc, http://www.sstnet.com möglich.
Der Zugriff ist mit verschiedenen Befehlen möglich. Einen direkten Byte-Transfer erreicht man mit den Kommandos
|