K8055 USB Aus/Eigabekarte

  • VB.NET

Es gibt 41 Antworten in diesem Thema. Der letzte Beitrag () ist von zn-gong.

    K8055 USB Aus/Eigabekarte

    Hallo Leute

    Wie versprochen..

    Immer wieder kommen die gleichen Problem vor,beim Ansteuern dieser Karte.

    Habe heute nochmals gesucht ,aber etwas Ähnliches wie ein lauffähiges Musterprojekt nicht gefunden.

    Habe mir die kleine Mühe gemacht dies zu versuchen.

    Der Quellcod ist Irgendwo aus dem Netz.

    Es geht nur um die Passenden Dlls und den zugehörigen exen.

    Ich habe versucht es einfach zu halten und die nötigen Dateien im Projekt Debug kopiert.

    Die exen müssen getrennt geladen werden, denn für eine Zip sind sie zu groß.

    Diese exen ins debug kopieren.

    Sie werden von der Dll aufgerufen.

    Leider hat es nicht gefunzt,wenn ich die Dateien alle zur besseren Übersicht in ein Verzeichnis Kopieren

    und aufrufen wollte.

    Die K8055D.dll auf dieser Seite Ist veraltet, wenn diese benutzt wird können die anderen benötigten exen wegfallen.

    hs-weingarten.de/~georgi/LabVI…erimentier/Debug/?C=S;O=A

    Vielleicht macht sich mal einer dran das alle benötigten Dateien aus einen Verzeichnis aufgerufen werden können.

    Denke das dies nichts für Tipps und Tricks ist, da es nichts neues einschließt...oder.

    Edit:Habe mal die Exen dazugepackt,sollten die Links nicht funktionieren.

    Grüße
    Dateien
    • K8055_Neu.zip

      (75,65 kB, 956 mal heruntergeladen, zuletzt: )
    • BitteLesen.txt

      (569 Byte, 647 mal heruntergeladen, zuletzt: )
    • Debug.zip

      (690,28 kB, 420 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „fraju“ ()

    Schön, dass es hier mal eine Anleitung zu dem Thema gibt. (Hab erst jetzt rein geguckt :whistling:)
    Als Freund von freiliegender Verkabelung rate ich aber trotzdem zu Fädeldraht für Signalleitungen und dicke Drähte für Leistungs-/Versorgungsleistungen. Beides an der Unterseite. Sieht dann auch gleich viel hübscher aus ;)

    Was ist eigentlich das weiße links oben? Hat irgendwie was von einem Leistungswiderstand, das wo die Pins sein müssten, sieht aber etwas eigen aus!?

    PS: Ich hab die unnötige Diskussion zwischen Alex und dir entfernt. Macht nur unnötig den Thread voll.
    Hallo Mad

    War die richtige Entscheidung!

    Ja es ist ein Last-R in der Fahrspannung.Primitive Art der zusätzliche I-Begrenzung bei Fahrstromkurzschschluß.Der Reglerschaltkreis macht 1,7 A noch alles DDR Material.

    War auch ein Demo für die Nichtelektronik Clubkollegen.Wurde auch mit Touchscreen gesteuert

    Der AHA Effekt ist dadurch sicher.

    Geht alles eleganter zu lösen.

    Gruß
    hi

    bastel zur zeit auch mit dem usb board rum und will damit auch einen teil der meiner anlage steuern.

    dazu habe ich noch zwei fragen.

    1. hast du die relais einfach an den ausgang gehängt. oder dazwischen noch einmal mit einem transistor verstärkt.

    2. das ist jetzt eine frage zum programieren. also ich schafe es den ausgänge zu beschalten und den zähler auszulesen aber wie schaffe ich es eingänge zu verarbeiten?

    habe es mal hiermit versucht. klappt aber so nicht:

    VB.NET-Quellcode

    1. Dim kanal1 As Boolean
    2. Dim kanal2 As Boolean
    3. Dim kanal3 As Boolean
    4. Dim kanal4 As Boolean
    5. Dim kanal5 As Boolean
    6. Dim zähler As String
    7. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    8. OpenDevice(0)
    9. kanal1 = ReadDigitalChannel(1)
    10. kanal2 = ReadDigitalChannel(2)
    11. kanal3 = ReadDigitalChannel(3)
    12. kanal4 = ReadDigitalChannel(4)
    13. kanal5 = ReadDigitalChannel(5)
    14. If kanal1 = True Then
    15. Label2.Text = "kanal1 = 1"
    16. End If
    17. If kanal2 = True Then
    18. Label3.Text() = "kanal2 = 1"
    19. End If


    habe jetzt nur den teil kopiert wo das mit dem eingang drin steht.

    hat jemand eine idee?
    okay dann kann ich die sache ganz gelasen angehen

    bekomm das aber mit dem eigängen nicht hin. ich will damit ereichen das sobald eine signal über den input kommt das dann ein boolen= true ist und wenn dan ein zweites signal kommt das sich diese variable wieder zurücksetzt,

    habe das ganze mal mit einem, timer probiert aber so wie ich es probiert habe funzt es halt nicht. kann mir einer meinen fehler in meinem program zeigen oder einfach einen vorschlag machen. das mit den eingängen steht ganz zum schluss.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Inherits System.Windows.Forms.Form
    3. Dim n As Integer
    4. Dim cbi(5) As CheckBox
    5. Dim cbo(8) As CheckBox
    6. Dim rb1(4) As RadioButton
    7. Dim rb2(4) As RadioButton
    8. Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    9. Private Declare Sub CloseDevice Lib "k8055d.dll" ()
    10. Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer
    11. Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
    12. Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
    13. Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
    14. Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    15. Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
    16. Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
    17. Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    18. Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)
    19. Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    20. Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
    21. Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    22. Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
    23. Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean
    24. Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer
    25. Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer
    26. Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)
    27. Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)
    28. Dim kanal1 As Boolean
    29. Dim kanal2 As Boolean
    30. Dim kanal3 As Boolean
    31. Dim kanal4 As Boolean
    32. Dim kanal5 As Boolean
    33. Dim zähler As String
    34. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    35. OpenDevice(0)
    36. If kanal1 = True Then
    37. Label2.Text = "kanal1 = 1"
    38. End If
    39. If kanal2 = True Then
    40. Label3.Text() = "kanal2 = 1"
    41. End If
    42. If kanal1 = False Then
    43. Label2.Text = "kanal1 = 0"
    44. End If
    45. End Sub
    46. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    47. SetDigitalChannel(2)
    48. End Sub
    49. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    50. ClearDigitalChannel(2)
    51. End Sub
    52. Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
    53. CloseDevice()
    54. Close()
    55. End Sub
    56. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    57. zähler = ReadCounter(1)
    58. Label1.Text() = zähler
    59. End Sub
    60. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    61. ResetCounter(1)
    62. End Sub
    63. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    64. Timer1.Enabled = False
    65. If ReadDigitalChannel(1) = True Then
    66. kanal1 = True
    67. ElseIf ReadDigitalChannel(1) = False Then
    68. kanal1 = False
    69. End If
    70. Timer1.Enabled = True
    71. End Sub
    72. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „wallenstein“ ()

    Hallo

    VB.NET-Quellcode

    1. Dim EingBits As Byte
    2. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. Label1.Text = ReadDigitalChannel(1)
    4. Label2.Text = ReadDigitalChannel(2)
    5. Label3.Text = ReadDigitalChannel(3)
    6. Button1.Text = ReadCounter(1)
    7. EingBits = ReadAllDigital() 'hier fragst du alle eingänge ab und testes dan einzelne Bit
    8. 'ist schneller wie z.B. ReadDigitalChannel(1/2/3/4/5)
    9. Button3.Text = EingBits
    10. '''''''''''''' Das nachfolgende geht auf jeden Fall besser zu machen,Programmtechnisch
    11. If EingBits = 0 Then Me.Text = " Hier wird nur Eizelbitbetätigung angezeigt"
    12. If (EingBits And 1) <> 0 Then Me.Text = " bit0 Aktiv"
    13. If (EingBits And 2) <> 0 Then Me.Text = " bit1 Aktiv"
    14. If (EingBits And 4) <> 0 Then Me.Text = " bit2 Aktiv"
    15. If (EingBits And 8) <> 0 Then Me.Text = " bit4 Aktiv"
    16. If (EingBits And 16) <> 0 Then Me.Text = " bit5 Aktiv"
    17. End Sub



    Formuliere deine Frage nochmal.

    Gruß
    okay mit der lösung kann ich was anfangen. aber ich will es erreichen das ich es schaffe wenn ich z.B. input 1 drücke das dann z.B. kanal1 auf true gesetzt wir und wenn ich ein signal von input 2 bekomme das dann der kanal1 auf false gesetzt wird.

    VB.NET-Quellcode

    1. Private Sub Aktion()
    2. If ReadDigitalChannel(1) Then SetDigitalChannel(1)
    3. If ReadDigitalChannel(2) Then ClearDigitalChannel(1)
    4. End Sub


    Diese Sub im Timertick aufrufen.

    Fehler Abfangen muss du selbst machen!
    .....und ein wenig nachdenken.

    Wie willst du den deine Modellbahn steuern?
    Mache mal ein Foto!

    Edit : Du hast aber noch einige Ungereimtheiten in deinen Testprogramm

    Gruß

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „fraju“ ()

    danke für die hilfe.
    habs jetzt geschafft die sache so weit zu programmieren das das passiert was ich will.

    ich dachte mir ich fang mit einer einfachen blocksteuerung und ein paar weichen an. habe aber noch keine genau verdrahtung und kann dir daher kein foto zeigen.
    aber wenns fertig ist kann ich ja mal eins hochladen.
    ich bin noch dabei

    versuche zur zeit erst einmal die signal und weichen über den pc zu steuern. mein problem zur zeit ist das ich ein ausgangssignal nur eine bestimmte zeit anliegen darf und dann wieder weg sein muss, weil ich die spule von den weichen und signalen nicht dauerhaft unter spannung stehen sollten. mach das zur zeit mit timern hat vielleicht noch eine andere idee. ist halt ein riesen aufwand mit den timmern
    hi

    die blocksteuerung bleibt jetzt erst mal weg will zuerst einmal nur die signale und weichen stellen.
    weichen sind ohne Endschaltung und die geschwindigkeit und vor und zurück laüft über den Regeltrafo.
    So und jetzt kommt das große hardwareproblem. ich habe eine Märklin bahn und die läuft nun halt mal mit wechselstrom und das usb-board mag nicht umbedingt wechselstrom.
    ich dachte mir halt ich häng ein relai an den ausgang vom Usb-board und schalt das relai kurz um einen Steuerimpuls für die signale und weichen zu bekommen.
    schaltpaln folgt in Kürze

    edit:

    Hast mich auf eine idee gebracht. Den schaltzustand der signale kann ich über den input abfragen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „wallenstein“ ()

    Hallo
    Weichen Ansteuerung kann Binary verschlüsselt sein. Um Ausgabe Signale zu sparen. (Schaltung 8Weichen mit Abfrage)
    Abfrage ebenfalls multiplex,wenn es auch mit deiner Karte langsam ist.

    Gruß
    Bilder
    • weichenSteuerung.GIF

      11,92 kB, 919×492, 643 mal angesehen
    em mal eine frage:
    ich hab eine carerabahn evulution
    udn das gibt es ja von carera ein set womit ich die bahn über pc steuern kann aber das will ich selber machen
    weiß einer wie ich das machen kann?
    das system von carera funktionirt so:
    strom über pc in die carera bahn(glaub ich)
    im programm (am pc)
    ein regler hoch schieben und die autos fahren los
    runter schieben die autos bleiben stehen
    aber wie spreche ich den usb an dass er strom hinzufügen und abnehmen soll?
    so zum ansprechen brauchst du immer eine .dll datei. glaube ich zumindest. aber was ich mir sich denke das die carerrabahn nicht den ganzen strom vom usb bekommt. sonderen nur einen steuerimpuls der dann in der bahn verstärkt wird. z. B. durch transistoren.


    so und jetzt zuürck zum K8055

    also ich habe jetzt erst einmal ein völlig neues problem.
    Ich habe 2 karten. die eine hat die adresse 0 und die andere hat die adresse 1

    so mein progamm funktionier für jede karte einzeln aber wenn ich beide zusammen betreibe dann kann ich nur die ausgänge einschalt aber nicht mehr ausschalten oder sie schalten irgendwann zufällig aus.
    wie kann ich das verhinderen??