www.mikrocontroller.net

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


Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: thom (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lupin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.
Option Explicit On
Module Module1

    Sub Main()

    End Sub

End Module

Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal Cardadress As Long) As Long
Private Declare Sub CloseDevice Lib "k8055d.dll" ()
Private Declare Function ReadAnalogChannel Lib "k8005d.dll" (ByVal Channel As Long) As Long
Private Declare Sub ReadAnalog Lib "k8055d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long, ByVal Data As Long)
Private Declare Sub OuntputAllAnalog Lib "k8005d.dll" (ByVal Data1 As Long, ByVal Data2 As Long)
Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Long)
Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long)
Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Long) As Boolean
Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Long
Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Long) As Long
Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal Counternr As Long)
Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Long, ByVal DebounceTime As Long)


Private Declare Sub Connect_Click()
Dim CardAdress As Long
Dim h As Long
    CardAdress = 0 
    CardAdress = 3 - (Check1(0).Value + Check1(1).Value * 2
    h = OpenDevice(CardAdress)
    Select case h 
        case 0,1,2,3
            Label1.Caption = "Card " + Str(h) + " connected"
        case -1 
            Label1.Caption = "Card " + Str(CardAdress) + " not found"
        end select 
    end sub 
Private Sub From_Terminate()
    CloseDevice()
End Sub 

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VB?

VB.net
oder?

Autor: juppi (Gast)
Datum:

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

Fehlt eine Klammer

Autor: Philipp (Gast)
Datum:

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

Autor: Juppi J. (juppii)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: juppi (Gast)
Datum:
Angehängte Dateien:

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

Autor: Philipp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: Philipp (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: juppi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Was willst du denn steuern?

Hoffentlich ist es das richtige

Gruß

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vergessen
Debug exe Starten.
Alle benötigten Dateien sind im DebugVerzeichnis.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab die .txt gelesen. bin heute abend wieder da.

Autor: juppi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Philipp (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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^^

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: juppi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

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

Gruß

Autor: amateur (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.