Französisch auf einem HD44780-LCD?

OP #6376579
Lesenswert?

Es gibt eine Steuerung mit einem klassischen 2x40 Text-LCD. Zwischen 
Deutsch und Englisch kann man schon umschalten, jetzt soll das Teil 
französische Worte anzeigen. Am liebsten wäre mir, im Quelltext alles 
korrekt zu schreiben, also z.B. "Français". Der Ausgabetreiber würde zur 
Laufzeit die "Verzierungen" entfernen, also ASCII ausgeben, also würde 
"Francais" angezeigt werden.

Die entscheidende Frage: Wie verwirrt/beleidigt/angepi$$t wäre ein 
Franzose? Oder muss man das so ähnlich wie im Deutschen konvertieren, 
also "ä" zu "ae"? Das wäre im Quelltext natürlich noch praktischer, aber 
für mich noch unübersichtlicher. Wie war das in der Schule? Nimm Latein, 
Französisch braucht kein Mensch?!
#6376658
Lesenswert?

Bauform B. schrieb:
> Wie verwirrt/beleidigt/angepi$$t wäre ein
> Franzose? Oder muss man das so ähnlich wie im Deutschen konvertieren,
> also "ä" zu "ae"?

Eine Konvertierung wie bei den Umlauten gibt's im Französischen nicht. 
Akzente auf Großbuchstaben werden heute gerne weggelassen, auch wenn die 
académie française da anderer Meinung ist.
Am wichtigsten sind éèà und ù, den weggelassenen circonflexe (Das 
"Dach") würde man Dir verzeichen; falls doch mehr als 4 Sonderzeichen 
möglich sind, setz' das Dach auf aeuo. Bevor Du das i mit circonflexe 
dazunimmst, lieber die cedille unterm kleinen c berücksichtigen.
Persönliche Seite #6376664
Lesenswert?

Walter T. schrieb:
> Einen Keymap-Decoder brauchst Du eh. Ich würde UTF-8 nahelegen.

In C++ kann man das auch den Compiler erledigen lassen, z.B. so:
1
#include <cstddef>
2
#include <array>
3
#include <utility>
4
#include <iostream>
5
#include <iomanip>
6

7
constexpr std::uint8_t hd44780Char (char32_t c) {
8
  return
9
    (c == U'ä') ? 0xE1 :
10
    (c == U'ö') ? 0xEF :
11
    (c == U'ü') ? 0xF5 :
12
    (c == U'ç') ? 0x63 :
13
    (c == U'ß') ? 0xE2 :
14
    static_cast<std::uint8_t> (c & 0xFF);
15
      
16
}
17

18
template <std::size_t N, std::size_t... I>
19
constexpr std::array<std::uint8_t, N> hd44780Str2 (const char32_t (&str) [N], std::index_sequence<I...>) {
20
  return {{ hd44780Char (str[I]) ... }};
21
}
22

23
template <std::size_t N>
24
constexpr std::array<std::uint8_t, N> hd44780Str (const char32_t (&str) [N]) {
25
  return hd44780Str2 (str, std::make_index_sequence<N> {});
26
}
27

28
int main () {
29
  constexpr auto str1 = hd44780Str(U"ae=ä, oe=ö, ue=ü, ss=ß, cc=ç");
30
  for (std::uint8_t c : str1) {
31
    std::cout << '[' << c << "] => " << "0x" << std::hex << std::setw(2) << std::setfill ('0') << static_cast<int> (c) << ", ";
32
  }
33
  std::cout << std::endl;
34
}

Dadurch kann man im Quelltext die Strings "ganz normal" speichern - 
typischerweise UTF-8, aber prinzipiell egal, solange Editor und Compiler 
auf den selben Zeichensatz eingestellt sind; bei GCC ist es m.w. immer 
UTF-8. Mithilfe der Übersetzungs-Logik in "hd44780Char" können dann 
beliebige Unicode-Zeichen (im Code als UTF-32-Char-Literal definiert) in 
einzelne Ausgabe-Zeichen umgewandelt werden.

Laut http://www.netzmafia.de/skripten/hardware/Arduino/LCD/index.html 
enthalten die handelsüblichen Displays Umlaute, welche ich oben 
beispielhaft entsprechend übersetzt habe; ein ç gibt es leider nicht, 
weshalb ich das in ein normales 'c' übersetzt habe. Wenn du aber ein 
eigenes ç-Zeichen im Controller hinterlegst, kannst du das mit dieser 
Übersetzung ebenfalls abhandeln, sofern die Position bekannt ist.

Der Vorteil ist dass die Übersetzung zur Laufzeit entfällt und die Daten 
effizient direkt aus dem Flash an das LCD geschickt werden können; der 
Nachteil ist, dass diese Strings dann nicht mehr anderweitig zu 
gebrauchen sind (z.B. per UART) weil sie im LCD-spezifischen Zeichensatz 
sind.
Persönliche Seite #6376666
Lesenswert?

Die Krueckenloesung:
Wenn Du es schaffst zumindest die accents-aigu und -grave auf den 
Kleinbuchstaben anzuzeigen, dann kommt ein Franzose zumindest weitgehend 
mit der Lesbarkeit klar. Aber doll ist das nicht, wenn auf ein paar 
Buchstaben Akzente drauf sind, auf anderen nicht.

Was aber zu bedenken ist: Die Franzosen sind sehr stolz auf ihre 
Sprache. Das wird ihnen also mindestens mal einen unfreundlichen 
Kommentar abringen und es wird dem Produkt auch den Touch einer 
minderwertigen Qualitaet verpassen. Weiss nicht, ob euer 
Produktmanagement das so will.

Ich habe viele Jahre in einem Unterhaltungselektronikkonzern gearbeitet 
und habe viel mit dem vielsprachigem Benutzerinterface zu tun gehabt. 
Unser franzoesischer Field-Support-Mensch, den wir stets mit unserem 
fast-fertigem Produkt fuer Fieldtests besucht hatten, hat zu 90% Fehler 
in der Bildschirmdarstellung bemaengelt.

Am besten waere also wohl ein Redesign der Hardware mit einem 
Controller, der das beherrscht. Evtl gleich ein grafisches Display 
verwenden.
Das geht aber sicherlich aus ganz vielen Gruenden nicht. Wie immer.

PS: ich schreibe im uebrigen gerade auf einer US-Tastatur. Daher meine 
Umlaute mit ae ue oe... Leider gibt es so eine annerkannte Umschreibung 
im franzoesischen nicht.
Gast #6376694
Lesenswert?

Grundsätzlich würde ich überdenken, ob sich diakritische Zeichen 
überhaupt lohnen. Schon die deutschen Umlaute sehen grausig aus. Auf 
Großbuchstaben geht's gar nicht. 5x7 (8) Pixel sind einfach zu wenig für 
solche Spielereien. Und für die französischen "Schnörkel" brauchst du 
mindesten 2 Pixel in der Höhe oben und fürs Cedille nochmal 2-3 nach 
unten.

Ich würde einfach alle Diakritika weglassen. Das kann jeder lesen und 
ein Franzose wird auch ohne wissen, wie es ausgesprochen wird (und nur 
dafür sind sie da, nicht um Wörter zu differenzieren).
Gast #6376706
Lesenswert?

Bauform B. schrieb:
> Der Ausgabetreiber würde zur
> Laufzeit die "Verzierungen" entfernen, also ASCII ausgeben, also würde
> "Francais" angezeigt werden.
>
> Die entscheidende Frage: Wie verwirrt/beleidigt/angepi$$t wäre ein
> Franzose?

Sehr. So, als ob ein Deutscher keine Umlautpunkchen sieht.

Und es ist unnötig: Der HD44780 kann bis 8 benutzerdenierte Zeichen.
Lege also die spezifischen französischen Zeichen in einem Zeichensatz in 
dein Programm, und kopiere die benötigten in den Fontspeicher des 
HD44780, und ersetze die Zeichen im Text gegen die POsitionscodes im 
Font-Speicher.

Bauform B. schrieb:
> Leider nur theoretisch, die Tabelle für das CGRAM steckt in einem
> anderen uC, und an den komme ich ganz schlecht dran. Außerdem, reichen 6
> bis 8 Zeichen? Die Franzosen kennen bestimmt viel mehr.

Aber die werden kaum in dem 80 Zeichen Text den du anzeigen musst 
benötigt.
Du musst nur die benötigten Zeichen rüberkopieren.
OP #6376764
Lesenswert?

Andi M. schrieb:
> Was aber zu bedenken ist: Die Franzosen sind sehr stolz auf ihre
> Sprache. Das wird ihnen also mindestens mal einen unfreundlichen
> Kommentar abringen

MaWin schrieb:
>> Die entscheidende Frage: Wie verwirrt/beleidigt/angepi$$t wäre ein
>> Franzose?
>
> Sehr. So, als ob ein Deutscher keine Umlautpunkchen sieht.

Ich hab's geahnt. Das sind die entscheidenden Antworten, vielen Dank. 
Also muss Deutsch und Englisch erstmal reichen.

Andi M. schrieb:
> Am besten waere also wohl ein Redesign der Hardware mit einem
> Controller, der das beherrscht. Evtl gleich ein grafisches Display
> verwenden.
> Das geht aber sicherlich aus ganz vielen Gruenden nicht. Wie immer.

Du sagst es...
(Firma: www.harerod.de) Persönliche Seite #6377446
Lesenswert?

Florian schrieb:
> Grundsätzlich würde ich überdenken, ob sich diakritische Zeichen
> überhaupt lohnen.
...
> Ich würde einfach alle Diakritika weglassen. Das kann jeder lesen und
> ein Franzose wird auch ohne wissen, wie es ausgesprochen wird (und nur
> dafür sind sie da, nicht um Wörter zu differenzieren).

Das ist so nicht richtig - die Strichle sind phonemisch.
https://de.wikipedia.org/wiki/Phonem

. . .

Ein technischer Ansatz, wenn dynamisches Umprogrammieren des CGRAM nicht 
ausreicht: Schnelles Umschalten zwischen zwei Zeichen an derselben 
Position. Die Trägheit des LCD sorgt für, wenn auch schwache, 
Sichtbarkeit.
So ein Ansatz hat aber 199x schon zu Stirnrunzeln geführt.
Gast #6377859
Lesenswert?

Och, manchmal kann eine fehlerhafte Groß-/Kleinschreibung zumindest für 
Belustigung sorgen. Z.B. im Arbeitszeugnis einer 
Krankenschwester/-pflegerin.

"Sie konnte gut Blasen und Glieder versorgen."
vs.
"Sie konnte gut blasen und Glieder versorgen."

undweg
Gast #6377874
Lesenswert?

Falk B. schrieb:

> Es gibt HD44780 mit französischen Sonderzeichen. Dann noch den Quelltext
> mit UTF-8 kodieren, Zwischentreiber, fertig.

Das Problem dürfte sein, dass heutzutage längst nicht mehr jedes 
alphanumerische LC-Display von Optrex stammt und den originalen Hitachi 
HD44780 verwendet. Den gibt es mit verschiedenen Zeichensätzen und 
Optrex hat die entsprechenden Bestellcodes.

Heute kommen diese Displays als Standardbauteile aus China, dass es da 
einen Originalhersteller gibt weiss kein Mensch mehr, und die Elektronik 
auf der Platine kann jede Woche unterschiedlich sein. Welcher Chip 
gerade unter dem schwarzen Klecks auf der Platine sitzt weiss der 
chinesische Händler selber nicht. Daher ist eine Lösung, die mit jedem 
HD44780-kompatiblen Display spielt, sicherlich zielführender.
Persönliche Seite #6377901
Lesenswert?

Florian schrieb:
> ein Franzose wird auch ohne wissen, wie es ausgesprochen wird (und nur
> dafür sind sie da, nicht um Wörter zu differenzieren).

die bekanntesten Gegenbeispiele:

ou = oder
où = wo

la = die
là = dort

mûr = reif
mur = Mauer

sûr = sicher
sur = auf

tâche = Aufgabe
tache = Fleck

Aussprache jeweils gleich

Interresant ware folgende Sicherheitsabfrage:

Display: Êtes-vous sûr? (Sind Sie sicher?)
Kunde: Oui (Ja)

Display: Etes-vous sur? (Sind sie drauf?)
Kunde: Sur quoi??? (Wo drauf???)
#6379274
Lesenswert?

Bauform B. schrieb:
> Es gibt eine Steuerung mit einem klassischen 2x40 Text-LCD. Zwischen
> Deutsch und Englisch kann man schon umschalten,

Mooooommmmeeeent ...

Wenn du auf Deutsch umschalten kannst, wenn du dabei die deutschen 
Umlaute anzeigen kannst ohne dass die als eigene Glyphen geladen werden, 
dann hast du doch bereits das ROM mit den benötigten Sonderzeichen für 
Französisch. Die deutschen und die französischen Zeichen sind nämlich im 
selben ROM.

Soul E. schrieb:
> Falk B. schrieb:
>
>> Es gibt HD44780 mit französischen Sonderzeichen. Dann noch den Quelltext
>> mit UTF-8 kodieren, Zwischentreiber, fertig.
>
> Das Problem dürfte sein, dass heutzutage längst nicht mehr jedes
> alphanumerische LC-Display von Optrex stammt

Optrex gibt es nicht mehr. Aus denen wurde vor acht Jahren Kyocera 
Display. Die wiederum wurden ein paar Jahre später in den Konzern als 
Abteilung eingemeindet und sind nicht mehr eigenständig. Die Abteilung 
wiederum wurde zum Teil mit dem Automotiv-Bereich verquirlt.

> und den originalen Hitachi
> HD44780 verwendet.

Hitachi stellt den HD44780 doch gar nicht mehr her. Vielleicht bekommst 
du von irgendwo NOS, recycelte HD44780 oder Fälschungen, aber frisch aus 
der Hitachi-Fabrik gibt's keine.

Es gibt nur noch mehr oder weniger kompatible Nachbauten.

> Den gibt es mit verschiedenen Zeichensätzen und
> Optrex hat die entsprechenden Bestellcodes.

Es gibt auch kaum noch LCD-Text Displays von Kyocera. Das letzte das ich 
gesehen habe hatte einen Novatek NT3881D Controller (HD44780 
kompatibel). Den NT3881D gibt es mit alternativem ROM. Ob man 
Kyocera-Displays mit dem alternativen ROM bestellen kann ist eine andere 
Frage.

> Heute kommen diese Displays als Standardbauteile aus China, dass es da
> einen Originalhersteller gibt weiss kein Mensch mehr,

Der Originalhersteller stellt das Original nicht mehr her.

> Den Originalhersteller und die Elektronik
> auf der Platine kann jede Woche unterschiedlich sein.

Du brauchst halt einen zuverlässigen Display-Lieferanten, der dir den 
Chip und Zeichensatz garantiert. Dafür zahlst du dann extra.

> Welcher Chip
> gerade unter dem schwarzen Klecks auf der Platine sitzt weiss der
> chinesische Händler selber nicht.

Deshalb kannst du so etwas nicht bei einem beliebigen Händler bestellen 
sondern musst dir, abhängig von der Menge, einen zuverlässigen 
Hersteller oder Distributor suchen.

> Daher ist eine Lösung, die mit jedem
> HD44780-kompatiblen Display spielt, sicherlich zielführender.

Na ja. Vielleicht hat er ja schon den passenden Zeichensatz. Wenn nicht, 
dann auf ein Displas mit einem Controller der den entsprechenden 
Zeichensatz hat wechseln. Eine Teilmenge der Glyphen nachbauen? Lieber 
nicht.
(Firma: www.harerod.de) Persönliche Seite #6379310
Lesenswert?

Mann Hannes, hiermit befördere ich Dich zum Oberdinosaurier! 
kompliment
Ich selbst und viele andere, sind wohl davon ausgegangen, dass der TO 
das Kamasutra(*) gelesen hat, bevor er seine Frage hier platzierte.

Du hast natürlich recht, wie ein Blick ins Datenblatt des HD44780 zeigt:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

Im europäischen A02-ROM sind die Katakana durch andere Sonderzeichen 
ersetzt. Hat man Umlaute, hat man auch die französischen Sonderzeichen.

Mann, mann, vor zwanzig Jahren hätte ich das noch auswendig gewusst.


(*) the fucking manual, as in "RTFM"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren