'Deklarationen der port.dll
Declare Function OPENCOM Lib "Port.dll" (ByVal A$) As Integer
Declare Sub CLOSECOM Lib "Port.dll" ()
Declare Sub SENDBYTE Lib "Port.dll" (ByVal b%)
Declare Function READBYTE Lib "Port.dll" () As Integer
Declare Sub DELAY Lib "Port.dll" (ByVal b%)
'Deklarationen der FTDI-Bibliothek
Declare Function FT_CreateDeviceInfoList Lib "FTD2XX.DLL" _
(ByRef lpdwNumDevs As Long ) As Long
Declare Function FT_ListDevices Lib "FTD2XX.DLL" _
(ByVal arg1 As Long , ByVal arg2 As String , ByVal dwFlags As Long ) As Long
Public Const FT_LIST_BY_NUMBER_ONLY = &H80000000
Public Const FT_LIST_BY_INDEX = &H40000000
Public Const FT_LIST_ALL = &H20000000
Declare Function FT_OpenEx Lib "FTD2XX.DLL" _
(ByVal arg1 As String , ByVal arg2 As Long , ByRef lngHandle As Long ) As Long
Declare Function FT_GetComPortNumber Lib "FTD2XX.DLL" _
(ByVal lngHandle As Long , ByRef portnumber As Long ) As Long
Declare Function FT_Close Lib "FTD2XX.DLL" _
(ByVal lngHandle As Long ) As Long
Public Const FT_OPEN_BY_SERIAL_NUMBER = 1
Public Const FT_OPEN_BY_DESCRIPTION = 2
Private Sub Command_SCHREIBEN_Click()
'Der Befehl I2C-Data 33 hex = 51 dez.
'liest oder schreibt bis zu 128 Bytes vom I2C-Slave
Dim W, Adr
Adr = Combo_SAdresse.Text 'Adresse aus Cobo-Box
On Error GoTo ErrorHandler 'Für falsche Eingaben im Feld
If TextBox_SWert.Text > 255 Then
MsgBox ("Im Feld WERT nur Zahlen <= 255 erlaubt")
Else
If CheckBox_Sinv.Value = True Then
W = 255 - TextBox_SWert.Text 'Ausgabewert invertieren
Else
W = TextBox_SWert.Text 'Ausgabewert direkt zum Portbaustein
End If
SENDBYTE (51) 'Befehl 51 = Daten senden
SENDBYTE (3) 'Frame Anzahl = 3
SENDBYTE (Adr) 'Bus-Adresse des PCF 8574
SENDBYTE (0) 'Adresse MSB
SENDBYTE (W) 'Wert ausgeben
SENDBYTE (4) 'Endekennung
End If
If Modem_Antwort = False Then
MsgBox ("Fehler bei I2C-DATA")
End If
ErrorHandler:
Select Case ERR.Number 'Fehlernummer auswerten.
Case 0 'ok
Case 13
MsgBox ("Im Feld WERT nur Zahlen erlaubt")
TextBox_SWert.Text = ""
Case Else
MsgBox ("Fehler " & ERR.Number)
End Select
End Sub
Private Sub Command_LESEN_Click()
'Der Befehl I2C-Data 33 hex = 51 dez.
'liest oder schreibt bis zu 128 Bytes vom I2C-Slave
Dim Adr
Adr = Combo_LAdresse.Text 'Adresse aus Cobo-Box
SENDBYTE (51) 'Befehl 51 = I2C-DATA
SENDBYTE (3) 'Frame Anzahl = 3
SENDBYTE (Adr) 'Bus-Adresse des PCF 8574
SENDBYTE (0) 'Adresse MSB
SENDBYTE (1) '1 Byte lesen
SENDBYTE (4) 'Endekennung
If Modem_Antwort = True Then
If CheckBox_Linv.Value = True Then
TextBox_LWert.Text = 255 - D(1) 'Wert in Textbox eintragen invertiert
Else
TextBox_LWert.Text = D(1) 'Wert in Textbox eintragen
End If
Else
MsgBox ("Fehler bei I2C-DATA")
End If
End Sub
|