Kann ich per SPI überhaupt einen String senden??
Hallo coders!
Kann mir jemand erklären wie man mit SPI Klartext übertragen kann?
Im Darenblatt meines Displays steht:
1. ASCII-Modus
- Das Escape-Zeichen entspricht dem Zeichen '#' (hex: $23, dez: 35).
- Die Befehlsbuchstaben folgen direkt im Anschluss an das '#' Zeichen.
- Die Parameter werden im Klartext (mehrere ASCII Ziffern) mit einem nachfolgenden Trennzeichen
(z.B. das Komma ',') gesendet.
- Zeichenketten (Texte) werden direkt ohne Anführungsstrichen geschrieben und mit CR (hex: $0D),
oder LF (hex: $0A) abgeschlossen.
2. Binär-Modus
- Das Escape-Zeichen entspricht dem Zeichen ESC (hex: $1B, dez: 27).
- Die Befehlsbuchstaben werden direkt gesendet.
- Die Koodinaten x, y und alle anderen Parameter werden als 8-Bit Binärwert (1 Byte) gesendet.
- Zeichenketten (Texte) werden mit CR (hex: $0D), LF (hex: $0A) oder NUL (hex: $00)
abgeschlossen.
Im Binär-Modus dürfen keine Trennzeichen z.B. Leerzeichen oder Kommas verwendet werden. Die
Befehle benötigen auch kein Abschlussbyte wie z.B Carrige Return (außer Zeichenkette: $00).
Mit ASCII wäre es einfacher da ich einfach nur einen String übertragen müsste. Momentan erstelle ich ein Byte-Array mit den HEX-Werten.
Das Escape Zeichen entspricht "#" -----Wieso in ASCII???
Wäre nett wenn jemand hilft.
MFG
Bertl
Kann ich per SPI überhaupt einen String senden??
Also, die SPI selbst kann da nix dazu, die sendet, was immer Du willst.
Diese Modi und sachen wie "#" sind vom Display offenbar so festgelegt, kann man schwer diskutieren.
Um zu raten, müßte man mehr wissen von dem Display-Protokoll, das scheint mir ja kein Standard zu sein.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Für das Protokoll hab ich hier ein Beispiel aus dem Datenblatt.
BEISPIEL
Das nachfolgende Beispiel zeigt ein vollständiges Protokollpaket zum Senden von Befehlen
Display löschen und Gerade von 0,0 nach 239,127 zeichnen
ASCII: <DC1> len ESC D L ESC G D 0 0 239 127 bcc >
HEX : $11 $0A $1B $44 $4C $1B $47 $44 $00 $00 $EF $7F $DA
< <ACK>
$06
Hier der Link zum Datenblatt:
http://www.lcd-module.de/deu/pdf/grafik/edip240-7.pdf
Wie kann man die Übertragung am besten lösen??? ohne 50 zeiliges Array in Binär
Also, wichtig wär mal, daß der SPI richtig eingestellt ist. Bascom macht das bei CONFIG SPI,......
und dann SPIOUT array(1), anzahlbytes
mehr isses nicht.
Das array(1-x) mußt du vorher aufbauen (mit BCC)
DIM arr(24) as byte
arr(1) = &H11
arr(2) = &H0A
arr(3) = &H1B
.....etc.
SPIOUT arr(1), 13
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Genau so hab ich es bisher gemacht, ist nur sehr aufwendig wenn ich jeden Buchstaben in der ASCII Tabelle nachschauen muss.
Wenn ich per RS232 sende, dann könnte ich einfach einen String übertragen
mit
print "#dl#zc,128,64,TEST,bcc" ------->In Klartext
Ich wollte per SPI auch irgendwie Klartext übertragen. Wäre einfacher.
Hallo,Dann bastel dir doch eine Funktion,Ich wollte per SPI auch irgendwie Klartext übertragen. Wäre einfacher.
die die einzelnen Zeichen eines Strings in ein Array überträgt,
und das dann per SPI absendet.
Dann hast du doch, was du willst.
Befehle die du dazu brauchen könntest wären:
For...Next, len(), mid(), asc()
Gruß Jan
Danke für den Denkanstoß!!!!!!
Ich kannte den Befehl "ASC" noch nicht. So wirds sicher gehen.
Es wäre nur schön gewesen, wenn Bascom dafür High Level befehle hätte.
MFG
Bertl
Eigentlich meinte ich fertige Prozeduren oder Methoden mit der ich so einen String besser verarbeiten kann.
Bei reinem Text ist es sehr einfach, jedoch muss ich Beistriche und Zahlen ebenfalls herausfiltern und dann wird es schon sehr kompliziert.
Es werden ja immer andere Folgen verwendet. Nur die ersten beiden Bytes sind immer gleich.
Lesezeichen