Vergleich

  • VB.NET
  • .NET (FX) 4.0

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von janengel.

    Hi ich bin es mal wieder,
    Ich möchte das, sobald man einen button drückt, die Daten einer Nemeric up down mit dem Text eines labels verglichen wird, solange wie Numericupdown < Label
    soll eine aktion ausgeführt werden (Die heißt setDigitalChannel(3) ) .
    und mit einem 2. Button soll der Prozess gestoppt werden.
    Bitte um Hilfe
    (bin anfänger)
    Dann musst du einen globalen Boolean anlegen. In der Click-Sub des 2. Buttons setzt du diesen auf True. Dann brauchst du noch eine While-Schleife die solange arbeitet, solange das Value des NumericUpDowns kleiner ist, als der Text des Labels (in eine Zahl konvertiert). In jedem Durchlauf der While-Schleife überprüfst du den Boolean und falls dieser True ist, verlässt du die Schleife vorzeitig.

    Lg :)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim n As Integer
    3. Dim Temp As Integer
    4. Dim m As Integer
    5. Dim z As Integer
    6. Private Declare Function OpenDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    7. Private Declare Sub CloseDevice Lib "k8055d.dll" ()
    8. Private Declare Function Version Lib "k8055d.dll" () As Integer
    9. Private Declare Function SearchDevices Lib "k8055d.dll" () As Integer
    10. Private Declare Function SetCurrentDevice Lib "k8055d.dll" (ByVal CardAddress As Integer) As Integer
    11. Private Declare Function ReadAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Integer
    12. Private Declare Sub ReadAllAnalog Lib "k8055d.dll" (ByRef Data1 As Integer, ByRef Data2 As Integer)
    13. Private Declare Sub OutputAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer, ByVal Data As Integer)
    14. Private Declare Sub OutputAllAnalog Lib "k8055d.dll" (ByVal Data1 As Integer, ByVal Data2 As Integer)
    15. Private Declare Sub ClearAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    16. Private Declare Sub SetAllAnalog Lib "k8055d.dll" ()
    17. Private Declare Sub ClearAllAnalog Lib "k8055d.dll" ()
    18. Private Declare Sub SetAnalogChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    19. Private Declare Sub WriteAllDigital Lib "k8055d.dll" (ByVal Data As Integer)
    20. Private Declare Sub ClearDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    21. Private Declare Sub ClearAllDigital Lib "k8055d.dll" ()
    22. Private Declare Sub SetDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer)
    23. Private Declare Sub SetAllDigital Lib "k8055d.dll" ()
    24. Private Declare Function ReadDigitalChannel Lib "k8055d.dll" (ByVal Channel As Integer) As Boolean
    25. Private Declare Function ReadAllDigital Lib "k8055d.dll" () As Integer
    26. Private Declare Function ReadCounter Lib "k8055d.dll" (ByVal CounterNr As Integer) As Integer
    27. Private Declare Sub ResetCounter Lib "k8055d.dll" (ByVal CounterNr As Integer)
    28. Private Declare Sub SetCounterDebounceTime Lib "k8055d.dll" (ByVal CounterNr As Integer, ByVal DebounceTime As Integer)
    29. Private Declare Function ReadBackDigitalOut Lib "k8055d.dll" () As Integer
    30. Private Declare Sub ReadBackAnalogOut Lib "k8055d.dll" (ByRef Buffer As Integer)
    31. Private Sub Verbinden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Verbinden.Click
    32. Dim CardAddress As Integer
    33. Dim h As Integer
    34. CardAddress = 3
    35. If CheckBox1.Checked Then CardAddress = CardAddress - 1
    36. If CheckBox2.Checked Then CardAddress = CardAddress - 2
    37. h = OpenDevice(CardAddress)
    38. Select Case h
    39. Case 0, 1, 2, 3
    40. Label1.Text = " Verbunden"
    41. Case -1
    42. Label1.Text = " Nicht Verbunden. Bitte erneut Versuchen"
    43. End Select
    44. If h >= 0 Then Timer1.Enabled = True
    45. End Sub
    46. Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
    47. ClearAllAnalog()
    48. ClearAllDigital()
    49. CloseDevice()
    50. End Sub
    51. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    52. Dim i As Integer
    53. Dim Data1 As Integer
    54. Dim Data2 As Integer
    55. Timer1.Enabled = False
    56. i = ReadAllDigital
    57. ReadAllAnalog(Data1, Data2)
    58. Temp1.Text = CByte(Data1) * 270 / 255
    59. Timer1.Enabled = True
    60. z = CByte(Data1) * 270 / 255
    61. End Sub
    62. Private Sub Motoran_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Motoran.Click
    63. SetDigitalChannel(1)
    64. End Sub
    65. Private Sub Motoraus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Motoraus.Click
    66. ClearDigitalChannel(1)
    67. End Sub
    68. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    69. End Sub
    70. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    71. End Sub
    72. Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
    73. SetDigitalChannel(2)
    74. End Sub
    75. Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
    76. ClearDigitalChannel(2)
    77. End Sub
    78. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    79. End Sub
    80. End Class

    das hab ich bisher fehlt nur der code für button 1 (Start) und button 2 (Stop)
    hab gestern erst mit vb angefangen
    Das Label heißtTemp1

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

    janengel schrieb:

    solange wie Numericupdown < Label
    soll eine aktion ausgeführt werden (Die heißt setDigitalChannel(3) ) .
    sowas geht nicht in einer Schleife - es sei denn, du verwendest den Async-Pattern.

    Ansonsten brauchst du einen Timer, der mw. alle 300ms ein Tick-Event auslöst und in diesem TickEvent mach mw deinen Kram.

    Und der Button sollte dann einfach den Timer starten.
    Fehler 1 Ein Verweis auf die Assembly "System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", die den Typ "System.Windows.Forms.Form" enthält, ist erforderlich. Fügen Sie dem Projekt einen Verweis hinzu. Was muss ich bei dem fehler tun
    @ErfinderDesRades Jou

    janengel schrieb:

    Ich möchte das, sobald man einen button drückt,
    .....
    und mit einem 2. Button soll der Prozess gestoppt werden.
    Willst Du gleichzeitig auf 2 Button drücken?
    Beschreib Deinen Problem / Aufgabenstellung / Plan, ohne mögliche Lösungen / Un-Lösungen zu implizieren. Da hilft es sich leichter.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok hab was geändert
    ich möchte das bis numeric gleich label radiobutton1 aktiv ist und sobald numeric gleich label radiobutton zwei
    und das ganze wenn ich button 1 drücke

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

    janengel schrieb:

    und das ganze
    So was:

    VB.NET-Quellcode

    1. If BEDINGUNG Then
    2. RadioButton1.Checked = True
    3. Else
    4. RadioButton2.Checked = True
    5. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!