- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 18

Thema: Inhalt in einem String löschen

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Nen guten,

    @ for_ro:

    vielen Dank für Deine ausgiebige Antwort! So wie Du das beschrieben hast, wurde es mir über die Zeit dann auch klar und von Dir bestätigt!
    Ich überlege mir gerade, ob es nicht besser wäre, wenn ich nach der Auswertung des Buffers nicht den ganzen Buffer mit einer 0 überschreibe, abhängig von der Anzahl empfangener Zeichen:

    rs232_dummy = Memcopy(mem_dummy , _RS232INBUF1 , _RS_BUFCOUNTR1 , 2)

    was das aber an Rechenzeit bedarf weiß ich nicht....

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    Sooo....
    Ich habe jetzt die obrige Form zur Löschung des _RS232INBUF1 genutzt. Da es ja einen Bytezähler für die eintreffen Byte gibt, kann dieser schön zum genauen Löschen des Empfangspuffer genutzt werden:
    rs232_dummy = eine Bytevariable zur Zwischenspeicherung, die nicht weiter genutzt wird
    mem_dummy = eine Bytevariable die ich missbrauche, in der steht nur eine Null drin, da ja der Buffer gelöscht werden soll
    _RS232INBUF1 = hier wird jetzt die Null rein geschrieben, da es aber ein Bytearray ist muss dies für jede Stelle erhöht werden => dies besagt die 2 am Ende
    _RS_BUFCOUNTR1 = der Counter sagt an wie oft _RS232INBUF1 mit einer Null beschrieben werden soll.

    Zur Funktion von Memcopy nochmals die Hilfe lesen, dort steht alles drin

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo mat-sche,
    ich halte das Löschen des gesamten Bereichs zwar für überflüssig, aber wenn es jetzt funktioniert, ist es ja gut.
    Sieht ein wenig nach Holzhammermethode aus. Dir geht dadurch der ganze Vorteil des Overlays verloren.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.01.2006
    Beiträge
    4.555
    Zitat Zitat von for_ro Beitrag anzeigen
    Hallo mat-sche,
    ich halte das Löschen des gesamten Bereichs zwar für überflüssig, aber wenn es jetzt funktioniert, ist es ja gut.
    Sieht ein wenig nach Holzhammermethode aus. Dir geht dadurch der ganze Vorteil des Overlays verloren.
    Ich bin mir jetzt nicht wirklich sicher, aber anstatt x="" ...x = " " (könnte ?) auch klappen. Langsam komme ich aus dem Training.

    Gruß Richard

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    25.03.2006
    Ort
    Hinsdorf
    Alter
    50
    Beiträge
    381
    @for_ro

    "Dir geht dadurch der ganze Vorteil des Overlays verloren."

    Na eigentlich nicht!?! Ich lege ja mir einen String über den Bytebuffer weil ich dann damit weiter als String arbeiten kann und ich nicht extra eine for/next Schleife bauen müsste, um die Daten aus dem Buffer in den String zu bekommen. Und ich benötige nur für den Zeitraum bis zum neuen Empfang neuer Daten die Daten aus dem Bytebuffer...

    Oder sehe ich da was falsch?
    Nun ja, es ist die Hammermethode, aber so bin ich mir sicher, dass alle Zeichen im _RS232INBUF1 auf 0 liegen. Es koste Zeit die Bytes zu löschen.... ich werde nochmal darüber nachdenken

    Aber Dank dennoch an alle und noch einen schönen Sonntag!

    Grüße MAT

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Wenn du dir sicher sein kannst, dass während der String-Verarbeitung kein neues Zeichen eintrifft, wird das so schon funktionieren.
    Allerdings dauert ein memcopy länger als ein einfaches str1=str2, keine Ahnung warum. Zumindestens im Sim ist das so.
    Wie häufig kommen denn die Übertragungen und sind sie in regelmäßigen Abständen? Welche Baudrate benutzt du dabei?

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Das löschen kannst du dir sparen
    aaaaaaaaaaaaaaaaaber:
    Der Bascom _inuff ist ein Ringbuffer, d.h. wenn daten rein kommen, stehen die meist NICHT am Buffer anfang.
    Über den direkt einen string zu "overlayen" funzt nicht,.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Zitat Zitat von PicNick Beitrag anzeigen
    Über den direkt einen string zu "overlayen" funzt nicht,.
    Klar funktioniert das! Man muss nur den Buffer nach der Verarbeitung initialisieren (Clear SerialIn), so wie er das auch gemacht hat. Dann wird der Pointer und alles andere wieder auf Anfang gesetzt.

Ähnliche Themen

  1. Compact C: String löschen
    Von Fabian E. im Forum Robby RP6
    Antworten: 3
    Letzter Beitrag: 28.05.2010, 06:39
  2. Datenlgger 1000 SD - Anführungszeichen im String löschen?
    Von TobiasBlome im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 11.04.2010, 18:56
  3. Aus einem String Daten ausmaskieren
    Von Olli2301 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 13.12.2006, 22:53
  4. String löschen
    Von Murus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 2
    Letzter Beitrag: 15.01.2006, 17:19
  5. wahllos bits aus einem byte löschen
    Von churchi im Forum C - Programmierung (GCC u.a.)
    Antworten: 6
    Letzter Beitrag: 17.10.2004, 13:11

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress