- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 10

Thema: SPI Verständnisfrage

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464

    SPI Verständnisfrage

    Anzeige

    Praxistest und DIY Projekte
    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

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    Kann ich per SPI überhaupt einen String senden??

  3. #3
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    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.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    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

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    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.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    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.

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    Ich wollte per SPI auch irgendwie Klartext übertragen. Wäre einfacher.
    Dann bastel dir doch eine Funktion,
    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

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    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

  9. #9
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.12.2004
    Ort
    LEV
    Beiträge
    505
    Hallo,
    Es wäre nur schön gewesen, wenn Bascom dafür High Level befehle hätte.
    Hat es doch.
    Bascom besteht NUR aus High-Level Befehlen.
    Probiers mal mit Assembler, dann merkst du den Unterschied.

    Gruß Jan

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    28.02.2005
    Ort
    Salzburg
    Alter
    44
    Beiträge
    464
    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.

Berechtigungen

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

Labornetzteil AliExpress