vergleichen

  • VB6

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von DHB.

    Ich will ja nicht lästern, aber lese Dir mal Deine Frage durch. Wenn Du erraten kannst, was Du meinst, dann schreibe es bitte so auf, dass wir Sterbliche es verstehen können.

    Satzzeichen helfen dabei.

    Nicht böse gemeint, aber es fällt mir bei Deinem Schreibstil schwer, Dich zu verstehen.

    Gruß


    Stephan
    jo stimmt
    also ich bekomme von einem mikrocontroller ein zeichen an den comport gesendet, und nun möchte ich bei einem A z.B. 5+5 rechnen wenn ein B kommt z.B. 6+6 rechnen und deswegen möchte ich vergleichen welcher buchstabe da anliegt um die aktion zu starten. Oder gibt es einen besseren weg das zuverwirklichen???
    gruß stefan
    Hey udo f.
    mir ist nicht ganz klar, was Du mit dem Wort 'vergleichen' meinst, aber vielleicht ist dies die Antwort auf Deine Frage:

    Visual Basic-Quellcode

    1. Function Aktion (Wert As String)
    2. Dim x as Integer
    3. Static LetzterWert as String
    4. ' --- Vielleicht meinst Du das ja mit 'vergleichen'
    5. If Wert = LetzterWert then Exit Function
    6. ' ---------------------------------------------
    7. Select Case Wert
    8. Case "A": x = 5 + 5
    9. Case "B": x = 6 + 6
    10. Case Else: x = 0
    11. End Select
    12. LetzterWert = Wert
    13. Aktion = x
    14. End Function
    mfG DHB

    Ich meine:
    :P Es sollten nur ernstzunehmende Beiträge eingestellt werden!
    :( Beiträge, die nur deren Anzahl in die Höhe treiben sollen, stehlen Lesern deren Zeit und schenken nur Frust.
    ;) Wenn ein Autor sein Thema für erledigt hält, sollte er dies kurz als letzten Eintrag vermerken.
    8) Leser wüssten dann, dass hier weitere Beiträge nicht mehr sinnvoll sind.
    bekomme am commport zeichen gesendet

    Visual Basic-Quellcode

    1. Private Sub Command11_Click()
    2. Text5.Text = ""
    3. ' Beliebige Ausgabe, um das DMM zum Senden der Daten zu veranlassen
    4. Do
    5. DoEvents
    6. Text5.Text = Text5.Text & MSComm1.Input
    7. Loop Until InStr(Text5.Text, Chr(13))

    und nun möchte ich wenn ein bestimmter Buchstaben z.B. A kommt diese aktion durchführen

    Visual Basic-Quellcode

    1. tmrAnzeige1.Enabled = False
    2. lstZwischenzeit.AddItem "Runde" & lstZwischenzeit.ListCount + 1 & " --> " & lblZeit1.Caption - Text1.Text
    3. lstZwischenzeit.ListIndex = lstZwischenzeit.ListCount - 1 'Hält immer den neusten Wert im List-Feld
    4. Z = CInt(Val(lblZeit1.Caption - Text1.Text))
    5. S = CInt(Val(Text2.Text))
    6. D = S / Z
    7. D = D / 1000 * 3600
    8. Text1 = lblZeit1
    9. Text3.Text = CStr(D)
    10. List1.AddItem "Runde" & List1.ListCount + 1 & " --> " & Text3.Text
    11. List1.ListIndex = List1.ListCount - 1 'Hält immer den neusten Wert im List-Feld
    12. optMinuten.Enabled = False
    13. optSekunden.Enabled = False
    14. Ticks = GetTickCount
    15. tmrAnzeige1.Enabled = True
    so das tut es jetzt schon habe das jetzt so gemacht

    Visual Basic-Quellcode

    1. Do
    2. DoEvents
    3. Text5.Text = Text5.Text & MSComm1.Input
    4. If MSComm1.Input = "A" Then Call Aktion
    5. Loop Until InStr(Text5.Text, Chr(13))

    wie kann ich denn das teichen im wieder löschen nachdem ich die aktion durchgeführt wurde weil jetzt würde im text mehrmall das A kommen möchte aber das das immer überschrieben wird wenn ein neues kommt

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „udo f.“ ()

    Hey udo f.

    also MSComm1.Input liest und löscht einen Datenstrom am Empfangspuffer; deshalb musst Du die Daten mit MSComm1.Input beim ersten Lesen zwischenspeichern und erst dann verarbeiten - so wie ich es Dir gepostet habe.

    So wie Du es machst, liest und löschst Du in Zeile 3 die angekommenen Daten aus dem Puffer und verbindest sie mit den Daten in Text5.Text.
    Danach liest und löschst Du in Zeile 4 wieder die erneut angekommenen Daten und vergleichst diese neuen Daten mit "A". Da die neuen Daten nicht zwingend die vorherigen sein müssen (aber können), erhältst Du mal ja und mal nicht das gewünschte Ergebnis.

    Darüber hinaus solltest Du, bevor Du die Daten aus dem Puffer liest, mit MSComm1.InBufferCount die Anzahl der angekommenen Daten und mit MSComm1.InputLen die Länge des auszulesenden Datenblocks bestimmen, sonst könnten noch einige weitere ungewollte Überraschungen auftreten.

    mfg DHB