End If
Me.lblDeviceInfo.Caption = GetAnagateInfo(hHandle)
nBufferWriteLen = GetCommand(arrWrite)
nBufferReadLen = nBufferWriteLen
nRC = SPIDataReq(hHandle, VarPtr(arrWrite(1)), nBufferWriteLen, _
If nRC = 0 Then
Else
End If
nRC = SPICloseDevice(hHandle)
End If
End Sub
Über einen Aufruf von SPISetGlobals werden die globalen Einstellungen
1
am Gerät vorgenommen. Die Parameterwerte werden den entsprechenden
Eingabefeldern des Dialogs entnommen.
Die Funktion GetCommand wandelt das SPI-Kommando, das über die Oberfläche
2
als Text eingegeben wurde, in ein Bytearray um.
Über die Funktion SPIDataReq wird ein Befehl auf dem SPI-Bus abgesetzt. Das
3
Bytearray arrWrite enthält das SPI-Kommando und im Feld arrRead sind im
Erfolgsfall die zurückgelieferten Daten abgelegt. Für beide Parameter muss die
Feldgröße angegeben werden. Es sei hier bemerkt, dass die Funktion keine
Plausibilität der Befehlsfolge durchführt. Der Anwender muss in jedem Fall auch
genügend Speicherplatz für die zurückgelieferten Daten bereitstellen.
Um die Daten im Schreib- bzw. Empfangspuffer bequem verarbeiten zu können,
wurde jeweils ein Bytearray als VB6-Datentyp gewählt. Damit dies funktioniert,
muss an die DLL-Funktion die tatsächliche Speicheradresse der Felddaten
übergeben werden. Dies wird durch die Anwendung der Funktion VarPtr auf
das erste Feldelement erreicht.
7.3. Programmiersprache VB.NET
Selbstverständlich können die Funktionen der AnaGate-API auch mit .NET-
Programmiersprachen verwendet werden. In diesem Fall müssen die verwendeten
Funktionen lediglich korrekt deklariert werden. Die Deklaration an sich kann
prinzipiell in einer beliebigen .NET-Sprache erfolgen. Das Laden und Entladen der
DLL erfolgt automatisch durch das .NET-Framework.
7.3.1. CAN Console-Anwendung VB.NET
Das folgende Programmierbeispiel für VB.NET zeigt, wie eine Verbindung mit dem
AnaGate CAN aufgebaut wird und wie über eine Callback-Funktion empfangene CAN-
Telegramme verarbeitet werden können.
Declare Function CANOpenDevice Lib "AnaGateCAN" (ByRef Handle As Int32, _
Programmier-Beispiele
sText = sText & "Fehler bei SPISetGlobals: " & GetErrorMsg(nRC) & vbCrLf
For I = 1 To nBufferReadLen
sByteText = sByteText & "0x" & ToHex(arrRead(I)) & " "
Next I
Me.txtBufferRead = sByteText
sText = sText & "SPIDataReq OK: " & vbCrLf
sText = sText & "Fehler bei SPIDataReq: " & GetErrorMsg(nRC) & vbCrLf
2
VarPtr(arrRead(1)), nBufferReadLen)
ByVal ConfirmData As Int32, _
85
© 2007-2015 Analytica GmbH
3