-         

Ergebnis 1 bis 6 von 6

Thema: Strings zerhacken + LCD-Frage

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

    Strings zerhacken + LCD-Frage

    Anzeige

    TAG!

    Was ich vorhabe ist: Ich will nen kleines Prog schreiben, das quasi als "Demo" für mein neues LCD-Modul nach eigenem Standart dienen soll. Es geht mir darum meinem Board mit Atmega8 per RS232 Signale zu geben, die auf dem LCD angezeigt werden. Es gibt 2 Arten von Signalen: Steuerbefehle und Text.
    Steuerbefehle z.b. den Cursor ein. Text wird auf dem LCD angezeigt. Bisher hab ichs so gemacht:

    Code:
    Schleife:
       Input Eingabe , Zweigabe Noecho
       If Eingabe = "%CBlink" Then Goto Cursormode
       If Eingabe = "%CNoBlink" Then Goto Cursormode
       If Eingabe = "%COn" Then Goto Cursormode
       If Eingabe = "%COff" Then Goto Cursormode
       Home Upper
       Lcd Eingabe
       Home Lower
       Lcd Zweigabe
    Goto Schleife
    
    Cursormode:
       If Eingabe = "%CBlink" Then Cursor Blink
       If Eingabe = "%CNoBlink" Then Cursor Noblink
       If Eingabe = "%COn" Then Cursor On
       If Eingabe = "%COff" Then Cursor Off
       If Eingabe = "%CLS" Then Cls
    Goto Schleife
    Das sind jetzt nur die Scheifen um die's geht. Die Steuerbefehle haben nen % davor. Ich mach nen Input mit 2 Variablen. (Ich denke mal man macht das im Terminal so dass man eine Zeile eingibt, dann "Enter" drückt und den nächsten eingibt). Dann schau ich ob es sich um nen Steuerbefehl oder Text handelt. Wenn es Steuerbefehl ist springt er in die Schleife Cursormode. Da wird der entsprechende Befehl ausgeführt und dann gehts wieder zur Eingabe. Wenns kein Steuerbefehl ist, dann wird die erste Variable in der ersten Reihe meines 16*2-LCDs angezeigt und die zweite in der zweiten. Ich denke mal der Spass müsste so funktionieren. Ich hab bisher nur den Code geschrieben und bin ein paar 100 km von meinem Board entfernt. Was ich jetzt gerne tun würde (Ja, jetzt kommt endlich die Frage! ) ist: Nicht in der ersten Schleife JEDEN Steuerbefehl einzeln raussuchen sondern sofort beim "%" springen. Wie kann ich den ersten Char eines Strings raussuchen? Oder einen beliebigen String mit der Länge n | n > 0 aus einem String herausziehen? Geht das überhaupt?

    Zweite Frage: Ich habe schon des öfteren gehört, dass wenn man das LCD an den Prog-Port (PortB mein ich) hängt man die "Daten" die beim Brennen übertragen werden sieht. Wie muss dafür das Pinning sein? Und funzt das LCD dann auch vom Atmega aus (Wenn das Prog auf dem Atmega läuft) ohne Einschränkungen, wenn der Progger noch dranhängt? Oder gibts da Probleme? Ich hab momentan das LCD an PortC hängen, aber da blockier ich die Analogeingänge. Auf PortB könnte ich wenns da keine Probleme gibt am ehesten "Verzichten"

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.09.2004
    Ort
    Düsseldorf
    Beiträge
    3.948
    Die zweite Frage kann ich dir sofort beantworten.

    Das LCD kann ruhig mit am SPI hängen solange die Datenrichtungen zueinander passen.
    Da die meisten LCD's nur als Empfänger betrieben werden kann hier ausser Datenmüll in der Anzeige nichts weiter passieren.




    Zu deiner ersten Frage:
    Ich Erahne da das Problem aber veratanden hab ich die Problemstellung ncht wirklich.

    Was möchtest du nun ?

    Eine Möglichkeit die Befehle von den Nutzdaten zu unterscheiden oder einfach ein universelleres Protokoll ?
    Gruß
    Ratber

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.02.2006
    Ort
    München
    Beiträge
    111

    Re: Strings zerhacken + LCD-Frage

    Zitat Zitat von Goblin
    Wie kann ich den ersten Char eines Strings raussuchen? Oder einen beliebigen String mit der Länge n | n > 0 aus einem String herausziehen? Geht das überhaupt?
    Ja, mit dem MID - Befehl.
    Substring = Mid(String , A , B)
    Sting ist der String, A die Position und B die Anzahl der zu lesenden Zeichen.

    Am Besten mal in die Online-Hilfe von Bascom schauen da wird es erklärt.

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    danke! das ist genau das was ich wollte.

    @ratber: ok ok, war umständlich gestellt die frage. hab da leider nen hang zu.

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    problem mit meinem code:

    Code:
    $regfile = "m8def.dat"
    $crystal = 1000000
    $baud = 4800
    Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 1
    
    Dim Eingabe As String * 16
    Dim Zweigabe As String * 16
    
    Print "PC -> LCD V 0.2a welcomes you"
    Cls                                                         
    Lcd "PC -> LCD V 0.2a"                                  
    Waitms 100
    Lowerline                                                 
    Lcd "welcomes you"
    
    Schleife:
       Input "Enter Text " , Eingabe , Zweigabe
       Print
       Print Eingabe
       Waitms 100
       Print
       Print Zweigabe
       Cls
       Waitms 100
       Lcd Eingabe
       Waitms 100
       Lowerline
       Lcd Eingabe
    Goto Schleife

    was er tut ist folgendes: Zeigt auf PC und LCD den Willkommens-Text an. OK! Dann zeigt er am PC "Enter Text" an. Dann gebe ich ein: test <enter> test. Output ist folgender:
    Code:
     PC -> LCD V 0.2a welcomes you
    Enter Text testtest
    das erste "test" schreibt er direkt wenn ichs eingegeben hat, das zweite dann wenn ich das zweite eingegeben hab. Sollte der nicht erst warten bis er 2 Strings empfangen hat? Wie dem auch sei, danach zeigt er weder was auf dem LCD an noch beginnt die Schleife von vorn...

    edit: ach, und nochwas: sollte er nicht zwischen den "test"s nen Zeilenumbruch machen???

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    09.05.2004
    Ort
    Bielefeld / Paderborn
    Beiträge
    1.253
    sorry leute, lag an meinem terminalprogramm. das hat mist gebaut. ich habs mit dem terminal-emulator von Bascom probiert und das ging gut. funzt also alles perfekt.

Berechtigungen

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