

IODLL.DLL
---------

ber die Datei IODLL.DLL kann auf die Ports des PCs wie unter DOS
zugegriffen werden.

Am Beispiel eine Programmauschnitts in Visual Basic wird dies nach-
folgend dargestellt.
Damit eine Funktion in einer DLL von Visual Basic aus genutzt werden
kann, muss diese in einem Generell-Teil einer Form oder im GLOBAL-
Modul mit dem Declare-Befehl deklariert werden. "ReadBytePort" gilt 
fr einen 8-Bit Leseoperation, "ReadWordPort" fr eine 16-Bit Leseope-
retion. Das Gleiche gilt fr die Ausgabe bei Write-funktionen.

	Declare Function ReadBytePort Lib "IODLL.DLL" 
		(ByVal portNr As Integer) As Integer

	Declare Function ReadWordPort Lib "IODLL.DLL" 
		(ByVal portNr As Integer) As Integer

	Declare Function WriteBytePort Lib "IODLL.DLL" 
		(ByVal portNr As Integer, ByVal Wert As Integer) As Integer

	Declare Function WriteWordPort Lib "IODLL.DLL" 
		(ByVal portNr As Integer, ByVal Wert As Integer) As Integer

Fr das Beispiel einer Messwertabfrage der unten stehenden Funktion 
fr die ERMA-Ad-Wandler-Karte vom Typ "AD1199" werden die nachfol-
genden Variablen definiert:
	
	Dim Chan As Integer
	Dim BaseAdr As Integer
	Dim Wert(8) As Single
	Dim Mwert(8) As Single
	Dim Flag3 As Integer
		
Die Basisadresse der Karte wird in der Regel in der Ereignisprozedur
"Form_Load()" definiert 
	
	Sub Form_Load ()
    		BaseAdr = &H100
    		Timer1.Interval = 500	'alle 500ms messen
    		Timer1.Enabled = False	'Messung noch nicht starten
	End Sub

Die Lesefunktion ist nachfolgend beschrieben. Durch die Ausgabe
der "Channel-Nummer" wird die DA-Wandlung gestartet. Mit den beiden
Lesebefehlen werden von der 12-Bit-Wandlung die unteren 8 Bit in
"Read1" und die oberen 4 Bit (Basisadresse+1) nach "Read2" eingelesen.

	Function ReadAD1 (Chan) As Integer
    	   	R% = WriteBytePort(BaseAdr, Chan) 'Ausgabe Basisadresse, Kanal-Nr.
    		R% = WriteBytePort(BaseAdr, Chan) 'dto.

		Read1 = ReadBytePort(BaseAdr)
		Read2 = ReadBytePort(BaseAdr + 1) And 15

		ReadAD1 = Read2 * 256 + Read1
	End Function

Beim Start des Timers werden alle 500ms die Messwerte der 8 AD-Kanle
eingelesen.
		
	Sub Timer1_Timer ()
		For i = 0 To 8
			Wert(i) = ReadAD1(i) / 100
			'Messwert geteilt durch 100, da zwei Nachkommastellen	
        		Label1(i) = Format(Mwert(i), "00.00") + "V"
        		'Darstellung der Messwerte im Label(i)
		Next i

    		If Flag3 = 0 Then
        		Timer1.Enabled = False
    		End If
	End Sub

Start/Stopp-Prozedur zum Ein- und Ausschalten der Messung
	
	Sub StartButton_Click ()
   		If Flag3 = 1 Then
        		Flag3 = 0
        		StartButton.Caption = "Start"
    		Else
        		Flag3 = 1
        		Timer1.Enabled = True
        		StartButton.Caption = "Stop"
    		End If
	End Sub

                   -------------------------------------------
