Moin moin, ich benutze für ein aktuelles Projekt recht große Lookuptables (ca. 20 verschiedene Wertetabellen die vom Eprom ins SRAM geladen werden und während des Programmablaufes über die UART verändert werden sollen (direkt im SRAM) und bei Bedarf ins EPROM zur Dauerhaften speicherung abgelegt werden sollen). Problem ist, wie kann ich möglichst elegant unter Bascom oder ASM direkt von der UART die Speicherbereiche ohne dutzende "if" befehle ablegen? Hat da jemand eine Idee bzw. Codegeschnippsel? Gruss Boese
so läuft es bisweilen:
1 | Do |
2 | Name = Inkey() |
3 | If Name = 0 Then |
4 | Exit Do |
5 | Else |
6 | Sinput = Sinput + Chr(name) |
7 | If Name = 13 Then Gosub Programmierung |
8 | End If |
9 | Loop |
dann springt das ganze zu "Programmierung" dort werden die gesendeten Zeichenketten mit dem "mid-Befehl" zerlegt und mit if-abfragen in die richtige Variable geschrieben. Ich halte das für recht aufwendigt und sehr langsam gelöst :((( Ich hoffe jemand hat eine elegantere Idee... Gruss
Anstelle der etwas aufwändigen String-Funktionen ist es manchmal günstiger, die Zeichen des Strings direkt anzusprechen, ähnlich einem Pointer in C. Dazu musst du ein Array von Bytes deklarieren, was genau auf dem String liegt. Das geht so: Dim My_string As String * 20 Dim My_str_array As Byte At My_string Overlay Wenn du den String mit Zeichen gefüllt hast, kannst du 6. Zeichen einfach über My_str_array(6) bekommen und auch ändern. Aufpassen musst dann allerdings auf das abschließende \0-Byte, welches das Ende des Strings identifiziert. Wenn du nun weißt, dass du das 17. Zeichen über den UART einliest, kannst du einfach My_str_array(17)=inkey() und dann My_str_array(18)=0 setzen, damit dein String wieder ordentlich beendet ist. Dies ist nur dann nötig, wenn du auch mit den String-Funktionen auf My_string zugreifen willst. Die Zugriffsmethoden kannst du beliebig mischen. Gruß Rolf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.