Frequenzgenerator mit PB über DLL ansprechen
Verfasst: 29.08.2020 16:10
beim Velleman PCGU1000-Frequenzgenerator wird die DLL-Datei FGULINK.dll zur Ansteuerung mitgeliefert.
Es gibt Beispiele für VB und Delphi die zeigen daß das prinzipiell klappt. Siehe unten.
Nur wie kann ich diese DLL von PB aus zielführend ansprechen?
Die Idee war diese Befehle zu nutzen:
Nur leider erscheint das Menü nicht.
Was mache ich falsch?
Gibt es ein erprobtes Beispiel das ich zum Thema DLL probieren kann?
Grüße
Matthias
Beispiel für VB:
// Edit: Code-Tags hinzugefügt (Kiffi)
Es gibt Beispiele für VB und Delphi die zeigen daß das prinzipiell klappt. Siehe unten.
Nur wie kann ich diese DLL von PB aus zielführend ansprechen?
Die Idee war diese Befehle zu nutzen:
Code: Alles auswählen
If OpenLibrary(0, "FGULINK.dll") ; sollte die dll öffnen
CallFunction(0, "OpenGen") ; sollte den Generator bereit machen
CallFunction(0, "ShowGen") ; sollte ein Menü dazu anzeigen
EndIf
Was mache ich falsch?
Gibt es ein erprobtes Beispiel das ich zum Thema DLL probieren kann?
Grüße
Matthias
Beispiel für VB:
Code: Alles auswählen
Option Explicit
' Deklarationen für die DLL-Unterfunktionen aus FGULink.dll
Private Declare Sub SetGen Lib "FGULink.dll" (ByVal func As Long, ByVal freq As Single, ByVal ampl As Single, ByVal offset As Single)
Private Declare Sub SetSweep Lib "FGULink.dll" (ByVal freq1 As Single, ByVal freq2 As Single, ByVal ampl As Single, ByVal offset As Single, ByVal time As Single, ByVal Form As Long)
Private Declare Sub SetLibWave Lib "FGULink.dll" (ByVal freq As Single, ByVal ampl As Single, ByVal offset As Single, ByVal filter As Long, ByVal Pointer As String)
Private Declare Sub StartGen Lib "FGULink.dll" ()
Private Declare Sub StopGen Lib "FGULink.dll" ()
Private Declare Sub OpenGen Lib "FGULink.dll" ()
Private Declare Sub CloseGen Lib "FGULink.dll" ()
Private Declare Function GenReady Lib "FGULink.dll" () As Boolean
Private Declare Function GenStatus Lib "FGULink.dll" () As Long
Private Declare Sub ShowGen Lib "FGULink.dll" (ByVal status As Boolean)
Private Declare Sub AttOn Lib "FGULink.dll" (ByVal att As Boolean)
Private Declare Sub LogSweep Lib "FGULink.dll" (ByVal log As Boolean)
Private Sub Form_Terminate() ' Formular beenden
CloseGen ' Generator abschalten
End Sub
Private Sub Command5_Click() ' turn on generator
OpenGen ' Generator einschalten OpenGen
End Sub
Private Sub Command6_Click() ' turn off generator
CloseGen ' Generator abschalten CloseGen
End Sub
Private Sub Command2_Click() ' sinus 150Hz 8.5Vss 0.1Voffset
SetGen 1, 150, 8.5, 0.1 ' Generator einstellen SetGen
StartGen ' Generator starten
End Sub
Private Sub Command1_Click() ' rectangle 1500Hz 5.5Vss 2Voffset
SetGen 2, 1500, 6.5, 2 ' Generator einstellen SetGen
StartGen ' Generator starten
End Sub
Private Sub Command3_Click() ' triangle 1000Hz 5Vss 0Voffset
SetGen 3, 1000, 5, 0 ' Generator einstellen
StartGen ' Generator starten
End Sub
Private Sub Lib_Click() ' 1000Hz 5Vss 0Voffset filter on pointer auf burst2.lib
Dim s As String ' Stringvariable s für Pointer
s = "burst2.lib" ' Library burst2.lib
SetLibWave 1000, 5, 0, 1, s ' LibWave auswählen
StartGen ' Generator starten
End Sub
Private Sub Sweep_Click() ' sweep log 100Hz-20000Hz 5Vss 0Voffset 5s sinus
LogSweep (True) ' Generator auf log sweep
SetSweep 100, 20000, 5, 0, 5, 1 ' Generator einstellen
StartGen ' Generator starten
End Sub
Private Sub Command4_Click() ' sweep lin 1000Hz-20000Hz 5Vss 0Vss 10Voffset rect
LogSweep (False) ' Generator auf lin sweep
SetSweep 1000, 20000, 5, 0, 10, 2 ' Generator einstellen
StartGen ' Generator starten
End Sub
Private Sub Run_Click(Index As Integer) '
StartGen ' Generator starten
End Sub
Private Sub Stop_Click(Index As Integer) ' stop
StopGen ' Generator stoppen
End Sub
Private Sub Check1_Click() ' 40dB Attenuator On/Off toggle
If Check1.Value = 1 Then AttOn (True) Else AttOn (False)
End Sub
Private Sub Check2_Click() ' Hide Generator On/Off toggle
If Check2.Value = 1 Then ShowGen (False) Else ShowGen (True)
End Sub
Private Sub Timer1_Timer() ' Timer1 100ms
If GenReady Then Label1.Caption = "Generator Ready" _
Else: Label1.Caption = "Generator Not Ready" ' Label1
Label2.Caption = "Status: " & GenStatus ' Label2
End Sub