Form friert ein, Serieller Port abfragen

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von xxgamerz.

    Form friert ein, Serieller Port abfragen

    Hey Com,

    Ich weiß, is mein erster Beitrag hier, drum kurz was über mich. Wer das nicht lesen will, kann ab Problem: weiterlesen. Ich programmiere fast ein Jahr mit VB, anfangs mit 2005, jetzt mit VS 2010 Ultimate. Rein Softwaretechnisches, ohne Hardware geht schon recht flüssig, und jetzt hab ich mit Hardwareprogrammierung begonnen. Mit Schleifen, BGW oder Threads habe ich auch noch nicht gearbeitet.



    Problem:

    Ich habe folgenden Code, bei dem die Form bei dem Event Button1.Click immer einfriert. Woran es liegt, keine Ahnung. IntelliTrace hilft mir auch nicht, ebensowenig wie die Fehlercodes, die mir Windows ausspuckt. Hier der Code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Declare Function Inp Lib "inpout32.dll" Alias _
    3. "Inp32" (ByVal PortAddress As Integer) As Integer
    4. Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" _
    5. (ByVal PortAddress As Integer, ByVal Value As Integer)
    6. Dim Klick As Int64
    7. Dim an As Integer
    8. Dim Stufe As Integer
    9. Dim Prüfen As Integer
    10. Dim Laufzeit As Integer = 0
    11. Dim Gestartet As Integer = 0
    12. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    13. Watcher()
    14. Laufzeit = 1
    15. If Klick = 0 Then
    16. Out(&H378, 1)
    17. End If
    18. If Klick = 100 Then
    19. Out(&H378, 4)
    20. End If
    21. While Laufzeit = 1
    22. If Gestartet = 1 Then Label2.Text = "Gestartet"
    23. If Gestartet = 0 Then Label2.Text = "Gestoppt"
    24. End While
    25. End Sub
    26. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    27. End Sub
    28. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    29. Klick += 1
    30. End Sub
    31. Private Function Watcher()
    32. While Laufzeit = 1
    33. If Inp(&H378) = True Then
    34. an = 1
    35. Else
    36. an = 0
    37. End If
    38. If an = 1 Then Gestartet = 1
    39. If an = 0 Then Gestartet = 0
    40. End While
    41. End Function
    42. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    43. Out(&H378, 0)
    44. Klicks = 0
    45. Timer1.Stop()
    46. End Sub
    47. End Class


    Hier die Fehlermeldung von Windows:
    Problemsignatur:
    Problemereignisname: AppHangB1
    Anwendungsname: LPT-Test.vshost.exe
    Anwendungsversion: 10.0.30319.1
    Anwendungszeitstempel: 4ba2084b
    Absturzsignatur: 25bd
    Absturztyp: 256
    Betriebsystemversion: 6.1.7600.2.0.0.256.1
    Gebietsschema-ID: 1031
    Zusätzliche Absturzsignatur 1: 25bd01f1522658d69f1a6d244ab5f0f0
    Zusätzliche Absturzsignatur 2: 2374
    Zusätzliche Absturzsignatur 3: 2374d5237476afa966cb046612679a5d
    Zusätzliche Absturzsignatur 4: 25bd
    Zusätzliche Absturzsignatur 5: 25bd01f1522658d69f1a6d244ab5f0f0
    Zusätzliche Absturzsignatur 6: 2374
    Zusätzliche Absturzsignatur 7: 2374d5237476afa966cb046612679a5d

    Hoffe mir kann jemand helfen, und bei Fragen melden :)
    Ooooops, mal wieder ein fail von mir. Ich bau ne Relaiskarte, um eine externe Pumpe zu steuern. Der erste und der zweite Datenpin schalten den Motor durch die Relais frei, der Dritte ist zur Abfrage ob der Stromkreis Freigeschalten ist, und der Vierte steuert einen Schrittmotor, der ein Poti steuert, um den Motor einigermaßen stufenlos zu schalten. Bei fragen kann ich auch den Schaltplan hochladen.
    Also geht es jetzt um Serielle oder Parallele Schnittstelle? Für mich hört sich die Beschreibung mit Relais ja eher nach LPT an^^
    (Wofür du die inpout32.dll verwenden würdest - Suche sagt mehr)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    auuhh verdammt nächstes mal besser gucken...xD
    du musst deine While Schleifen in einen Thread stecken, außerdem sind die bisher ja noch Endlos, da die Variable Laufzeit nirgends auf <> 1 gesetzt wird...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Doch, bei Button1.Click. Wie muss ich dann variablen Threadsicher übergeben, oder macht das nichts, also kein Fehler?






    // EDIT: Warum kann ich die Relais nicht ansteuern? Die benötigen 5V und 5 - 15 mA. Oder gibt's da spezielle? Extra für so schaltplatinen?

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

    xxgamerz schrieb:

    Mein Paralleler Port ist auf einer Steckkarte, da mein Mainboard keinen hat. Am Port gehen laut datenblatt max 5V 30

    wenn das stimmt 5V/30mA kannst du Relais mit 5V/10mA ansteuern.Trotzdem mache eine neue Zeichnung diese Funktioniert nicht.
    Nenne mal die RelaisType.
    Oben hast du editiert 5-15mA,das glaube ich nicht,diese haben 2Wechsler.
    MfG
    Oben sind nur 2 Wechsler drin, weil sonst die Simulation nich geht. Is n ewiger Bug. Das Relais ist ein bzw. mehrere Finder F40527-05

    Die Zeichnung müsste aber gehen, bis auf den Teil, der abruft, ob der Motor in Betrieb ist, oder nicht.