-         

Ergebnis 1 bis 5 von 5

Thema: Mal wieder RS232: Pogrammierung

  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253

    Mal wieder RS232: Pogrammierung

    Anzeige

    Hi!

    Ich hab nen einfaches Prog in PicBasicPro geschrieben:

    Code:
    Define OSC 20
    B0 var Byte
    
    pause 1000
    Lcdout $fe, 1
    lcdout "Disp-Test"
    
    loop:
    serin2 PORTB.1,84,[B0]
    goto display
    
    goto loop
     
    display:
    
    Lcdout $fe, 1
    lcdout B0
    pause 500 
    goto loop
    nicht über den programmierstil beschweren, es ist 100x umgeschrieben worden!

    Das Prog stellt einfach das, was seriell reinkommt aufm Display dar.

    Also wie ihr seht, benutze ich ne Byte-Variable, um die Eingabe zu speichern und darzustellen. Bei einem Character funktioniert das auch wunderbar, aber wenn ich ihm jetzt nen Wort gebe, dann stellt er nur den ersten Buchstaben dar. Liegt das daran, dass die Variable zu klein ist, oder woran könnte es sonst noch liegen. Am Terminalprog sicher nicht, weil ich da einige durchprobiert hab.

    Edit:

    Na an der Variable wirds nicht liegen. Ich hab mal testweise ne WORD-Variable genommen. Gleiches Ergebnis. Ausserdem kann ich in ner Byte-Variable Quellcodeintern auch Wörter speichern..

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    34
    Beiträge
    506
    Also, wenn ich das richtig verstanden habe, dann wird immer nur ein Byte von der Seriellen gelesen und das ans Display geschickt...
    Als Puffer wird der interne Speicher des Displays verwendet - soweit OK.

    Nur sehe ich nicht, wie du von der ersten Stelle auf dem Display zur nächsten kommst... Ich weiss nicht genau, was lcdout $fe, 1 bedeutet, aber ich denke mal, dass es die Initialisierung von dem Display ist...
    und wenn der 1er logisch belegt ist, dann wäre das die erste Stelle.

    Da deine Byte-Variable nur ein Byte speichern kann, muss jedes Zeichen einzeln zum Display geschickt werden. Nur wird auch jedes Zeichen einzeln von der seriellen ausgelesen? Da musst du dir einfach mal deine Routinen anschauen, dürfte ja im Handbuch stehen...

    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    lcdout $fe,1 löscht das display. damit die zeichen sich nicht überschreiben. ich habe mittlerweile festgestellt (grundsätztlich benutz ich jetzt ne WORD-Variable), dass es daran liegt, dass das der SERIN2-Befehl nicht wartet, bis der stding eingelesen ist, sondern sofort abgeschlossen ist, wenn irgendein zeichen empfangen wird. im manal steht sehr viel zu speziellen WAIT-Argumenten im Befehl SERIN2. Wenn ich z.b.
    Code:
    serin2 PORTB.1,84,[WAIT("*"),B0,WAIT("%")]
    schreibe, gibt er erst was aus, wenn ich im terminal-prog "*hallo%" schreibe. dummerweise allerdings auch nur 1 character. in diesem fall "h". ich experimentere noch ein wenig damit rum, bis ich irgendwann frustriert die programmiersprache wechsele!

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    15.10.2004
    Ort
    Nordschwarzwald
    Alter
    34
    Beiträge
    506
    hehe... ich kann dir dazu C empfehlen...
    von CCS gibts da nen sehr günstigen Compiler (ca. 125 Euro).

    Was du machen kannst, ist, dass du einfach jedes Zeichen einzeln auf das Display schreibst und das immer um ein Zeichen versetzt.
    Dann kommt dir das grade gelegen, dass das serin dir immer nur ein Zeichen gibt, d.h. immer wenn das serin ein Zeichen gefangen hat, schickst du das direkt ans Display.

    MfG
    Stefan

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    das is doch schnickschnack! das display ist für mich eigentlich nur mittel zum zweck. ich will irgendwann mit commandos aufm pc bestimmte aktionen auf dem µc abrufen, und das mit ner sinnvollen zeichenfolge und nicht nur mit einem character. deshalb will ich mir jetzt erstmal anzeigen lassen, was der µc so empfängt. damit ich irgendwann gucken kann, was ich für signale senden kann und welche nicht. naja, und irgendwie muss das ja möglich sein!

Berechtigungen

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