Laden...

Wie kann ich einen Text in Brailleschrift darstellen?

Erstellt von triceps vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.802 Views
T
triceps Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren
Wie kann ich einen Text in Brailleschrift darstellen?

Hallo allerseits,
ich versuche einen String in Brailleschrift umzuwandeln.
Erst in Basisschrift, dann in Vollschrift und schließlich in Kurzschrift.
Nun bin ich in einer Ausbildung zum Softwareentwickler und was C# angeht um ehrlich zu sein noch ziemlich unerfahren.
Rein theoretisch geht es um das Umwandeln eines Strings in eine Punktefolge.

Sprich:
Ich hab ein Wort zum Beispiel: "mehr" : . . .
. x x
. x x

Also würde ich es so lösen, dass man hierfür ein bool[] her nimmt:
false,false,false, false,true,true, false,true,true;
bzw.
0,0,0, 0,1,1, 0,1,1;

Wenn jemand dazu mehr Informationen hat und so lieb wäre es zu teilen, würde ich mich darüber sehr freuen.

Beispielsweise habe ich im Bereich der Übersetzung in Braille bereits etwas gegoogelt, konnte aber keine vorgefertigten Funktionen oder Klassen finden.

Daher wäre ich sehr dankbar wenn mir jemand ein paar Tipps geben könnte ob mein Gedankengang was die Übersetzung angeht korrekt ist oder überdacht werden muss. Außerdem will ich im Anschluss meine Ausgabe selbstverständlich grafisch darstellen. Sofern mein Projekt gut voranschreitet auch über ein Interface bereitstellen.
Ich freue mich über jeglichen Input!
LG Triceps

B
22 Beiträge seit 2018
vor 3 Jahren

Hallo triceps,

hast du konkrete Probleme beim Lösen der Aufgabe oder möchtest du das wir dir die Arbeit abnehmen und sagen wie du es Programmieren kannst? Der Bereich Braille-Schrift ist jetzt auch für die meisten Programmierer in diesem Forum nichts womit Sie ihr täglich Geld verdienen.

Ob dein Gedankengang korrekt ist oder überdacht werden muss kannst du dir am besten selbst beantworten. Was ist die Anforderung an dich? Führt dein Gedankengang zur Erfüllung dieser Anforderung? Wenn ja dann ist dein Gedankengang korrekt.

Solltest du Probleme bei der Implementierung deines Gedankenganges haben kannst du gerne dein Problem schildern und dir wird sicherlich geholfen 🙂

Grüße

Brymax

C
2.121 Beiträge seit 2010
vor 3 Jahren

Speichertechnisch ist es wahrscheinlich völlig egal wie du das machst, so viel Speicher dürfte vorhanden sein. Aber zum eingeben und auslesen ist es lästig.

Willst du wirklich bei der Definition der Braille Zeichen immer true oder false schreiben, oder lieber 0 und 1?
Zum Auslesen reicht dir dann auch ein einziger int Wert pro Braille Zeichen, statt dich durch ein Array von bools zu hangeln.

T
2.219 Beiträge seit 2008
vor 3 Jahren

@chilic
Warum nicht Byte?
Spart pro Zeichen auch gleich 3 Bytes.
Bei langen Texten macht sich das recht schnell bemerkbar und bezahlt hier auf sparsame Typen zu setzen.
Und vergleiche auf 0/1 kann man dann auch direkt machen.

Nachtrag:
Hab mir kurz mal den Wiki Artikel zu der Brailleschrift angeschaut.
Da du eigentlich nur 6 Punkte als Zeichen darstellen musst, kannst du im einfachsten Fall das ganze mit einem Byte pro Zeichen kodieren.

Da ein Zeichen der Brailleschrift eine fixe Nummierung hast, kannst du auch einfach die ersten 6 Bits in einem Byte entsprechend auf 1/0 setzen um das entsprechende Zeichen darzustellen.
Die Prüfungen auf aktive Bits sowie das setzen der einzelnen Bits kannst du dann mit entsprechenden Bit Operationen machen.

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

D
152 Beiträge seit 2013
vor 3 Jahren

Ich kenne mich mit der Brailleschrift nicht aus, es gibt aber wohl entsprechende Unicodenummern für die einzelnen Zeichen.

Also warum nicht die verwenden?

T
triceps Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren

Hallo,
habe jetzt selbst etwas rumprobiert und hatte gehofft es gibt vielleicht bereits eine Klasse mit der ich das lösen könnte. Mein Problem ist, dass im Rahmen meines Projekts auch Hardware ansteuern soll.
Das würde nach momentanem Stand über einen Arduino ablaufen. Ich brauche also am besten eine Klasse/Datenbank, welche die Wörter und die jeweilige Übersetzung bereits beinhaltet. Selber schreiben würde ich auch in Betracht ziehen. Allerdings bin ich was das angeht noch unerfahren und erst im 3. Semester meines Studiums zum Softwareentwickler und weiss nicht ob das Projekt vielleicht doch den Corona-Rahmen sprengt

Unicode klingt gut. In Java gibt es eine Klasse, in der man über das Singleton Pattern alles in eine Sprache übersetzen kann. Das wäre dann bei Braille: Voll, Basis und Kurzschrift.

Meine Frage ist eigentlich nur ob es sowas auch in C# gibt. Damit programmiere ich momentan einfach lieber.

Danke schonmal für die Anteilnahme und die Kommentare. Scheinbar haben sich damit noch nicht so viele Leute beschäftigt.

Wie würdet Ihr das mit dem Unicode umsetzen, gibt es vielleicht Beispiele die ihr mir verlinken könntet?

Wo kann ich bereits vorgeschriebene Klassen einsehen?
Gibt es da eine Möglichkeit? Ich dachte bereits an Git o.ä.....

Ich bin mit meiner Lösung oder mit meinem Lösungsansatz noch nicht ganz zufrieden und suche neue Ansätze.

LG Triceps

T
triceps Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren

Ja über 1und 0 hatte ich auch gedacht. Wie bereits im vorherigem Kommentar angesprochen muss ich das Projekt über einen Arduino laufen lassen. Mein Hauptproblem momentan ist eher die Sprache Braille an sich. Ich habe testweise Funktionen geschrieben, welche den Übersetzungsvorgang simulieren. Die funktionieren einwandfrei. Trotzdem benötigte ich Zugang zu einer Quelle, die die Sprache beinhaltet und auf die ich zugreifen kann. Eine Datenbank,CSV-Datei. (Datenbank wäre mir schon lieber) 😃
Über jede Idee bzw. jeden Ansatz freue ich mich sehr!
Wie schon gesagt, mit eigenen Projekten bin ich noch sehr unerfahren.
LG Triceps

T
triceps Themenstarter:in
6 Beiträge seit 2020
vor 3 Jahren

Danke!
Tolle Idee!
Ich werde mir den Unicode etwas näher ansehen. Scheint eine valide Möglichkeit darzustellen!

C
2.121 Beiträge seit 2010
vor 3 Jahren

Mein Hauptproblem momentan ist eher die Sprache Braille an sich.

So wie ich das sehe ist Braille keine Sprache, sondern eine einfache Umsetzung von Buchstaben in Punktmuster. Du durchläufst also den Text und schreibst für jedes A ein Punktmuster irgendwo hin, für jedes B ein anderes und so weiter. Komplexer machen es nur die Kombinationen aus mehreren Buchstaben.
Täusche ich mich?

Für die Umsetzungstabelle würde ich keine Datenbank verwenden - viel zu viel Aufwand und bringt dir keine Vorteile.
Letztendlich können es maximal 64 Zeichen sein, die du codieren musst. Das kann man zur Not auch direkt im Code halte, ohne es extra aus einer Tabelle lesen zu müssen.

hatte gehofft es gibt vielleicht bereits eine Klasse mit der ich das lösen könnte

Irgendwann kommt man an den Punkt, an dem man erkennt dass Programmieren nicht nur aus Copy und Paste besteht 😉
Du könntest immerhin den Java Code in C# umschreiben.

Mit Unicode könntest du dein Ergebnis auf dem Bildschirm anzeigen, das ist zum debuggen sehr hilfreich. Für die Ausgabe der Zeichen in tatsächlichen Punkten bringt dir das nichts.
Dafür würde ich einen Zahlentyp nehmen und die einzelnen Punkte in binärer Notation angeben. Die beginnt mit 0b, also in der Art 0b10010100.
Dazu musst du festlegen in welcher Reihenfolge die einzelnen Bits die Braille Punkte repräsentieren sollen.

S
248 Beiträge seit 2008
vor 3 Jahren

Komplexer machen es nur die Kombinationen aus mehreren Buchstaben.
Täusche ich mich?

Wenn ich beim Überfliegen der Texte richtig verstanden habe, können/müssten Buchstabenkombinationen wie 'sch' oder 'ch' und Zahlen, da A-J auch 1-0 sind, separat behandelt werden. Also wird einfaches Ersetzen eines chars mit einem anderen nicht klappen.

Mit diesen zwei Spezialfällen sollte trotzdem eine recht übersichtliche Lösung zu finden sein:

  • Kommt eine Zahl => 'Zahl folgt' + alle Zeichen der Zahl (hier ist die Frage wie z.B. 1,23 umgesetzt werden - ich vermute dass kein zweites 'Zahl folgt' verwendet wird)
  • Kommen Zeichen, die in einer Kombination zusammengefasst sind => Kombinations-char
  • Ansonsten einzelnes Zeichen mappen

Grüße