Forum: Projekte & Code K8055 Interface Board - Dll in Vb einbinden


von Philipp (Gast)


Lesenswert?

hallo,
ich habe seit längerem das oben benannte board. funktioniert alles 
einwandfrei mit beipspielprogrammen usw. ich wollte nun eigene 
anwendungen in vb schreiben aber bekomme die dll einfach nicht 
eingebunden. habe keine wirklichen erfahrungen in vb lediglich verfüge 
ich über grundkenntnisse in fb. bitte um rat.

von thom (Gast)


Lesenswert?

Also soweit ich das verfolgen kann, handelt es sich um die K8055D.dll.
Dies ist eine Standard C(++) DLL. Die kannst du nicht in VB einbinden, 
sondern du mußt die Einsprungpunkte der DLL deklarieren, z. bsp. so:
Private Declare OpenDevice Lib "k8055d.dll" (byval ladress as long) as 
long

Damit ist der Aufruf deklariert und vb findet den Einsprungpunkt. einzig 
der returncode, der hier als long deklariert ist, muß nicht unbedingt 
ein long sein.
Für die Applikation mußt du sicherstellen, daß die k8055.dll erreichbar 
ist, also entweder im Windows Suchpfad oder im Applikationsverzeichniss 
vorhanden ist. Fertig. (natürlich muß jede gewünschte Funktion 
deklariert sein)
Die zugehörigen DLL's von der k8055d müssen auch erreichbar sein, kann 
mittels einem Dependency Viewer überprüft werden.

Hoffe das hilft.

von Philipp (Gast)


Lesenswert?

ich hab den code aus der pdf von der cd. für vb. die dll is im system 32 
ordner aber der compiler zeigt mir trotzdem nen fehler an. das is der 
punkt an dem ich eben nicht weiter komme.

von Lupin (Gast)


Lesenswert?

> zeigt mir trotzdem nen fehler an.

Wenn du wirklich den Fehler "nen fehler" hast ist das wahrscheinlich ein 
ganz spezieller Fehler, der nur in Zusammenhang mit der k8055d.dll 
auftritt. Vielleicht hilft eine neue Version der DLL um "nen fehler" zu 
beheben.

Dein Code sieht gut aus, da sind keine Fehler drin.

von Philipp (Gast)


Lesenswert?

ja ich habe "nen fehler". sorry für die präzise angabe (=
das ist der code der nicht funktioniert. ich bekomme in fast jeder zeile 
den fehler "die anweißung ist in einem namespace ungültig" angezeigt.
meines wissens habe ich die neuste version der dll.
1
Option Explicit On
2
Module Module1
3
4
    Sub Main()
5
6
    End Sub
7
8
End Module
9
10
Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal Cardadress As Long) As Long
11
Private Declare Sub CloseDevice Lib "k8055d.dll" ()
12
Private Declare Function ReadAnalogChannel Lib "k8005d.dll" (ByVal Channel As Long) As Long
13
Private Declare Sub ReadAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
14
Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long, ByVal Data As Long)
15
Private Declare Sub OuntputAllAnalog Lib "k8005d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
16
Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
17
Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
18
Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
19
Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
20
Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Long)
21
Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
22
Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
23
Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
24
Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
25
Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean
26
Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Long
27
Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long
28
Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal Counternr As Long)
29
Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long)
30
31
32
Private Declare Sub Connect_Click()
33
Dim CardAdress As Long
34
Dim h As Long
35
    CardAdress = 0 
36
    CardAdress = 3 - (Check1(0).Value + Check1(1).Value * 2
37
    h = OpenDevice(CardAdress)
38
    Select case h 
39
        case 0,1,2,3
40
            Label1.Caption = "Card " + Str(h) + " connected"
41
        case -1 
42
            Label1.Caption = "Card " + Str(CardAdress) + " not found"
43
        end select 
44
    end sub 
45
Private Sub From_Terminate()
46
    CloseDevice()
47
End Sub

von juppi (Gast)


Lesenswert?

VB?

VB.net
oder?

von juppi (Gast)


Lesenswert?

CardAdress = 3 - (Check1(0).Value + Check1(1).Value * 2

Fehlt eine Klammer

von Philipp (Gast)


Lesenswert?

also ich hab den compiler "microsoft visual basic 2008 express edition". 
ist der falsche oder wie?!

von Juppi J. (juppii)


Lesenswert?

Hallo
Das muß gehen.
Auch mit Long.

Ich habe VB2005.net da gibt es mit long manchmal Schwierigkeiten.
Ersetze dann alles mit Integer.

Kopiere mal alle benötigten Dateien ins Debug Verzeichnis.
K8055D.dll
FASTTime32.dll
K8055E0.exe
K8055E1.exe
K8055E2.exe
K8055E3.exe

Ich habe das so gemacht,damit alles schön beisammen ist.

Bildschirmcopy vom Fehler wäre nett.
Gruß

von juppi (Gast)


Angehängte Dateien:

Lesenswert?

Mit Deinen Code
und diesen Dateien im Debug.
Finde die Quelle nicht.

von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

erstmal danke für die hilfe.ich weiß einfach nicht was ich falsch mache. 
ich erstelle eine consolenanwendung kopiere den code rein und er zeigt 
mit die 34 (glaue ich) fehler an. wie schon gesagt die dll ist im 
system32 ordner und das mit dem debuggen bekomme ich nicht auf die 
reihe. wenn ich es richtig vertanden habe sucht das programm nach 
fehlern im quellcode? wo muss ich diese dateien hinkopieren?

von juppi (Gast)


Lesenswert?

Deine Fehler sind alle im Modul1

Zeige mal den cod vom Modul1,
vielleicht finden wir den Fehler.

Wenn ich mein Projekt wiederfinde kann ich es hier reinstellen.
Das meiste ist auch nur aus dem Netz,aber es läuft.

Gruß

von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

wäre sehr nett,weil ich mich in vb nicht wirklich auskenne und mir das 
dann mal anschauen könnte und versuchen könnte es zu verstehn. wie schon 
gesagt ich verfüge lediglich über grundkenntisse in fb. wäre schade wenn 
es jz am programmieren scheitern würde das zusammenlöten und alles hab 
prima funktionniert. die testprogramme sind auch alle gelaufen.

von juppi (Gast)


Angehängte Dateien:

Lesenswert?

Was willst du denn steuern?

Hoffentlich ist es das richtige

Gruß

von juppi (Gast)


Lesenswert?

vergessen
Debug exe Starten.
Alle benötigten Dateien sind im DebugVerzeichnis.

von Philipp (Gast)


Lesenswert?

vorerst wollte ich nur ein paar kleine versuche machen. die ausgänge 
testen und sowas. aber jetzt blicke ich garnichtmehr druch. habe die 
projektdatei glaube ich konvertiert weil es in einer älteren version 
geschrieben wurde. aber ich finde da nirgends einen code der in i.einer 
art und weiße was mit der dll zu tuhn hat?

von Philipp (Gast)


Lesenswert?

hab die .txt gelesen. bin heute abend wieder da.

von juppi (Gast)


Lesenswert?

Hast du einfach mal die Debug.exe gestartet.
Das ist ein VB.2005 Projekt,was soll hier konvertiert werden.
Die Dll wird im Modul aufgerufen.

von Philipp (Gast)


Lesenswert?

beim öffnen der projektdatei kam eine meldung das dieses konvertiert 
werden müsse weil sie mit einer älteren version von vb geschrieben 
wurde. aber hat alles geklappt. in dem ordner ist die datei 
"vers_dll_vb.net.exe" das beispielprogramm. das funktioniert auch. alles 
klar habs gefunden danke^^

von hans (Gast)


Lesenswert?

also mir geht das ähnlich: ich hab auch vb 2008
bei mir ist ein fehler, den ich nich behoben bekomme der:
h = OpenDevice(CardAdress)

OpenDevice ist nicht deklariert

wie kann ich den beheben????????????????????????????????

die Text´stelle ist diese:


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles Button1.Click
        Dim CardAddress As Integer
        Dim h As Integer
        CardAddress = 3
        If CheckBox1.Checked Then CardAddress = CardAddress - 1
        If CheckBox2.Checked Then CardAddress = CardAddress - 2
        h = OpenDevice(CardAddress)


        Select Case h
            Case 0, 1, 2, 3
                Label1.Text = "Roboterarm durch Adresse" + Str(h) + " 
verbunden"
                Timer2.Start()

            Case -1
                Label1.Text = "Roboterarm nicht durch Adresse" + 
Str(CardAddress) + "verbunden"
            Case -2
                Label1.Text = "K8055E" + Mid(Str(CardAddress), 2, 1) + 
".EXE nicht gefunden"
        End Select
        If h >= 0 Then Timer1.Enabled = True

    End Sub


am anfang hab ich aber :
Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal ladress As 
Long) As Long
stehen.
Was is falsch
Achja das sind nur ausschnitte
danke im vorraus(bin verzweifelt)

von juppi (Gast)


Angehängte Dateien:

Lesenswert?

Hallo

Alle Dateien im Debug Verzeichnis.
Nur für Adr.00
Wenn du noch nicht Konvertieren willst starte Debug.exe

Gruß

von amateur (Gast)


Lesenswert?

Ich habe auch ein Problem mit der Programmierung, ich habe nun eine 
plausible Erklärung gefunden, wenn diese falsch ist wäre es nett wenn 
ihr mich darauf hinweisen könntet. Ich kann das beispielprogramm welches 
auch auf der CD war, nicht starten, erklärung dafür war bei mir, dass 
ich schon nicht mahr auf xp sondern Vista arbeite, nun hab ich auf 
Velleman eu ganz versteckt gelesen, dass man Programme programieren 
kann, die auf allen Windows Sysztemen laufen, bis auf Vista und windows 
7. Ich glaube nun, dass das einfach nicht mehr bei Vista geht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.