- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Mehrere Zeichen aus dem seriellen Buffer lesen.

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.03.2004
    Beiträge
    178
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Wenn Du das obige Programm nutzt, hast Du doch z.B. "res" oder "bot" oder was auch immer in Variable C !?!?!

    Also nochmal ganz langsam:
    Jedes auf der RS232 empfangene Zeichen wird in einem Buffer (max. Länge z.B. Size=20) gespeichert.
    Wenn es mehr Zeichen gibt, werden die Ersten wieder überschrieben, vorausgesetzt sie sind nicht mit inkey() abgeholt.
    Mit inkey() holst Du Dir nacheinander den ASCII-Code des jeweils ersten Zeichens (das verschindet dann aus dem Buffer).
    Falls inkey() = 0 ist, gibt es keine weiteren Zeichen.
    Natürlich mußt Du die einzelnen Zeichen in einer Schleife abholen.
    Entweder in einer Endlosbearbeitung (do loop) oder in einer Unterfunktion solange wie Inkey() > 0 ist (Dabei auf ausreichende Buffergröße achten, damit nichts verloren geht).

    Das kann doch nicht so schwer sein.
    Tut mir leid, aber einfacher kann ich es nicht erklären.

  2. #12
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    HI Freiheitspirat!

    Sorry, ich war vorher etwas gereizt...
    Ich hoffe, du verzeihst mir das...

    Wäre es möglich, dass CR bzw. LF die entscheidende IF-Abfrage stören und C dann ungleich "res" ist?

    Ich were das jetzt noch mal langsam und überlegt testen...

    Liebe Grüße und DANKE! Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  3. #13
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    Hi Freiheitspirat!!

    also ich habe da mal ein bisschen programmiert...

    Code:
    $baud = 9600
    $crystal = 8000000
    
    'Config Serialin = Buffered , Size = 5
    
    Dim A As Byte
    Dim B As String * 5
    Dim C As String * 20
    
    Dim N As Byte
    
    Begin:
    
    N = 0
    
    
    Do
       A = Inkey()
    
       If A = 0 Then
       Else
          C = C + Chr(a)
          A = 0
          N = N + 1
       End If
    
    Loop Until N = 3
    
    Portd.2 = 0
    Waitms 250
    
    'If C = "" Then
    
    Do
       Portd.2 = 1
       Waitms 250
       Portd.2 = 0
       Waitms 250
    Loop
    
    'End If
    
    Goto Begin
    End
    Das Einlesen ist mit Schleife wie ihr das so geschrieben habt.
    Es hat plötzlich funktioniert, als ich config serialin weggelassen hab(deshalb auch nur als comment)!!! Das ist wohl der Fehler gewesen.
    Der 4433 verträgt wohl kein config serialin.

    Aber es gibt da noch ein kleines Problem...

    Die Schleife mit Inkey() soll 3 Zeichen abholen.
    Diese werden mit print "r" ; "e" ; "s" bzw.

    Print "r"
    Waitms 100
    Print "e"
    Waitms 100
    Print "s"

    vom Master aus gesendet.
    Wenn Zählvariable N = 3 ist (3 Zeichen sollten im String stehen)
    Sollte die Einleseschleife abgebraochen werden.
    Wenn ich dem Master sage, er soll nur 1 Zeichen senden("r"), wird die Schleife aber trozdem unterbrochen. und die LED (portd.2) fängt an zu blinken.

    Nun. Was läuft hier nicht so ganz richtig?
    Wir sind kurz vor dem Ziel!!!

    Liebe Grüße und DANKE schon jetzt!

    Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.03.2004
    Beiträge
    178
    Nun. Was läuft hier nicht so ganz richtig?
    Wir sind kurz vor dem Ziel!!!
    Die Antwort haben wir bereits diskutiert.
    Siehe nochmal unter der Beschreibung vom CR / LF

    Print "r" = 114 13 10 = 3 Zeichen = BlinkBlinkBlink

  5. #15
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    Hi Freiheitspirat!

    Also sollte ich mit printbin arbeiten??
    Ich teste mal...

    Liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

  6. #16
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.06.2004
    Ort
    Bad Schussenried in Oberschwaben
    Alter
    35
    Beiträge
    1.461
    Hi

    ES FUNKTIONIERT!!!!!

    DANKE an Freiheitspirat, der unter aufwendung unglaublicher Geduld
    die Sache mit CR/LF in meinen Dickschädel geklopft hat!!

    DANKESCHÖN!!

    Liebe Grüße, Tobi
    http://www.tobias-schlegel.de
    "An AVR can solve (almost) every problem" - ts

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress