index — ti25-glauchau-code @ master

Meine Lösungen (oder auch nicht) für die Programmieraufgaben in der TI25 an der Staatlichen Studienakademie Glauchau

oop/2026-04-29/morsecode/readme.md (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
# Morse Decoder – Einführung und Nutzung

##  Einführung: Morsecode

Der Morsecode ist ein Verfahren zur Übertragung von Text durch kurze und lange Signale:

- Punkt (.) → kurzes Signal  
- Strich (-) → langes Signal  

Jeder Buchstabe wird durch eine Kombination dieser Signale dargestellt. Beispiele:

- A → .-  
- B → -...  
- SOS → ... --- ...  

Die Bedeutung entsteht nicht nur durch die Signale selbst, sondern auch durch Pausen:

- kurze Pause → Trennung innerhalb eines Buchstabens  
- mittlere Pause → neuer Buchstabe  
- lange Pause → neues Wort  

***

##  Funktionsweise des Codes

Dieses Projekt implementiert einen **Morse-Decoder**, der zeitbasierte Signale interpretiert. Er funktioniert auf Basis dieses Zustandsautomaten:

![morsedecode state machine (stm)](morsecode_stm.png) 

###  MORSE-Dictionary

Das Dictionary `MORSE` übersetzt Morsezeichen in Buchstaben:

```python
'.-' → 'A'
'-...' → 'B'
```

Wenn ein unbekannter Code vorkommt, wird ein `?` ausgegeben.

***

###  Zeitbasierte Erkennung

Der Decoder arbeitet mit einer **Zeiteinheit (`unit`)**, z. B.:

```python
unit = 0.1 Sekunden
```

Damit gelten:

- Punkt: < 2 × unit  
- Strich: ≥ 2 × unit  
- Buchstabenpause: ≥ 3 × unit  
- Wortpause: ≥ 7 × unit  

***

###  Klasse `MorseDecoder`

#### Konstruktor

```python
MorseDecoder(unit=0.1)
```

Speichert:

- aktuelle Morse-Sequenz (`self.code`)
- Startzeit eines Signals
- Startzeit einer Pause

***

#### `signal_on()`

Wird aufgerufen, wenn ein Signal beginnt (Taste gedrückt):

- Misst die vorherige Pause
- Entscheidet:
  - neue Buchstaben?
  - neues Wort?
- Gibt ggf. fertige Buchstaben zurück

***

#### `signal_off()`

Wird aufgerufen, wenn das Signal endet (Taste losgelassen):

- Misst die Dauer des Signals
- Entscheidet:
  - Punkt (.)
  - Strich (-)
- Hängt das Ergebnis an `self.code` an

***

#### `flush()`

- Wandelt den aktuellen Morsecode in einen Buchstaben um
- Nutzt das Dictionary
- Gibt den Buchstaben direkt aus
- Setzt den Code zurück

***

##  Beispielablauf

1. Taste drücken → `signal_on()`
2. Taste loslassen → `signal_off()`
3. Pause → entscheidet über Buchstaben-/Wortgrenzen
4. Ausgabe erfolgt automatisch

***

##  Arbeiten mit GitLab

###  Git auschecken und konfigurieren

Git clone:
```bash
git clone https://git-stu.ba-glauchau.de/marvinferber/morsecode.git
```

Git Bentzer lokal konfigurieren für Identifikation im Gitlab:
```bash
git config --local user.name "Max Muster"
git config --local user.email "s1234567@edu.dhsn.de"
```

###  Neuen Branch erstellen

```bash
git checkout -b mein-feature
```

Oder moderner:

```bash
git switch -c mein-feature
```

***

###  Änderungen hinzufügen

```bash
git add .
git commit -m "Beschreibung der Änderung"
```

***

###  Branch zu GitLab pushen

```bash
git push -u origin mein-feature
```

Danach kann im GitLab-Webinterface ein **Merge Request** erstellt werden (optional).

***

##  Hinweise

- Es ist darauf zu achten, dass die Zeiteinheit (`unit`) zur Eingabegeschwindigkeit passt  
- Für Hardware-Projekte (z. B. Raspberry Pi) kann `signal_on/off()` an GPIO-Events gebunden werden  
- Erweiterbar für Zahlen und Sonderzeichen  

***


Viel Spaß beim Experimentieren mit Morsecode