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

Thema: Umlaute für LCD

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    39
    Beiträge
    38

    Umlaute für LCD

    Anzeige

    E-Bike
    Abend zusammen,

    ich würde gerne auf meinem KS0066-LCD Umlaute ausgeben. Die in der internen Zeichentabelle des LCD abgelegten Zeichen ä, ö, ü lassen sich problemlos anzeigen, indem ich die Codes 238, 239 und 245 übertrage.

    Nun will ich, dass die Umlaute automatisch korrekt angezeigt werden, wenn ich einen String ausgebe, der ein oder mehrere dieser Umlaute enthält.
    Bevor ich also ein Char-Array an das Display übermittle, möchte ich jedes Zeichen auf einen Umlaut prüfen und ggf. durch den entsprechenden internen LCD-Code ersetzen.

    Eigentlich müsste es doch folgendermaßen funktionieren:

    Code:
    Sub LCD_WriteText_I2C(ByRef cText As Char)
        Dim i As Integer
    
        i = 0
    
    	'Übergebenes Char-Array ausgeben.
        Do While cText(i) > 0
        	If cText(i) = "ä" Then
            	LCD_Write_I2C(1, 238)
            Else
    			LCD_Write_I2C(1, cText(i))
            End If
    
            i = i + 1
        End While
    End Sub
    Der Compiler schmeißt aber immer diesen Fehler:

    Semantik Fehler - Operator '=' für Typ overflow nicht erlaubt

    Was mache ich falsch?


    Danke Euch.


    Gruß

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    In C würde es heißen : If cText(i) == "ä" Then
    = ist ein Zuweisungsoperator
    == ein Vergleichsoperator
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    42
    Beiträge
    2.009
    In Bascom dürfte das mit 1 = schon stimmen.
    Kannst du mal das komplette Programm zeigen, so dass man's auch mal kompilieren kann?
    #ifndef MfG
    #define MfG

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    cText mal als Char, mal als Array ... char? noch nie gesehn bei bascom, man lernt nie aus.
    ByRef?

    cText(i) = "ä" ... Bytewert oder was?
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    39
    Beiträge
    38
    Oh, Entschuldigung, sind hier in C-Basic, das Programm läuft auf ner C-Control PRO per I2C über einen PCF8574.

    Hier etwas mehr Code:

    Code:
    Sub main()
    	I2C_Init(I2C_100kHz)
        LCD_Init_I2C(abInitOptions)
        LCD_Clear_I2C()
    
        LCD_Locate_I2C(2, 1)
        LCD_WriteText_I2C("Hälli hällo!")
    
    End Sub
    
    Sub LCD_WriteText_I2C(ByRef cText As Char)
        Dim i As Integer
    
        i = 0
    
    	'Übergebenes Char-Array ausgeben.
        Do While cText(i) > 0
        	If cText(i) = "ä" Then
            	LCD_Write_I2C(1, 238)
            Else
    			LCD_Write_I2C(1, cText(i))
            End If
    
            i = i + 1
        End While
    End Sub
    
    Sub LCD_Write_I2C(bIsData As Byte, bData As Byte)
    	Dim bDataOut As Byte
    
    	'RS high setzen falls Datenausgabe gewünscht (bRS = 1).
        If bIsData > 0 Then : bIsData = LCD_RS : End If
    
        '*** High Nibble ***
        bDataOut = bIsData Or (bData >> 4)
        I2C_Out(bDataOut, 1)
    
        '*** Low Nibble ***
        bDataOut = bIsData Or (bData And 0x0F)
        I2C_Out(bDataOut, 1)
    End Sub
    
    Sub I2C_Out(bData As Byte, bPulseE As Byte)
        If bPulseE > 0 Then
        	I2C_Start()
            I2C_Write(I2C_PCF_ADDR)
            I2C_Write(bData Or LCD_EN)
            I2C_Stop()
    
            AbsDelay(1)
        End If
    
        I2C_Start()
        I2C_Write(I2C_PCF_ADDR)
        I2C_Write(bData)
        I2C_Stop()
    End Sub

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    15.11.2010
    Ort
    Oberbayern
    Alter
    39
    Beiträge
    38
    Oha, hier ist wohl durch die Forumsumstellung ein Beitrag verloren gegangen.
    Also mit Verwendung des ASCII-Codes statt "ä" funktioniert es. Hätte ich auch drauf kommen können und ist ja nun eigentlich auch logisch.

    Danke an den Verfasser des abhanden gekommenen Beitrags!

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765
    Stimmt, mein Beitrag scheint weg zu sein. Auch vermisse ich einen anderen Beitrag von mir in einem anderen Thread...
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Berechtigungen

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

LiFePO4 Speicher Test