- Labornetzteil AliExpress         
Ergebnis 1 bis 9 von 9

Thema: Zeichenverzögerung RS232

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    05.11.2006
    Ort
    Werne
    Alter
    36
    Beiträge
    18

    Zeichenverzögerung RS232

    Anzeige

    Powerstation Test
    Hi Leute,
    bin noch ein totaler Bascom anfänger und habe eine frage an euch. Wie kann ich, wenn ich einen String mit dem Print befehl sende, eine Zeichenverzögerung von 1ms einstellen? Habe mir vor kurzem bei ELV das On-Screen-Modul gekauft. Dieses funktioniert, wenn ich es am Pc anschließe und im Hyperterminal die Zeichenverzögerung auf 1ms einstelle, so wie es in der anleitung steht, auch perfekt. Allerdings möchte ich das Modul in meinem Auto nutzen und per µc steuern. Dieses klappt leider nicht. Ich denke das es an der Zeichenverzögerung liegt, da sporadisch mal irgendwelche Zeichen angezeigt werden. Oder hängt das vielleicht mit der Flusssteuerung zusammen, die man im Hyperterminal auch ausstellen muss?
    Hier mal mein Code, mit dem es am Rechner perfekt läuft.

    Code:
    'AVR ATMega32
    $regfile = "m32def.dat"
    
    'Quarz-frequenz  16.00000 MHz
    $crystal = 16000000
    
    'Baud-Rate Serieller Port
    $baud = 9600
    
    Config Porta = Output
    Config Portd = Output
    
    Set Porta.1
    
    
    Print "Hallo du da! wie geht es dir? Mir geht es gut. Hoffe dir auch. Bis dann."
    
    End
    Set Porta.1 ist nur dafür da, um eine led zu steuern.

    Hoffe ihr könnt mir helfen. Bekomme das problem nicht in den griff und versuche es schon seit 2 Wochen.


    MfG Tretsch

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Blöde Sache. Schau mal in Help
    $SERIALOUTPUT
    Da müßtest du eine Wait-Schleife dazubauen .
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    Eins von beiden muß gehen.A oder B

    Code:
    Dim Buchstabe As Byte
    Dim B As String * 1
    Dim Position As Byte
    Dim S As String * 50
    
    S = " Hello World  "
    
    For Position = 1 To Len(s)                'A
      B = Mid(s , Position , 1)
      Buchstabe = Asc(b)
      Print Chr(buchstabe)
      Waitms 1
    Next Position
    
    
    For Position = 1 To Len(s)              'B
      B = Mid(s , Position , 1)
      Print B
      Waitms 1
    Next Position
    Zwar nicht getestet .... aber ...

    Gento

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    05.11.2006
    Ort
    Werne
    Alter
    36
    Beiträge
    18
    Hab jetzt mal beide Versionen von Gento ausprobiert. Aber alles was angezeigt wird ist sind irgendwelche symbole. Habs gerade nochmal am Rechner gehängt und wenn ich die zeichenverzögerung auf 1ms setze und die flusssteuerung auf "kein" dann funktioniert es prima.
    Wofür ist eigentlich die Flusssteuerung. Kann es was damit zu tun haben?

    Tretsch

  5. #5

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    14.09.2005
    Alter
    68
    Beiträge
    77
    Die Flusssteuerung ist dazu da wie der Name schon sagt um den Datenfluß zusteuern. Es gibt zwei Möglichkeiten, oder besser drei. Hardware, Software oder keine.

    Das heißt mit der Flusssteuerung sagt das eine Gerät dem andren ob es bereit ist Daten zu empfangen oder nicht. Aber darüber findest du genug im Internet unter RS232.

    Ich glaube aber dass dein Display die Flusssteuerung nicht unterstützt, darum die 1ms Wartezeit zwischen jedem Zeichen.

    Als erstes würde ich mal die Geschwindigkeit runter setzen also baud = 300. Natürlich im Display und im Controller.

    Dann erst mal zum Beispiel bei einem Tastendruck ein Zeichen senden, oder in einer Schleife mit Verzögerung immer ein Zeichen senden.

    Beispiel:
    For i = 1 to 100
    Print "a"
    Wait 1
    Next i

    Man muß das Problem eingrenzen. Wenn du so jede Sekunde ein "a" auf dem Display siechst, dann weis du das die Hardware und alles in Ordnung ist. Dann erst versuchst du ein Satz zusenden.


    mfg
    Guy

  7. #7
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    *grmpf*
    Männer, wenn ihr zeichenweise senden wollt, müßt ihr auch zeichenweise senden.
    Das sind z.B DREI Zeichen
    Print "a"
    nämlich "a" + <CR> + <LF>
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    14.09.2005
    Alter
    68
    Beiträge
    77
    Spiel bei ihm ja keine Rolle, weil die restlichen Zeichen ja einfach verloren gehen.

    oder eben so
    Print "a";

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    05.11.2006
    Ort
    Werne
    Alter
    36
    Beiträge
    18
    danke Leute. Mit
    Print "A";
    hat es funktioniert.
    Dieses klappt zwar nicht mit texten, habe mir dafür aber 'ne function gebaut die das zerlegen für mich übernimmt.

    Tretsch

Berechtigungen

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

12V Akku bauen