- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: umgang mit Strings (einzelne Felder usw.)

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    01.05.2009
    Beiträge
    71

    umgang mit Strings (einzelne Felder usw.)

    Anzeige

    Praxistest und DIY Projekte
    Hallo,

    mein Roboter fährt soweit schon ganz gut, allerdings möchte ich ihm (per RS232) mitteilen wie schnell er fahren soll. Dazu ist das rn-controll mit einem EeePC verbunden während der Fahrt.

    Wie kann ich aus einem String, der mehrere Stellen hat nur einzlne chars per if abfragen und nur bestimmte Zeichen auslesen bzw. kopieren?

    z.B.:
    Code:
    Sub Serial0charmatch()
    
       Local Incoming_data As String * 30
       'Daten vom Buffer auslesen
       Input Incoming_data Noecho
    
       If Incoming_data [...und hier nur Feld 1] = "x" Then 
        [...und jetzt die restlichen 1-3 Felder mit Zahlen in eine Variable schreiben]
    In dem Beispielcode dachte ich daran die Werte für das PWM Signal zu schicken und um es von Steuerbefehlen unterscheiden zu können eben zuvor mit einem Zeichen wie 'x' zu versehen.

    Steuercodes werden wie folgt abgefangen:
    Code:
      
     If Incoming_data = "v" Then
          Call Mvor
       Elseif Incoming_data = "z" Then
          Call Mzur
       Elseif Incoming_data = "l" Then
          Call Mlin
       Elseif Incoming_data = "r" Then
          Call Mrec
       Elseif Incoming_data = "o" Then
          Pwm1a = 0
          Pwm1b = 0
       End If
    unter c++ geht sowas mit [pos] oder MFC String.Right(n) usw. aber wie in Bascom? Hat jemand nen Tip?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Wenn ich dich richtig verstanden habe, willst du einen Teilstring der Länge 1 aus einem anderen String haben.
    Dazu gibt es die MID-Funktion bzw. den MID-Befehl. Schau mal in die Hilfe.
    Um ein einzelnes Zeichen eines Strings in einem IF zu überprüfen, benutze ich allerdings häufig eine andere Methode, da das Rausschneiden recht aufwändig ist.
    Du legst ein Byte-Array über den String. Im Byte-Array kannst du nun direkt ein bestimmtes Element ansprechen. Schau mal in der Hilde unter DIM und dort unter Overlay.

    Gruß

    Rolf

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    01.05.2009
    Beiträge
    71
    Ja genau, hast Du gerad zufällig ein Beispielcode zur Hand? Zum Beispiel aus dem String "1234" nur "234" zu lesen?

    Dank Dir jedenfalls schonmal!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Die Bascom-Hilfe ist dein Freund.

    out_str = Mid("1234",2,3) oder
    out_str = Mid("1234",2)
    out_str = Right("1234",3)

    Gruß

    Rolf

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    01.05.2009
    Beiträge
    71
    perfekt, klappt prima bis auf das kleine Problem, dass meine Motoren erst bei einem viel zu hohen Startwert anfangen sich zu bewegen und schlichtweg nicht langsam fahren können *grrr*

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Vielleicht ist nur das Anfahrmoment zu hoch.
    Das könntest du umgehen, indem du mal kurz einen höheren Wert gibst und dann runter auf deinen eigentlichen Wert gehst.

    Gruß

    Rolf

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    01.05.2009
    Beiträge
    71
    jep, genau sowas hatte ich vor zu testen - heute nach dem Baden...

    Dank Dir!

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress